• 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;
    }
  • 相关阅读:
    git上传本地项目
    第十一章 持有对象
    java 闭包与回调
    类名.class 类名.this 详解
    匿名内部类
    第十章 内部类
    Java简单调用Zookeeper服务
    Linux下ZooKeeper集群安装
    Linux自动化安装JDK
    linux下初步实现Keepalived+Nginx高可用
  • 原文地址:https://www.cnblogs.com/betterwgo/p/7642331.html
Copyright © 2020-2023  润新知