實現思路
- 下載obs軟體,進行視訊的錄製
- 通過node-media-server開啟一個服務,在obs中推流到該伺服器
- 通過flv.js配合html5的video標籤實現node-media-server中視訊源的播放
開始實現
obs的使用
obs的下載請移步官網,有windows, mac, linux 三個平臺的版本可供下載 我這裡使用的是mac版,其他版本的使用應該也差不多
- 首先需要新建一個場景 這裡有很多種場景可以使用,我用顯示捕獲來示範一下吧... 可以對場景進行命名,我直接使用預設的名字,點選確定
再次點選確定,這個時候場景就建立成功了,拖動場景可以將場景進行縮放,縮放到遮住黑色的背景就好了
- 推流 視訊的本質其實是一張張截下來的圖片,我們需要將這一張張圖片放到一個地方,然後前端就可以從這個地方讀取,從而展示出來,因此在這之前我們需要開啟一個服務,作為前端獲取視訊的源地址
node-media-server開啟服務
- 新建一個空白的資料夾,執行
npm init
, 根據提示輸入相關資訊後,下載node-media-server
npm install node-media-server --save
複製程式碼
- 新建一個入口檔案index.js
const NodeMediaServer = require('node-media-server');
const config = {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: true,
ping: 60,
ping_timeout: 30
},
http: {
port: 8000,
allow_origin: '*'
}
};
var nms = new NodeMediaServer(config)
nms.run();
複製程式碼
- 然後在命令列中執行
node index.js
複製程式碼
如果看到下面的提示,表示我們已經成功開啟node-media-server服務了
flv.js
flv.js是來自Bilibli的開源專案。它解析FLV檔案餵給原生HTML5 Video標籤播放音視訊資料,使瀏覽器在不借助Flash的情況下播放FLV成為可能。具體的介紹請自行google哈,繼續剛才的專案
- 新建一個index.html檔案
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>直播</title>
</head>
<body>
<script src="https://cdn.bootcss.com/flv.js/1.4.0/flv.min.js"></script>
<video id="videoElement" width="100%" controls></video>
<script>
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement');
var flvPlayer = flvjs.createPlayer({
type: 'flv',
url: 'http://localhost:8000/live/hello.flv'
});
flvPlayer.attachMediaElement(videoElement);
flvPlayer.load();
flvPlayer.play();
}
</script>
</body>
</html>
複製程式碼
這裡遇到了一個坑,可能是mac的原因,預設視訊是沒有自動播放的,而且一開始video標籤我也沒有加上controls,所以網頁上一直顯示的是一張靜態的圖片,偶然才發現原來是視訊處於暫停狀態 =_=!!
可以進行錄播啦~
- 點選obs中的設定,進入設定頁面,點選流,如果是在本地直播的話,流型別選擇自定義流媒體伺服器,url填寫如圖所示,流名稱填寫index.html設定的名字,本專案是
hello
我們也可以通過bilibili等直播平臺進行播放,這裡就填寫你bilibili上的直播連結和名稱
- 點選obs的開始推流按鈕
這時雙擊在瀏覽器開啟index.html就可以看到直播啦,記得點選視訊下方的開始按鈕~