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;
}
相关文章
相关标签/搜索