SRT協議詳解一測試

最近,在研究低延遲視頻傳輸課題時接觸到了SRT協議。SRT是一個時下非常受歡迎的開源低延遲視頻傳輸協議。SRT是Secure Reliable Transport的簡稱。它擁有三大特點,安全,可靠,低延遲。安全方面,SRT支持AES加密,保障端到端的視頻傳輸安全。可靠性方面,SRT通過前向糾正技術(FEC)保證傳輸的穩定性。低延遲方面,由於SRT建立在UDT協議之上,解決了UDT協議傳輸延遲高的問題。UDT協議是基於UDP網絡通信協議的。SRT解決了複雜的傳輸時序問題,可以做到支持高吞吐量文件和超清視頻的實時傳輸。GitHub代碼
在這裏插入圖片描述
雖然SRT在GitHub上公佈了源代碼,但是我在研究SRT協議的過程中,百度、谷歌基本很難找到開發使用的資料。經過仔細的研究,逐漸實現了SRT協議在不同終端下的文件傳輸,服務器客戶端的視頻傳輸。經過測試,端到端的最大延遲爲1秒。經過分析,我發現這麼大的延遲並不是SRT協議產生的。主要是客戶端在調用ffmpeg協議,生成視頻流的過程中,需要進行h264編碼,耗費了大量的計算資源,導致產生了1秒的延遲。

實驗環境

按照GitHub上的readme,在linux下編譯了這個項目。

SRT協議傳輸文件

**發送端
$ ./srt-file-transmit file:///home/master/1.jpg srt://192.168.43.196:5002

接收端
$ ./srt-file-transmit srt://:5002/?mode=listener file:///home/master/**

分別在兩臺電腦(接收端和發送端)的終端下輸入上述命令,即可以將/home/master/1.jpg發送到192.168.43.196:5002。第二行的"/home/master/"是文件保存路徑。

ffmpeg生成流接收流測試

發送端:
ffmpeg -f lavfi -re -i smptebars=duration=60:size=1280x720:rate=30 -f lavfi -re -i sine=frequency=1000:duration=60:sample_rate=44100 -pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 -profile:v baseline -preset veryfast -f mpegts “udp://127.0.0.1:1234?pkt_size=1316”
(生成彩色條帶視頻流)

接收端:
ffplay udp://127.0.0.1:1234
可以顯示出彩色條帶和播放出滴滴的長鳴聲(正弦波的聲音)

通過這段代碼,可以驗證在linux中ffmpeg是否安裝完整。

SRT本地迴環傳輸彩色條帶

在終端1輸入:
ffmpeg -f lavfi -re -i smptebars=duration=60:size=1280x720:rate=30 -f lavfi -re -i sine=frequency=1000:duration=60:sample_rate=44100 -pix_fmt yuv420p -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 -profile:v baseline -preset veryfast -f mpegts “udp://127.0.0.1:5000?pkt_size=1316”
(生成流)

在終端2輸入:
./stransmit -r:10 -s:5 udp://:5000 srt://:9000
(發送流)

在終端3輸入:
./stransmit srt://127.0.0.1:9000 file://con | ffplay -
(接收流,顯示出視頻和聲音)

SRT本地迴環傳輸TS流視頻

在終端1輸入:
ffmpeg -r 30 -re -i /dev/video0 -pix_fmt yuv420p -c:v libx264 -b:v 1000k -profile:v baseline -preset ultrafast -f mpegts “udp://127.0.0.1:5000?pkt_size=1316”
(生成流)

在終端2輸入:
./stransmit -r:10 -s:5 udp://:5000 srt://:9000
(發送流)

在終端3輸入:
./stransmit srt://127.0.0.1:9000 file://con | ffplay -
(接收流,顯示出視頻和聲音)

轉載至:
https://blog.csdn.net/blgpb/article/details/86704820
https://blog.csdn.net/v6543210/article/details/102887791?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章