ffmpeg播放RTSP的一點優化

簡單記錄一下最近使用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;
}
相關文章
相關標籤/搜索