Secure Reliable Transport (SRT) 是開放的 video transport protocol,由 Halvision 提出,目的是要提供一個加密、低延遲的視訊串流傳輸協定,過去比較常見的協定是 RTMP, RTSP, HLS, WebRTC。SRT 是在 2013 年由 Haivision 發表,後來 Haivision 在 2017 年將 protocol 開放,交給 SRT Alliance,然後慢慢有更多廠商支援這個協定。
在這麼長久的網路視訊串流發展歷史中,RTMP 常見於網路影片直播,尤其是行動網路的直播,RTSP 常見於網路攝影機。RTMP 是以 TCP 為基礎,因為發展當時的網路頻寬不大,必須要用 TCP 本身的連線穩定度,封包傳送機制,來確保網路直播的可用性。
SRT 則是完全使用 UDP,在 Haivision 的文件中,提出 SRT 的延遲比 RTMP 少 2.5~3.2 倍。SRT 跟 RTP 的差異是,SRT 借鑒了 RTMP 控制機制,傳輸中除了 video 資料封包,還有控制封包,控制封包可根據網路延遲及品質,動態調整發送端的 video 發送速度,也能有限制地決定要不要重傳遺失的封包。
SRT 可套用加密機制,使用最常見的 AES-128/256 加密方法。
SRT 只是一種影片切割與包裝的方法,因此能適用於任何一種影片 codec。
Server
GitHub - Edward-Wu/srt-live-server: srt live server for low latency 這是一個 SRT streaming server。
安裝前,必須要先安裝 GitHub - Haivision/srt: Secure, Reliable, Transport SRT library,我們在 CentOS 測試,根據這個文件說明,依照以下步驟安裝
sudo yum install tcl pkgconfig openssl-devel cmake gcc gcc-c++ make automake
./configure
make
make install
安裝 SRT library 後,可安裝 server,下載 srt-live-server-master.zip,解壓縮後,直接 make 即可
sudo make
執行
cd bin
./sls -c ../sls.conf
Client
測試 SRT 可使用 OBS Studio
發布的網址為
srt://192.168.1.11:8080?streamid=uplive.sls.com/live/test
接收部分,可用 VLC video player 測試,網址為
srt://192.168.1.11:8080?streamid=live.sls.com/live/test
實際上實測,OBS 發佈到 VLC 接收,大約有 4~5 秒的延遲
iOS app
可安裝 Haivision Play Pro - Haivision iOS APP,這個 app 也可以接收 SRT streaming
設定方式如下
References
Secure Reliable Transport - Wikipedia
【ProAV Lab】SRT,互聯網上的最佳視訊串流協定 | Lumens
RTMP vs. SRT: Comparing Latency and Maximum Bandwidth - Haivision
沒有留言:
張貼留言