简单记录一下最近使用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; }标签:set,ffmpeg,RTSP,tcp,dict,av,播放,options From: https://www.cnblogs.com/lidabo/p/17510822.html