1、參考地址
SRS github地址:https://github.com/ossrs/srs 自帶的信令github地址:https://github.com/ossrs/signaling#usage 中文文檔:https://ossrs.net/lts/zh-cn/docs/v4/doc/introduction
安卓ios客戶端demo:https://github.com/ossrs/flutter_live
2、環境部署
我是在centos上使用的源碼編譯模式,官方還提供了docker模式的,看文檔中有介紹。
2.1 下載源代碼
git clone https://gitee.com/ossrs/srs.git
2.2 下載後手動編譯
cd srs/trunk ./configure make
這裏需要說明一下,在手動編譯過程中,可能會提示報錯,看報錯日誌安裝對應的依賴環境即可。
2.3 修改配置文件,我這裏要測試webrct的功能,就在conf目錄下找到srs.conf,編輯文件,把如圖位置改爲自己服務器的ip地址。
官方提供了動態獲取ip地址的方式,需要的話可以看文檔。
2.4 啓動服務,需要在trunk目錄下執行
./objs/srs -c conf/srs.conf #使用srs配置文件啓動
./etc/init.d/srs status #查看狀態
./etc/init.d/srs stop #停止
啓動後有如下輸出:
2.5 檢查啓動狀態,我這裏直接關閉了服務器的防火牆,否則需要開放8080端口,如果需要改端口改配置文件即可。
瀏覽器輸入:http://192.168.101.139:8080 訪問控制檯,如果能訪問到則說明啓動成功了。
2.6 配置瀏覽器https支持,由於webrtc需要https,本地測試配置證書又很麻煩,需要修改下瀏覽器配置。
在谷歌瀏覽器地址欄輸入:chrome://flags/#unsafely-treat-insecure-origin-as-secure
啓用功能,輸入框中輸入你對應的地址,多個用英文逗號隔開。在這裏配置後。瀏覽器會在訪問這個地址的時候,會以https的方式去訪問http網站。
2.7 推拉流測試
瀏覽器測試後已經能正常的推拉流了
2.8 關於多人通話,多人通話需要用到信令和房間等概念,官方提供了一個信令服務器,是用go語言開發的,如果要使用,需要提前安裝好go的環境。
在trunk目錄下執行命令:
cd /3rdparty/signaling && make && ./objs/signaling
安裝信令並啓動服務。
訪問地址:http://192.168.101.139:1989/demos/room.html?autostart=true&room=32f9e6c
就可以實現多人視頻通話了。
3..0 關於多人視頻通話的一些想法
使用上面的多人視頻通話測試過後發現,其實相當於每個人都有一個對應的視頻流,這樣確實能實現通話。這就有個問題,想象有無限個客戶端來通話,那每個客戶端都要持有一個除自己以外的其他所有人的音視頻流,並且要播放出來,設備會不會有性能問題?關於這個問題,其實就是Room to Live模式,官方給出的解決方案是先通過SRS把webrtc轉成rtmp,再用ffmpeg把多個rtmp合併成一個rtmp,且不說中間經歷過轉換加合流,是否會增加延時,這樣視頻通話的及時性就得不到保證。而且我之前使用nginx+rtmp+ffmpeg
做過多音視頻流的合併測試,效果不是很理想,音頻合流的延遲達到了5s。當時測試我使用的虛擬服務器可能配置太差了。不知道這種方案是否在生產環境可行。希望有知道的大佬可以告知一下。