SRS4.0源码分析-RTMP延迟
本文采用的 SRS 版本是 4.0-b8 , 下載地址:github
本文主要對 SRS RTMP 直播做延遲測試,然后介紹如何優化 RTMP 的延遲。為了不嵌套界面,介紹一下?ffmpeg?如何抓取某個應用屏幕。
先下載一個秒表程序,ledcount?,運行界面如下:
FFmpeg 抓取 某個 窗口的命令如下:
ffmpeg.exe -f gdigrab -framerate 6 -i "title=abcds" out2.flv由于 FFmpeg 不支持中文的窗口名稱,所以需要 下載一個軟件?Captain?,可以修改窗口的標題。上面我把 窗口標題 修改成?abcds?,這樣 ffmpeg 就能抓取了。
注意。Captain 這個軟件,是使用鼠標中間的按鈕來修改標題的,一定要把鼠標移動到應用上方的菜單欄的位置在點擊中間的按鈕,才能彈出來修改按鈕。
修改如下:
ffmpeg 錄制環境已經裝備好,下面就用一條命令推流到 SRS 的RTMP 服務器。
ffmpeg.exe -f gdigrab -framerate 6 -i "title=abcds" -f flv rtmp://192.168.0.123/live/livestream然后用 ffplay 播放 RTMP 流,命令如下:
ffplay -fflags nobuffer -i rtmp://192.168.0.123/live/livestream上面是 截圖得出來的延遲,一共 0.4 秒左右的延遲。
上面 FFplay 使用了?nobuffer,雖然延遲少了,但是可能會有少許不流暢。不開啟這個選項延遲一般在 7秒左右延遲。這個是利用大的 buffer 來實現視頻播放的流暢性,但是同時延遲會加大。
下面開始優化延遲,參考下面兩篇文章進行配置。
1,《低延時直播應用》
2,《RTMP低延時配置》
由于SRS的 低延遲配置 都在?conf/realtime.conf?里面,SRS 啟動的時候直接指定這個文件就行。命令如下:
./objs/srs -c ./conf/realtime.conf再次截圖延遲,如下:
延遲 0.5 秒,在局域網內好像沒什么差別。這里聲明一下,本文采用的測量方法不是嚴格準確的,推薦看 《延遲的測量》
擴展知識:
1,FFmpeg 抓取 整個桌面或者某個特定位置,請看 《FFmpeg從入門到精通》第 7.3 節
相關閱讀:
由于筆者的水平有限, 加之編寫的同時還要參與開發工作,文中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。如果讀者有任何寶貴意見,可以加我微信 Loken1。QQ:2338195090。
推薦一個零聲學院免費公開課程,個人覺得老師講得不錯,分享給大家:
Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK等技術內容,立即學習
總結
以上是生活随笔為你收集整理的SRS4.0源码分析-RTMP延迟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017我们一起走过,2018我们继续!
- 下一篇: 卷积积分性质证明