??SRS 是一個(gè)簡(jiǎn)單高效的實(shí)時(shí)視頻服務(wù)器,支持 RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181
。
一、Ubuntu / Mac 系統(tǒng)編譯
??Linux 或 Mac 系統(tǒng)可以在 SRS git 倉(cāng)庫(kù) 中,選擇對(duì)應(yīng)版本的源碼下載進(jìn)行編譯;根據(jù) SRS 對(duì) WebRTC 的支持,源碼編譯版本選擇目前 4.x 最新版 4.0.198
- SRS 4.0.14,支持了RTMP推流,WebRTC播放
- SRS 4.0.76,支持了WebRTC推流,WebRTC播放
- SRS 4.0.95,支持了WebRTC推流,RTMP播放
- SRS 4.0.96,一對(duì)一通話DEMO
- SRS 4.0.98,多人會(huì)議DEMO
- SRS 4.0.98,會(huì)議錄制,直播連麥DEMO
# 原先使用的 v4.0.198 被刪了;wget https://github.com/ossrs/srs/archive/refs/tags/v4.0-r5.tar.gz
wget https://github.com/ossrs/srs/archive/refs/tags/v4.0.198.tar.gz
tar -xvf v4.0.198.tar.gz
cd srs-4.0.198/trunk
./configure # Mac 執(zhí)行 ./configure --osx
make # 不需要 make install
??make 編譯完之后,會(huì)出現(xiàn)如下提示,即告訴我們?nèi)绾沃付ㄅ渲梦募?dòng) SRS 服務(wù):
You can:
./objs/srs -c conf/srs.conf
to start the srs server, with config conf/srs.conf.
二、Windows 安裝
??Windows 系統(tǒng),可以下載 Windows(Cygwin)安裝包,雙擊運(yùn)行安裝之后,得到的目錄結(jié)構(gòu)如下:
??同樣的,一些默認(rèn)的配置文件都在 conf 目錄下;啟動(dòng) SRS 服務(wù)也和 Linux / Mac 類(lèi)似;打開(kāi)終端,進(jìn)入到 SRS 目錄,執(zhí)行如下指令
objs\srs.exe -c conf\rtmp2rtc.conf
??SRS 目錄下有三個(gè) .bat 腳本文件,可以通過(guò)記事本打開(kāi),發(fā)現(xiàn)其對(duì)應(yīng)的命令如下:
- srs-cli.bat:
objs\srs.exe -h
- srs-live.bat:
objs\srs.exe -c conf\live.conf
- srs-rtc.bat:
objs\srs.exe -c conf\rtc.conf
三、參數(shù)配置
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank console;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
http_api {
enabled on;
listen 1985;
}
stats {
network 0;
}
rtc_server {
enabled on;
listen 8000;
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#config-candidate
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
rtc {
enabled on;
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtmp-to-rtc
rtmp_to_rtc on;
# @see https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#rtc-to-rtmp
rtc_to_rtmp on;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
}
- max_connections 默認(rèn)值 1000,Mac 系統(tǒng)啟動(dòng)時(shí),可能導(dǎo)致如下錯(cuò)誤,需要將其設(shè)置到 248 或以下:
invalid max_connections=1000, required=1107, system limit to 256, total=1007(max_connections=1000, nb_consumed_fds=7). you can change max_connections from 1000 to 248, or you can login as root and set the limit: ulimit -HSn 1107
-
candidate 當(dāng)我們開(kāi)啟 WebRTC 功能的時(shí)候,
一定一定
需要 配置 candidate;官方提供的配置方式如下:
- 直接配置成固定的IP,比如:candidate 192.168.3.6;
- 用命令ifconfig獲取本機(jī)的內(nèi)網(wǎng)IP,通過(guò)環(huán)境變量傳遞給SRS,比如:candidate $CANDIDATE;
- 自動(dòng)獲取,先讀取環(huán)境變量,然后獲取本機(jī)網(wǎng)卡的IP,比如:candidate *;
- 在url中通過(guò)?eip=x指定,比如:webrtc://192.168.3.6/live/livestream?eip=192.168.3.6
rtmp_to_rtc WebRTC 可以作為直播的一個(gè)播放器,播放直播流,延遲比 RTMP 還要低,更能抗網(wǎng)絡(luò)抖動(dòng)。
rtc_to_rtmp WebRTC 推流,可以轉(zhuǎn)成 RTMP 流播放,SRS 只會(huì)對(duì)音頻轉(zhuǎn)碼(Opus 轉(zhuǎn) AAC),因此要求視頻是 H.264 編碼。
四、FFmpeg 直播推流
??srs 服務(wù)的 ./doc/ 目錄下,存在 source.flv
和 source.200kbps.768x320.flv
兩個(gè)測(cè)試視頻
- FFmpeg 推流指令:
ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost:1935/live/livestream
- FFmpeg 播放指令:
ffplay -i rtmp://localhost:1935/live/livestream
??服務(wù)啟動(dòng)成功之后,可以在瀏覽器輸入 localhost:8080 進(jìn)入 SRS 管理后臺(tái)
??而如果啟動(dòng)的 srs 服務(wù)開(kāi)啟了 rtc 功能,可以在 SRS 播放器中測(cè)試直播流的播放,rtmp 直播流也可以使用 vlc 播放器播放,Windows 平臺(tái)還可以使用 PotPlayer 播放