4

在我的程序中,我试图从某个 url 解码 MPEG4 流,但解码失败。奇怪的是,来自其他 url 的 MPEG4 流被解码得很好,所以这不是没有编解码器的问题。

这是我的解码方式:

1)找到解码器:

   AVCodec* codec = avcodec_find_decoder(CODEC_ID_MPEG4);

2)分配上下文

 ACodecContext* ctx = avcodec_alloc_context3(0);

3) 打开编解码器

avcodec_open2(ctx, codec, 0) // it returns > 0, fine 

4)解码一个数据包(我有)

   avcodec_decode_video2(ctx, frame, &decoded, &packet);

现在avcodec_decode_video2返回失败-1并打印 FFMPEG 日志:

图片大小 0x0 无效 get_buffer() 失败 (-1 0 0x0)

如果我手动设置ctx->widthctx->height在解码为正确的值之前(我知道图片的尺寸),那么它可以很好地解码。

但是我一直无法确定尺寸,因此我想知道我是否可以克服 -1 错误。

通过查看 FFMPEG 日志输出,任何人都可以建议我做些什么吗?

4

1 回答 1

4

该文件是否有正确的 VOL 标头?如果没有,您将面临这个问题。VOL 标头具有高度和宽度。

于 2012-10-05T18:26:52.950 回答