FFmpeg长时间无响应的解决方法

原创 2016年08月30日 15:40:02

需要解决的问题

1、FFmpeg去连接的时候相机不在线导致avformat_open_input等函数一直死等,造成程序卡死

2、av_read_frame的过程中相机断开连接导致读取码流一直死等

解决方法

打开流媒体之前注册FFmpeg回调函数


int CffmpegUIDlg::interrupt_cb(void *ctx) 
{ 
	CffmpegUIDlg *pThis = (CffmpegUIDlg *)ctx;
	if((av_gettime() - pThis->dwLastFrameRealtime) > 100 * 1000 * 1000){//100s超时退出
		printf("主码流断开");
		return AVERROR_EOF;
	}
	return 0;
} 



pFormatCtx = avformat_alloc_context();

	pFormatCtx->interrupt_callback.opaque = pMainDlg; //C++
	pFormatCtx->interrupt_callback.callback = interrupt_cb;//设置回调函数,否则有可能ffmpeg一直被挂住。 
	AVDictionary* options = nullptr; 
	av_dict_set(&options, "rtsp_transport", "tcp", 0);  //以udp方式打开,如果以tcp方式打开将udp替换为tcp
	av_dict_set(&options, "stimeout", "3000000", 0);  //设置超时断开连接时间

	//打开视频文件
	int nRet = avformat_open_input(&pFormatCtx, filename, NULL, &options);
	if (nRet != 0)
	{
		printf("av open input file failed!\n");
		exit(1);
	}
	if(options != nullptr){
		av_dict_free(&options);
	}


版权声明:本文为博主原创文章,未经博主允许不得转载。

ffmpeg连接超时与解码超时

ffmpeg超时时间应该有两个,连接超时时间和解码超时时间
  • jacke121
  • jacke121
  • 2017年01月14日 18:03
  • 2209

使用ffmpeg的av_read_frame,如何控制连接超时

使用ffmpeg的av_read_frame,如何控制连接超时: http://www.cnblogs.com/pengkunfan/p/3516771.html?utm_source=tuicoo...
  • hyz5525
  • hyz5525
  • 2016年02月29日 13:26
  • 2789

ffmpeg设置tcp,连接时间,解码格式

pFormatCtx = avformat_alloc_context(); AVDictionary* options = NULL; av_dict_set(&options, "rtsp...
  • jacke121
  • jacke121
  • 2017年01月14日 18:00
  • 1465

FFmpeg长时间无响应的解决方法

ffmpeg读取rtsp码流阻塞的解决方法 相机不在线、相机断开连接ffmpeg卡死的解决方法...
  • zhouyongku
  • zhouyongku
  • 2015年04月10日 14:09
  • 4532

FFmpeg长时间无响应的解决方法

需要解决的问题 1、FFmpeg去连接的时候相机不在线导致avformat_open_input等函数一直死等,造成程序卡死 2、av_read_frame的过程中相机断开连接导致读取码流...
  • sunxiaopengsun
  • sunxiaopengsun
  • 2017年02月23日 16:37
  • 743

ffmpeg设置avformat_open_input( )超时 -stimeout

ffmpeg用avformat_open_input()解析网络流时,默认是阻塞的。 当遇到解析错误的网络流时,会导致该函数长时间不返回。 为此可以设置ffmpeg的-stimeout 的...
  • zqf_office
  • zqf_office
  • 2016年03月12日 10:03
  • 1295

ffmpeg 时间戳问题汇总

ffmpeg 时间戳问题汇总   http://www.cnblogs.com/loveclover/archive/2011/03/23/1993065.html 问题是这样的 用一个 V...
  • chenchong_219
  • chenchong_219
  • 2013年10月26日 22:52
  • 20932

avformat_open_input超时问题

fmpeg用avformat_open_input()解析网络流时,默认是阻塞的。 当遇到解析错误的网络流时,会导致该函数长时间不返回。 为此可以设置ffmpeg的-stimeout 的参...
  • qq_16844001
  • qq_16844001
  • 2016年10月28日 18:37
  • 1474

ffmpeg avformat_open_input返回失败的解决办法

很多朋友在使用新版本的ffmpeg时,都遇到了avformat_open_input返回失败的问题。 在下也遇到了此问题。在stackoverflow上搜了一下,解决方法如下。 在调用av...
  • crazycoder8848
  • crazycoder8848
  • 2014年02月21日 14:10
  • 14332

开始写博客!!今天第一个:FFmpeg解码网络rtsp流的一般流程和这几天遇到的问题,尤其是avformat_input_open解析错误的网络串流长时间不返回!

AVFormatContext* m_pFormatCtx;   AVCodecContext * m_pCodecCtx;    AVCodec* m_pCodec;  ...
  • Peter_Hugh
  • Peter_Hugh
  • 2014年09月26日 17:16
  • 2421
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FFmpeg长时间无响应的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)