快速搭建視訊直播平臺
阿新 • • 發佈:2019-01-07
快速搭建直播服務
大體架構
srs+ffmpeg+第三方(阿里雲,騰訊雲等),因為不是專門做直播平臺,所以藉助第三方平臺(伺服器,頻寬,cdn可以省不少心)。當然如果你想自建一個視訊直播平臺也是可以的~~
srs用來接收從手機客戶端推來的rtmp流,ffmpeg用來對視訊進行處理,比如增加logo或濾鏡等,在各種技術嘗試中,走過不少彎路,接收流方面還使用過netty,nginx-rtmp,流處理方面使用過javaCV,但效果有些不理想.,java太吃記憶體,cpu。
下面我們來看一下大致的流程吧
srs的文件簡單全面,附上git地址
第一步,獲取SRS。
git clone https://github.com/ossrs/srs cdsrs/trunk
或者使用git更新已有程式碼:
git pull
第二步,編譯SRS。
./configure && make
第三步,編寫SRS配置檔案。
將以下內容儲存為檔案,譬如conf/rtmp.conf
,伺服器啟動時指定該配置檔案(srs的conf資料夾有該檔案)。
# conf/rtmp.conf listen 1935; max_connections 1000; vhost __defaultVhost__ { }
第四步,啟動SRS。
./objs/srs -c conf/rtmp.conf
以上是基本配置,
安裝成功後文件路徑如下
下面是完整配置
listen 1935; max_connections 1000; daemon off; #srs_log_tank console; srs_log_tank file; srs_log_file ./objs/srs.log; http_api { enabled on; listen 8085; crossdomain on; } vhost test.xx.com { dvr { enabled on; #dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv; dvr_path ./objs/nginx/html/[stream]/[timestamp].flv; dvr_plan session; dvr_duration 30; dvr_wait_keyframe on; } http_hooks { enabled on; on_connect http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_close http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_publish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_unpublish http://127.0.0.1:8383/lss/liveItem/LiveItemAction!streamStatus.do ; on_dvr http://127.0.0.1:8085/api/v1/dvrs; #on_play http://127.0.0.1:8085/api/v1/sessions ; #on_stop http://127.0.0.1:8085/api/v1/sessions ; } }
vhost後面要寫對應的推流地址或者ip.
http_api 與vhost中的http_hooks為一組配置,當srs接收,停止到推流時會呼叫配置檔案中所填地址,並且將各種引數包括streamId,appid傳到後臺中。
hvhost中的dvr功能是本地錄製,dvr_plan有多種錄製計劃
- session:按照session來關閉flv檔案,即編碼器停止推流時關閉flv,整個session錄製為一個flv。
- segment:按照時間分段錄製,flv檔案時長配置為dvr_duration和dvr_wait_keyframe。注意:若不按關鍵幀切flv(即dvr_wait_keyframe配置為off),所以會導致後面的flv啟動時會花屏。