ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7245|回复: 3

[Windows] ffmpeg编码时死机

[复制链接]
发表于 2016-12-26 15:00:50 | 显示全部楼层 |阅读模式
我使用ffmpeg库,编码视频帧时,偶尔就死在那里不动了,调试下发现是在avcodec_encode_video2()函数中死在那里了。
请教有碰到这个问题的吗?

似乎是我把编码模式调整为低延迟后才发生的:av_opt_set(c->priv_data, "tune", "zerolatency", 0);   (c为AVCodecContext*)

谢谢!

这个函数调用前,已经对编码器各个参数都初始化了。我把它们写进一个类了。

[C++] 纯文本查看 复制代码
void CVideoEncoder::EncodeOneFrame(unsigned char *frame_data)
{
	av_init_packet(&pkt);//初始化暂存容器  
	pkt.data = outbuf;
	pkt.size = yuv420img_size;

	read_yuv_image(picture, video_width, video_height, frame_data, pYuvBuff);//图像RGB数据向YUV数据的转换,函数代码在下面  

	cout << "Encoding frame no." << frame_number << " . . .  "  ;

	int go_output;
	int ret = avcodec_encode_video2(c, &pkt, picture, &go_output);
	picture->pts = frame_number;
	if (ret < 0) {
		fprintf(stderr, "error encoding frame\n");
		exit(1);
	}
	if (go_output) {
		cout << "Finished" <<  endl;
		fwrite(pkt.data, 1, pkt.size, video_fp);
		av_free_packet(&pkt);
	}
	else
	{
		cout << "no output" << endl;
	}

	frame_number++;

}


回复

使用道具 举报

发表于 2016-12-26 16:32:20 | 显示全部楼层
这个不是你这个方法的问题,很有可能是hang在了你的编码器里了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 10:01:33 | 显示全部楼层
意思是ffmpeg有bug?还是我怎么配置的不对呢?
回复 支持 反对

使用道具 举报

发表于 2016-12-27 11:02:21 | 显示全部楼层
pillarwang 发表于 2016-12-27 10:01
意思是ffmpeg有bug?还是我怎么配置的不对呢?

不是ffmpeg有bug,是可能你的编码器部分有bug,例如libx264 例如libx265之类的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2024-4-23 14:19 , Processed in 0.071384 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表