SRS 流媒體服務器部署及設計思路和一些想法

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。當時測試我使用的虛擬服務器可能配置太差了。不知道這種方案是否在生產環境可行。希望有知道的大佬可以告知一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章