在我的程序中,我试图从某个 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->width
并ctx->height
在解码为正确的值之前(我知道图片的尺寸),那么它可以很好地解码。
但是我一直无法确定尺寸,因此我想知道我是否可以克服 -1 错误。
通过查看 FFMPEG 日志输出,任何人都可以建议我做些什么吗?