0

当我为 wmv 文件调用 avformat_find_stream_info() 时,总是会看到以下消息:
[wmv3 00FAEAE0] Extra data: 8 bits left, value: 0

之后程序按预期工作,但无论如何我想知道该消息是什么意思?谢谢!

文件信息(通过 ffmpeg -i):

Duration: 00:00:06.92, start: 0.000000, bitrate: 1514 kb/s
Stream #0:0(rus): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 128 kb/s
Stream #0:1(rus): Video: wmv3 (Main) (WMV3 / 0x33564D57), yuv420p, 720x576, 1368 kb/s, SAR 16:15 DAR 4:3, 25 tbr, 1k tbn, 1k tbc

代码:

AVFormatContext*    pFormatCtx = avformat_alloc_context();
if (avformat_open_input(&pFormatCtx, "file.wmv", NULL, NULL) < 0)
    return 0;
if (avformat_find_stream_info(pFormatCtx, NULL) < 0) // HERE WE HAVE GOT THAT MESSAGE
    return 0;
4

1 回答 1

0

该消息由 libavcodec/vc1dec.c 在函数 vc1_decode_init() 中打印。该函数初始化 VC1/WMV3 解码器。此时,它解析了 WMV3 标头,并认为该文件具有存储在 extradata 中的序列标头;另外,高级序列头可以在第一帧之前;最后,extradata 的最后一个字节是版本号。

这种解释可能是不准确的,因为它是基于没有标点符号和大写的评论,就像 ee cummings 诗歌一样。

但是,纯粹从源代码来看,“该消息的含义”只是一个标头比预期的长一个字节,并且该字节的值为零。(正如一位智者所说,调试代码,而不是注释。)

于 2013-04-15T16:09:15.047 回答