用SRS快速搭建WebRTC推流和播放

WebRTC目前已經比較成熟了,播放也比較穩(wěn)定,協議也已經成為了RFC,相應的開源項目也比較多。當然我覺得WebRTC還缺一個高性能簡單易用的服務器,之前也分析過現有的服務器,有各種問題,SRS很有機會解決這些問題。

目前SRS對WebRTC的支持進度如下:

  • SRS4.0.14,支持了RTMP推流,WebRTC播放。
  • SRS4.0.76,支持了WebRTC推流,WebRTC播放。
  • SRS4.0.95,支持了WebRTC推流,RTMP播放。

相關Wiki:

Online

在線演示,RTMP推流,HTTP-FLV和WebRTC播放:

Remark: 可能會比較卡,因為服務器支持3個并發(fā)觀看。

Remark: 默認靜音(WebRTC自動播放要求的),可以點右下角小喇叭開啟聲音。

Remark: 由于Flash已經被禁用,RTMP流無法在Chrome播放,請使用VLC播放。

在線演示,WebRTC推流,WebRTC播放:

Remark: 推流時,必須是HTTPS頁面,當然本機localhost沒這個限制。

自己用SRS搭建WebRTC服務器,也非常容易,下面是操作步驟。

Start SRS

注意:必須要將本機的IP傳給Docker,否則會推流和播放失敗。

可以直接傳本機IP,例如:192.168.1.3。如果覺得直接傳IP比較麻煩,可以用腳本獲取IP。

macOS下執(zhí)行命令,直接設置IP:

docker run --rm --env CANDIDATE=192.168.1.3 \
    -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v4.0.76 \
    objs/srs -c conf/rtc.conf

macOS下執(zhí)行命令,用腳本獲取IP:

eip=$(ifconfig en0 inet| grep 'inet '|awk '{print $2}')
if [[ ! -z $eip ]]; then
  docker run --rm --env CANDIDATE=$(ifconfig en0 inet| grep 'inet '|awk '{print $2}') \
      -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp \
      registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v4.0.76 \
      objs/srs -c conf/rtc.conf
fi

CentOS下執(zhí)行命令,用腳本獲取IP:

eip=$(ifconfig eth0|grep 'inet '|awk '{print $2}')
if [[ ! -z $eip ]]; then
  docker run --rm --env CANDIDATE=$(ifconfig eth0|grep 'inet '|awk '{print $2}') \
      -p 1935:1935 -p 8080:8080 -p 1985:1985 -p 8000:8000/udp \
      registry.cn-hangzhou.aliyuncs.com/ossrs/srs:v4.0.76 \
      objs/srs -c conf/rtc.conf
fi

啟動后,可以訪問http://localhost:8080/,確認是否啟動成功。

Note: 最新的開發(fā)版鏡像,可以從tagsimages中看到,例如v4.0.71版本對應也有這個鏡像。

Docker一定要設置對這個IP,否則會出現推流和播放失敗。

Demo

演示,WebRTC推流和播放,鏈接:

演示,RTMP推流,WebRTC播放。首先,用FFMPEG或OBS推送RTMP流到服務器:

ffmpeg -re -i doc/source.200kbps.768x320.flv -c copy \
    -f flv -y rtmp://localhost/live/livestream

Remark: 墻裂建議先用SRS自帶的doc/source.200kbps.768x320.flv這個文件,先用它跑通了再換其他內容源,避免各種問題不好排查。

可播放的流地址:

Remark: 注意請將IP換成你的Host機器的IP,當然也可以是公網IP,只要是能訪問到的IP就可以。

Note: 代碼已經合并到了develop分支,也可以選擇自己編譯和調試。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容