AVFrame弃用了要重新获得的属性?

时间:2016-04-27 08:00:47

标签: c ffmpeg

我想打印出一些视频帧的属性:我已经研究过AVFrame结构,但只发现了以下失望:

attribute_deprecated short *    dct_coeff
attribute_deprecated uint32_t *     mb_type

在我看来,我感兴趣的一切已经过时了。顺便说一句,我没找到

int16_t(*[2]    motion_val )[2]
我捕获的实际帧中的

属性。我的问题是:如何才能访问dct_coeff或motion_vector或mb_type等属性?

1 个答案:

答案 0 :(得分:0)

请参阅av_frame_get_side_data (frame, AV_FRAME_DATA_MOTION_VECTORS )了解动态矢量。另外两个没有替代品。文档说明它们是mpeg特定的并且使用内部实现细节,这就是没有提供替换的原因。

(不要忘记设置avctx-> flags2 & AV_CODEC_FLAG2_EXPORT_MVS,否则不会导出。)

对于没有替换的两个,我知道如果你是这样的话,你可能需要这类信息。编写流分析器,但FFmpeg现在还没有提供流分析器级API。它们可以 - 如果有更通用的API - 显然可以作为单独的侧数据类型添加。如果你想要这样,你应该成为一名FFmpeg开发人员并开发更广泛的非特定于MPEG的API(例如,不使用mb_type的内部宏),甚至可能为其他编解码器实现它。在任何其他情况下,我真的不明白为什么你会想要这些信息。你能详细说明吗?