簡單記錄一下最近使用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; }