1. 程式人生 > >快速搭建視訊直播平臺

快速搭建視訊直播平臺

快速搭建直播服務

大體架構

srs+ffmpeg+第三方(阿里雲,騰訊雲等),因為不是專門做直播平臺,所以藉助第三方平臺(伺服器,頻寬,cdn可以省不少心)。當然如果你想自建一個視訊直播平臺也是可以的~~

srs用來接收從手機客戶端推來的rtmp流,ffmpeg用來對視訊進行處理,比如增加logo或濾鏡等,在各種技術嘗試中,走過不少彎路,接收流方面還使用過netty,nginx-rtmp,流處理方面使用過javaCV,但效果有些不理想.,java太吃記憶體,cpu。

下面我們來看一下大致的流程吧

srs的文件簡單全面,附上git地址

第一步,獲取SRS。

git clone https://github.com/ossrs/srs
cd
srs/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啟動時會花屏。
至此srs伺服器的搭建結束.ffmpeg下期繼續介紹