当前位置: 首页 > article >正文

音视频5、libavformat-3

8、设置I/O中断机制

    在 demux 时,我们首先需要调用 avformat_open_input() 打开一个输入,然后循环调用 av_read_frame() 函数来读取输入。
    我们要注意的是: avformat_open_input() 和 av_read_frame() 都是阻塞函数,如果不能读取到足够的数据,那么它们将会一直阻塞。对于读取本地文件而言,这不是什么问题,但当我们读取的是网络上的实时流时,尤其是网络的情况不太好的情况下,就可能导致这个长时间的阻塞。
    而在实际的代码中,我们可能不能让它们一直阻塞在这里,我们需要超过一定时长时返回,去处理其他一些事情,然后再尝试去重新调用这两个函数,去读取数据,这时候,我们就需要设置中断机制。
    第一种方法是,使用 option 来设置中断,不同的协议需要使用的 option 也不太一样,比如 rtsp ,它使用私有选项 stimeout 设置中断,tcp 使用私有选项 timeout 设置中断等等。使用时,需要去查询相关协议的具体说明。
//设置rtsp超时
AVDictionary* opts = NULL;
//设置tcp or udp,默认一般优先tcp再尝试udp
av_dict_set(&opts, "rtsp_transport",  "tcp" 或"udp", 0);
av_dict_set(&opts, "stimeout", "1000000", 0);//设置超

http://www.kler.cn/a/146124.html

相关文章:

  • 51c嵌入式~单片机~合集6
  • vue3+elementPlus之后台管理系统(从0到1)(day2)
  • llava 导入process报错
  • 认识 MySQL 和 Redis 的数据一致性问题
  • 安装httpd
  • 智能学习平台系统设计与实现(代码+数据库+LW)
  • C# List<T>的综合用法
  • Linux(9):正规表示法与文件格式化处理
  • 一种模板类实现和声明分开在生成的.a文件被使用时出现undefined reference时的一种解决方法
  • 【设计模式】行为型模式-第 3 章第 6 讲【中介者模式】
  • react高阶成分(HOC)
  • YOLOv8改进 | SAConv可切换空洞卷积(附修改后的C2f+Bottleneck)
  • 面试笔记--Linux常用命令
  • 网络安全—自学
  • 基于单片机DHT11湿度测量与控制-CO2-光照报警系统程序和仿真
  • 终于等到你!常用的组织架构图模板,高清图片一键导出
  • 在vue页面中添加组件到底有多方便
  • udp通信socket关闭后,缓存不清空
  • 【Android知识笔记】性能优化专题(三)
  • [环境配置]vscode免密ssh的设置流程
  • 85基于Matlab的交通设施识别
  • 解决ssh -T git@github.com报错connection closed问题
  • Linux命令之sed
  • AI和人工智能与机器学习全景报告
  • 在线知识库管理平台zyplayer-doc
  • MyBatis-Plus简介和入门操作