简单记录一下最近使用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; }