我正在尝试用ffmpeg + x264将视频从一组jpeg图像编码到x264。我以这样的方式插入AVCodecContext:
_outputCodec = avcodec_find_encoder(AV_CODEC_ID_H264);
_outputCodecContext = avcodec_alloc_context3(_outputCodec);
avcodec_get_context_defaults3(_outputCodecContext, _outputCodec);
_outputCodecContext->width = _currentWidth;
_outputCodecContext->height = _currentHeight;
_outputCodecContext->pix_fmt = AV_PIX_FMT_YUV420P;
_outputCodecContext->time_base.num = 1;
_outputCodecContext->time_base.den = 25;
_outputCodecContext->profile =FF_PROFILE_H264_BASELINE;
_outputCodecContext->level = 50;avcodec_open不返回错误,一切正常,但是当我调用avcodec_encode_video2()时,我得到这样的消息(我认为它来自x264):
using mv_range_thread = %d
%s
profile %s, level %s然后应用程序崩溃。当使用x264 &&时,My有更多必要的编解码上下文设置。
发布于 2014-02-21 01:58:08
如果没有完整版本的代码,就很难看出实际问题是什么。
首先,这里有一个将RGB帧编码为H264视频的FFMPEG库的工作示例:
http://www.imc-store.com.au/Articles.asp?ID=276
您可以通过使用CImage在JPG中加载RGB数据并将RGB数据传递给FFMPEG类来对H264视频进行编码,从而扩展此示例。
不过,在你的例子中有几点想法:
看一下链接的示例,我在VC++2010上测试了它,它运行得很好,您可以向它发送一个RGB数组。
https://stackoverflow.com/questions/14623614
复制相似问题