FFmpeg開發筆記(三十六)Linux環境安裝SRS實現影片直播推流

aqi00發表於2024-07-07
《FFmpeg開發實戰:從零基礎到短影片上線》一書在第10章介紹了輕量級流媒體伺服器MediaMTX,透過該工具可以測試RTSP/RTMP等流媒體協議的推拉流。不過MediaMTX的功能實在是太簡單了,無法應用於真實直播的生產環境,真正能用於生產環境的流媒體伺服器還要看SRS或者ZLMediaKit。

SRS是一款國產的開源實時影片伺服器,支援RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等流媒體協議。SRS媒體伺服器和FFmpeg、OBS、VLC、WebRTC等客戶端配合使用,提供音影片流的接收和分發的能力,是一個典型的釋出(推流)和訂閱(播放)伺服器模型。SRS支援網際網路廣泛應用的音影片協議轉換,比如可以將RTMP或SRT,轉成HLS或HTTP-FLV或WebRTC等協議。
透過結合FFmpeg與SRS,可以很方便地測試音影片的推拉流。接下來以華為的尤拉系統為執行環境,介紹如何編譯、安裝、除錯SRS,詳細的操作步驟說明如下。

一、編譯安裝SRS

1、登入Linux伺服器(比如華為雲的尤拉系統),執行下列命令安裝SRS的依賴包。

yum install git
yum install patch

2、執行下面命令從gitee下載SRS的原始碼。

cd /usr/local/src
git clone -b develop https://gitee.com/ossrs/srs.git

3、進入SRS的主幹原始碼目錄,執行下面命令配置SRS。

cd srs/trunk
./configure

4、執行下面命令編譯SRS。

make

命令執行完畢,SRS的可執行程式srs就在srs/trunk/obj目錄下生成。

二、編譯安裝FFmpeg

在Linux系統編譯安裝FFmpeg的詳細步驟參見《FFmpeg開發實戰:從零基礎到短影片上線》一書的“1.2 Linux系統安裝FFmpeg”,這裡不再贅述。

三、啟動SRS

1、進入SRS的主幹配置目錄,也就是執行下面命令:

cd /usr/local/src/srs/trunk/conf

2、開啟配置檔案srs.conf,在vhost __defaultVhost__裡面補充以下一行配置:

    gop_cache   on;

以上配置表示開啟快取關鍵幀,一定要設定為on,否則客戶端拉流找不到關鍵幀就無法渲染畫面。
修改完畢,儲存並退出srs.conf。
3、執行下面命令,啟動SRS服務。

cd /usr/local/src/srs/trunk
./objs/srs -c conf/srs.conf

4、檢查伺服器是否開啟了下列埠:
1935埠,用於rtmp協議,訪問“rtmp://”開頭的直播地址需要。
8080埠,用於http協議,訪問“http://”開頭的直播地址需要。

四、檢查SRS的影片推拉流

1、執行以下命令,將本地影片透過RTMP協議推流給SRS。

ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

注意:SRS不支援RTSP推流,只支援RTMP推流。
2、開啟VLC播放器,依次選擇選單“媒體”→“開啟網路串流”,在網路URL框中輸入下列任一地址,觀看能否正常播放影片畫面。

rtmp://124.***.***.***/live/test
http://124.***.***.***:8080/live/test.flv
http://124.***.***.***:8080/live/test.m3u8

注意需要把上述地址中的“124.***.***.***”替換為流媒體伺服器實際的公網地址。
更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短影片上線》一書。

相關文章