目錄
前言
上篇文章對MediaSoup進行簡單的介紹 【MediaSoup】多人音視頻架構、流媒體的比較、mediasoup介紹 ,本章節主要對MediaSoup的環境進行部署以及demo搭建。
在下一篇文章中將對MediaSoup的源碼進行分析和調試源碼。
服務器環境
Ubuntu14.06 或以上
NodeJs10.0 或以上
npm 6.13.x
NodeJs的安裝
Nodejs的安裝方式一般有 二進制庫安裝和源碼安裝。
Linux(Ubantu,Centos) 後端環境部署,問題解決[不定期更新] 文章裏有部署node,npm的教程
下載Demo源碼
- git clone https://github.com/versatica/mediasoup-demo.git
- cd mediasoup-demo
- git checkout v3
下載完成後,源碼有着以下的目錄結構
app 客戶端代碼
broadcasters 用戶推流的一個模塊,如通過FFmpeg進行一個廣播推流到Mediasoup服務器。
server 服務端代碼,信令服務+媒體服務
配置服務端
安裝server依賴
- cd server
- npm install //過程還有C++的編譯,請耐心等待
- cp config.example.js config.js
安裝客戶端Web依賴
- cd app
- npm install
修改 config.js文件
新版本demo沒有生成了證書,需要自行生成證書並且放置相對應的目錄
...省略
tls :
{
//需要生成一個證書祕鑰,這個用命令自行生成,並放置相對應的目錄
cert : process.env.HTTPS_CERT_FULLCHAIN || `${__dirname}/certs/xxx_server.crt`,
key : process.env.HTTPS_CERT_PRIVKEY || `${__dirname}/certs/xxx_server.key`
}
},
...省略
webRtcTransportOptions :
{
listenIps :
[
{
ip : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',
announcedIp : '192.168.11.18' //修改爲服務端的IP地址,如果是公網則爲外網
IP
}
],
...省略
plainRtpTransportOptions :
{
listenIp :
{
ip : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',
announcedIp : '192.168.11.18'//修改爲服務端的IP地址,如果是公網則爲外網IP
},
maxSctpMessageSize : 262144
}
}
};
配置config.js 配置server目錄下的config.js
server/config.js使用適當的設置編輯您的(偵聽IP /端口,日誌記錄選項,有效的 TLS證書等)。
修改https 塊中的監聽地址:
修改爲自己服務器所在ip和tls證書位置(建議將證書放到server/certs 目錄下):
listenIp :'0.0.0.0',
tls :
{
cert : ${__dirname}/certs/webrtc.xxx.top.pem,
key : ${__dirname}/certs/webrtc.xxx.top.key
}
最後修改webRtcTransport
listenIps:修改爲自己服務器地址所在ip地址。
在在雲主機部署與VPS部署稍有差異,因爲雲主機有內網ip。所以第二部中config.js需要稍作修改。
我們修改config 文件
listenIp 需修改爲雲主機內網ip ,因爲雲主機應該是不知道自己的公網ip的。
下方webRtcTransport塊中listenIps 中內容更改爲
{ ip: ‘內網ip’ , announcedIp:‘公網ip’ }
然後正常使用node server.js 啓動即可
部署及測試
啓動服務器
- cd server
- DEBUG="*mediasoup* *ERROR* *WARN*" INTERACTIVE="true" node server.js
啓動成功之後,接下來啓動客戶端
- cd app
- gulp dist
運行URL https://192.168.11.18:3000/?info=true
注意在瀏覽器執行時會默認創建隨機的房間號
https://192.168.11.18:3000/?info=true&roomId=bfaygdnk
直接訪問地址ip即可 後面url有房間號 ,想加入同一房間填入即可。
最後打開2個瀏覽器窗口,運行結果:
由於電腦沒有攝像頭,使用e2eSoft VCam軟件模擬攝像頭
用手機瀏覽器訪問也是一樣的效果,能夠達到互通。
可能會遇到的問題
1:如果是公網部署,主機帶寬比較低,初次打開比較慢,需耐心等待加載完成,後面緩衝後速度會變化,音視頻延遲不受影響。
2: server代碼 npm install 超時 導致install失敗
- cd node_modules
- rm -rf clang-tools-prebuilt
- rm -rf mediasoup
- npm install