ffmpeg拉流长时间堵塞解决方式
由于网络堵塞或者推流端错误导致拉流端没有流数据,ffmpeg主要会堵塞两个函数,直到下次流数据的到来
avformat_open_input()
该函数是在打开流数据时,如果没有这个流的ip,http有自己的timeout,当链接失败,ffmpeg会自动断开.但是如果有这个ip,但是无法链接,就会堵塞,解决方式是添加超时控制.
函数在ffmpeg源码的ffmpeg_opt.c文件中,
我设置了3秒超时时间,添加如下代码
av_dict_set(&o->g->format_opts, "rw_timeout", "3000000", 0);
av_read_frame()
该函数是链接成功后,由于网络堵塞或者其它问题导致packet丢失,无法读取,导致堵塞,
函数在ffmpeg.c文件中,解决方式也是添加超时
`f->ctx->interrupt_callback.callback = CheckInterrupt;f->ctx->interrupt_callback.opaque = (void*)f->ctx;
time_t start_time;
start_time = time(NULL);
int l = time(&start_time);
f->ctx->st = l;
return av_read_frame(f->ctx, pkt);
`
下面是回调函数:
`
static int CheckInterrupt(void *ctx)
{
AVFormatContext p = (AVFormatContext)ctx;
time_t et;
et = time(NULL);
int l = time(&et);
av_log(NULL, AV_LOG_WARNING,"start time%d\n",p->st);
av_log(NULL, AV_LOG_WARNING,"end time%d\n",l);
return l - p->st >= 10 ? 1 : 0;//3秒超时
}
`
需要注意的是,我在`f->ctx`结构体中添加了st变量,由时间戳作为评判超时的依据,需要把变量类型统一,所以需要添加变量如下:
在avformat.h文件的AVFormatContext结构体中添加:
`int st;`
ffmpeg拉流长时间堵塞解决方式的更多相关文章
- android开发游记:SpringView 下拉刷新的高效解决方式,定制你自己风格的拖拽页面
关于下拉刷新/上拉载入很多其它的解决方式网上已经有非常多了,浏览了眼下主流的下拉控件比方PullToRefresh库等.第一:大多数实现库都难以进行动画和样式的自己定义. 第二:不能非常好的兼容多种滚 ...
- MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式
MySQL-Front 出现“程序注册时间到期 程序将被限制模式下运行”解决方式 在用mysql-front的时候遇到显示:程序注册时间到期程序将被限制模式下运行.可以在“帮助”菜单下的点“登记”-- ...
- layui 时间插件,change&&done,按照官网写法无效,解决方式!
摘抄自 hahei2020:https://blog.csdn.net/hahei2020/article/details/79285370 layui 时间插件, 当选择时间或时间发生改变后,按照官 ...
- Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)
补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...
- String内存溢出异常(错误)可能的原因及解决方式
摘要:本Blog主要为了阐述java.lang.OutOfMemoryError:PermGenspace可能产生的原因及解决方式. 当中PermGen space是Permanent Generat ...
- Linux转发性能评估与优化(转发瓶颈分析与解决方式)
线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...
- 我想要革命想要解脱——bootstrap常见问题及解决方式
最近一个月,恍若隔世,天天加班,昨晚终于发版了,今天才喘一口气.有时候,即便你工作效率再怎么高,撸码再怎么快也无可避免的会加班.不信的话,可以先给你定一个交付时间,然后不断的给你加需求,就让你一个人做 ...
- Android之——常见Bug及其解决方式
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46942139 1.android.view.WindowManager$BadTo ...
- Android内存优化-内存泄漏的几个场景以及解决方式
转自:http://blog.csdn.net/a910626/article/details/50849760 一.什么是内存泄漏 在Java程序中,如果一个对象没有利用价值了,正常情况下gc是会对 ...
随机推荐
- 菜渣开源一个基于 EMIT 的 AOP 库(.NET Core)
目录 1,快速入门 1.1 继承 ActionAttribute 特性 1.2 标记代理类型 2,如何创建代理类型 2.1 通过API直接创建 2,创建代理类型 通过API 通过 Microsoft. ...
- 1169A+B问题终结版(高精度计算)
描述 给定两个整数A和B,输出A+B的值.A和B的值可能会很大很大,甚至达到100位.现在请你解决这一问题. 输入 两行,分别是两个整数A,B,换行隔开.A和B会很大很大. 输出 一个整数,即A+B的 ...
- 多语言工作者の十日冲刺<3/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--第三天(05.02) 作业正文 ...
- 团队进行Alpha冲刺--项目测试
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--项目测试 作业正文 如下 其他参 ...
- 安卓开发-Activity-多个Activity的开发方法。
原文链接:https://blog.csdn.net/weixin_38420342/article/details/84344496 一.切换Activity的5种方式 Intent intent ...
- Maven全局配置文件settings.xml详解(转)
Maven全局配置文件settings.xml详解 目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...
- Distributed Runtime
上级:https://www.cnblogs.com/hackerxiaoyon/p/12747387.html Tasks and Operator Chains 任务和操作链 对于分布式执行器,f ...
- python文件处理-根据txt列表将文件从其他文件夹 拷贝到指定目录
内容涉及:路径拼接,文件拷贝,内容追加(append) # !/usr/bin/python # -*- coding: UTF-8 -*- import pandas as pd import os ...
- HTML重构与网页常用工具
下面这张思维导图,是我对全书大体内容的一个概括性总结: 工具 本书推荐的工具主要包含的是自动化测试,但是我觉得现行的开发环节当中实际用到的会比较少.这里就推荐一下其他方面的优秀工具: 1. YSlow ...
- Linux 文件类型 ,文件权限
第一个字符段:文件类型.第二个组字符段又分为三段(每三个字符为一段不足用‘-’):文件属性. . drwxrwxrwx . -rwxr-xr-x 第一字符段: 第二字符组段依次为: - :普通文件 ...