簡單記錄一下最近使用ffmpeg播放RTSP作的一點參數優化。tcp
先作以下定義:函數
AVDictionary* options = NULL;
1.畫質優化優化
原生的ffmpeg參數在對1920x1080的RTSP流進行播放時,花屏現象很嚴重,根據網上查的資料,能夠經過增大「buffer_size」參數來提升畫質,減小花屏現象url
如:spa
av_dict_set(&options, "buffer_size", "1024000", 0);
2.RTSP鏈接不上致使卡死的問題code
原生的ffmpeg參數在打開RTSP流時,若鏈接不上,會出現卡死在打開函數的狀況,在有些狀況下這是很很差的,能夠經過設置超時來改變卡死的狀況orm
如設置20s超時:blog
av_dict_set(&options, "stimeout", "20000000", 0); //設置超時斷開鏈接時間
3.其餘input
能夠設置的參數還有不少,如能夠設置鏈接爲TCP,設置最大延時等等io
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; }