ffmpeg播放RTSP的一點優化


簡單記錄一下最近使用ffmpeg播放RTSP做的一點參數優化。

先做如下定義:

AVDictionary* options = NULL;

1.畫質優化

原生的ffmpeg參數在對1920x1080的RTSP流進行播放時,花屏現象很嚴重,根據網上查的資料,可以通過增大“buffer_size”參數來提高畫質,減少花屏現象

如:

av_dict_set(&options, "buffer_size", "1024000", 0);

2.RTSP連接不上導致卡死的問題

原生的ffmpeg參數在打開RTSP流時,若連接不上,會出現卡死在打開函數的情況,在有些情況下這是很不好的,可以通過設置超時來改變卡死的情況

如設置20s超時:

av_dict_set(&options, "stimeout", "20000000", 0);  //設置超時斷開連接時間

3.其他

可以設置的參數還有很多,如可以設置連接為TCP,設置最大延時等等

av_dict_set(&options, "max_delay", "500000", 0);
av_dict_set(&options, "rtsp_transport", "tcp", 0);  //以udp方式打開,如果以tcp方式打開將udp替換為tcp

 

例子:

AVDictionary* options = NULL;
av_dict_set(&options, "buffer_size", "1024000", 0);
av_dict_set(&options, "max_delay", "500000", 0);
av_dict_set(&options, "stimeout", "20000000", 0);  //設置超時斷開連接時間
av_dict_set(&options, "rtsp_transport", "tcp", 0);  //以udp方式打開,如果以tcp方式打開將udp替換為tcp  

if(avformat_open_input(&pFormatCtx,url.c_str(),NULL,&options)!=0){
    printf("Couldn't open input stream.\n");
    return false;
}


免責聲明!

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



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