java開發(fā)門戶網(wǎng)站搜索引擎入口google
????????目前互聯(lián)網(wǎng)上的視頻直播有兩種,一種是基于RTMP協(xié)議的直播,這種直播方式上行推流使用RTMP協(xié)議,下行播放使用RTMP,HTTP+FLV或者HLS,直播延時一般大于3秒,廣泛應(yīng)用秀場、游戲、賽事和事件直播,滿足了對交互要求不高的場景;另一種是WebRTC協(xié)議的直播,這種直播方式使用UDP的協(xié)議進行流媒體的分發(fā),直播延時小于1秒,同時連接數(shù)一般小于10個,主要應(yīng)用在視頻通話、秀場連麥等應(yīng)用場景。
????????除了上述兩種場景外,還有一種視頻直播的場景,就是同時要求低延時和大并發(fā)的場景,比如賽事直播、股票信息同步、大班教育等。SRT可以很好地滿足上述場景的要求。
SRT:Secure Reliable Transport (SRT) 是一個開源的傳輸協(xié)議架構(gòu),基于UDT(可靠UDP協(xié)議)實現(xiàn),主要是優(yōu)化在不可靠網(wǎng)絡(luò)上的傳輸性能。
srt-live-server 源代碼:srt-live-server: 該項目已有3年未更新,將基于V1.4.9進行后續(xù)使用上的修改。https://gitee.com/smartavs_01/srt-live-server
1.介紹
- SRT -live-server(SLS)是一個基于安全可靠傳輸(SRT)的低延遲的開源直播流服務(wù)器。通常情況下,運輸?shù)难舆t在互聯(lián)網(wǎng)SLS小于1秒
- SLS只支持MPEG-TS格式的流。
- SLS借鑒了RTMP的URL格式(domain/app/stream_name),例如:msos.push/live/test
- 如何區(qū)分同一流是推流還是拉流?在conf文件中通過設(shè)置domain_player/domain_publisher和app_player/app_publisher參數(shù)來解析。重要的是,domain_publisher/app_publisher和domain_player/app_player的兩個組合字符串在同一個服務(wù)器塊中不能相等
- SLS只能運行在基于linux的操作系統(tǒng)上,如mac、centos或ubuntu等。
注意:該項目已有3年未更新,我將基于V1.4.9進行后續(xù)使用上的修改。
2.依賴
????????請先安裝SRT,系統(tǒng)環(huán)境請參考SRT(https://github.com/Haivision/srt)。
3.編譯
$ sudo make
Bin文件在' Bin '的子目錄下生成。
4.文檔
關(guān)于配置文件,請參見wiki
5.使用說明
5.1.幫助信息
sls -h
5.2.指定配置文件運行
sls -c sls.conf
6.測試
6.1.使用ffmpeg進行測試
推流指令
./ffmpeg -f avfoundation -framerate 30 -i "0:0" -vcodec libx264 -preset ultrafast -tune zerolatency -flags2 local_header -acodec libmp3lame -g 30 -pkt_size 1316 -flush_packets 0 -f mpegts "srt://[your.sls.ip]:8100?streamid=msos.push/live/test"
播放指令
./ffplay -fflags nobuffer -i "srt://[your.sls.ip]:8100?streamid=msos.pull/live/test"
注意:您可以通過FFMPEG推送直播流。編譯FFMPEG源碼時,需要啟用SRT(--enable-libsrt)
6.2.使用srt-live-client進行測試
? 在SLS中有一個測試工具,它可以用于性能測試。因為它沒有編解碼器的開銷,主要是主網(wǎng)絡(luò)開銷。SLC可以將SRT流保存為TS文件,也可以將TS文件推送到SRT流。
TS文件作為輸入,推送SRT流
./slc -r srt://[your.sls.ip]:8080?streamid=msos.push/live/test -i [TS文件]
SRT流作為輸入,保存為TS文件
./slc -r srt://[your.sls.ip]:8080?streamid=msos.pull/live/test -o [TS文件]
7.發(fā)布信息
v1.2
- 更新內(nèi)存模式。在v1.1中,發(fā)布者將數(shù)據(jù)復(fù)制到每個播放器,在v1.2中,每個發(fā)布者將數(shù)據(jù)放入數(shù)組,所有播放器從該數(shù)組讀取數(shù)據(jù)。
- 更新發(fā)布者和播放器的關(guān)系。播放器不是發(fā)布者的成員。它們之間唯一的關(guān)系是數(shù)組數(shù)據(jù)。
- 添加推拉功能。支持所有和哈希模式的推,支持循環(huán)和哈希的拉。在集群模式下,您可以將流推送到散列節(jié)點,并從相同的散列節(jié)點拉取該流。
- 在pull和push的上游支持hostname:port/app
v1.3
- 支持重載。
- 為中繼添加idle_streams_timeout特性。
- 將許可證類型從GPL更改為mit。
v1.4.x
- 增加HTTP統(tǒng)計信息。
- 增加HTTP事件通知,on_connect, on_close。
- 在slc(srt-live-client)工具中添加播放器功能,用于壓力測試。
- 為slc (srt-live-client)工具增加發(fā)布功能,它可以根據(jù)DTS推送TS文件。
- 修改主機不可用時的HTTP bug。
- 將remote_ip和remote_port添加到on_event_url中,這可以作為播放器或發(fā)行商的唯一標識。
- 為了兼容MAC系統(tǒng),TCP監(jiān)聽由epoll模式更改為select模式
- 修改HTTP檢查重復(fù)錯誤以重新打開。
- 兼容OBS流,OBS支持srt協(xié)議,版本為v25.0以上。(https://obsproject.com/forum/threads/obs-studio-25-0-release-candidate.116067/)
- 增加 hls 錄制功能.
- 將pid文件路徑從“~/”更新為“/opt/soft/sls/”
- 將pid文件路徑從“/opt/soft/sls/”更新為“/tmp/sls”,以避免在某些情況下使用根權(quán)限。
- 兼容SRT v1.4.1,在設(shè)置方法之前添加set latency方法
- 兼容raspberrypi.