• ffmpeg播放RTSP的一点优化


    简单记录一下最近使用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.
    ");
        return false;
    }
  • 相关阅读:
    常见面试题
    性能测试注意点
    orm 事物的使用
    mvc 页面如何引用命名空间并且直接使用枚举类型对象
    ef 动态拼接参数查询
    ef指定字段更新
    jquery 如何传递对象本身
    整数除以整数后转成百分比并且保留一位小数
    sql 表变量的使用
    echart的label标签文字过长显示不全怎么办?
  • 原文地址:https://www.cnblogs.com/betterwgo/p/7642331.html
Copyright © 2020-2023  润新知