在我的程序中,我正在尝试从某个URL解码MPEG4流并且解码失败。奇怪的是,来自其他网址的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日志输出,任何人都可以建议我做些什么吗?
答案 0 :(得分:4)
文件是否有正确的VOL标头?如果没有,你将面临这个问题。 VOL标题具有高度和宽度。