8、设置I/O中断机制

    我们要注意的是: 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);//设置超

原文地址:https://blog.csdn.net/u013480226/article/details/134599772

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15747.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注