ffmpeg+EasyDSS流媒體服務器實現穩定的rtmp推流直播


https://www.bbsmax.com/A/6pdDVZXqJw/

 

本文轉自EasyDarwin團隊成員Alex的博客:http://blog.csdn.net/cai6811376/article/details/74783269

需求

在做EasyDSS開發時,總是在測試推流效果。

當然,可以使用libEasyRTMP進行推流測試。

有時候,我們想使用OBS進行推流測試,也可以,這很好。

以及其他RTMP推流工具。

但是,別忘了,還有ffmpeg這個神器。ffmpeg可以獲取各種視頻流,並推送給EasyDSS RTMP流媒體服務器。

比如,拉取攝像機RTSP流,推送給EasyDSS,命令

ffmpeg -i rtsp://username:password@ip:port/xxxxxxx -vcodec copy -acodec copy -f flv -y rtmp://easydssip:easydssport/live/test

 

當然,這個命令限於攝像機提供的就為H.264+AAC的碼流,若不是

則將-vcodec copy改為-vcodec libx264-acodec copy改為-acodec aac

若是,我們想用ffmpeg讀取文件進行RTMP推送呢,當然,您可以選擇OBS,但是,畢竟,ffmpeg比OBS更輕量,命令在此

ffmpeg -i test.h264 -vcodec copy -acodec copy -f flv -y rtmp://easydssip:easydssport/live/test

 

-vcodec和-acodec按需更改同拉取RTSP流。

這樣可以滿足我們推送文件到EasyDSS的願望。

但是。。。。。

ffmpeg推流的效果經常不如人意,經常出現播放畫面慢、音視頻不同步、HLS直播不穩定等各種問題?

解決

當然有解決辦法

ffmpeg -re -stream_loop -1 -i test.h264 -vcodec copy -acodec copy -f flv -y rtmp://easydssip:easydssport/live/test

  

加了一個-re

這是干啥的?

https://ffmpeg.org/ffmpeg-all.html#Main-options

  

我們明白了,-re表示重新調整時間戳,這樣就能夠將各種文件、RTSP源、RTMP源的不均勻時間戳全部進行ffmpeg的重新調整,再進行rtmp推流,保證直播的平滑和hls切片的均勻。

另外,在拉取RTSP流時,盡量加上 -rtsp_transport tcp 的選項,保證數據源的穩定和不丟包!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM