目前受大眾廣泛使用的視頻流拉轉推工具應該是FFMPEG,TSINGEE青犀視頻也有自己的拉轉推平台,分別為EasyRTMPLive和EasyRTSPLive,兩者都可以拉RTSP流轉RTMP流。
這幾天遇到一個客戶反饋說用FFMPEG進行拉IPC的流然后推給EasyDSS流媒體服務器的時候,發現播放畫面不完整,有花屏的情況。
帶着這個情況,我們做了如下實驗:
1、FFMPEG拉RTSP流推RTMP的命令如下:
ffmpeg -re -i rtsp://admin:a1234567@192.168.77.223:554/Streaming/Channels/102 -vcodec copy -acodec copy -f flv -y rtmp://demo.easydss.com:10035/hls/Seven-02?sign=BsBncNCMg
2、進入EasyDSS看下播放效果,確實有花屏的情況
根據上訴的現象我們分析花屏可能的情況如下:
1、播放端讀取緩沖區不夠,有時候遇到高清碼流,一幀就好幾兆,所以緩沖區要足夠長,這塊可能是播放器的問題;
2、推流端可能丟幀推流,導致播放端關鍵幀不夠。
為證實我們的預判,我們用EasyRTSPLive再做一個實驗,EasyRTSPLive是基於LIVE555改造的一個拉轉推工具,配置很簡單,拿到程序包解壓后有個ini配置文件,直接配置RTSP源和RTMP目的地址,然后就可以啟動程序。
然后我們在EasyDSS流媒體服務器上再看看播放效果,明顯沒有花屏。
下面我們對比下,兩種方式播放的效果對比如下:
此問題只需在ffmpeg源碼udp.c中#define UDP_MAX_PKT_SIZE 65536,修改擴大10倍就可以解決這個問題。