我想打印出视频帧的一些属性:我研究了 AVFrame 结构,但只发现了以下令人失望的地方:
attribute_deprecated short * dct_coeff
attribute_deprecated uint32_t * mb_type
在我看来,我感兴趣的一切都已经过时了。顺便说一句,我没有找到
int16_t(*[2] motion_val )[2]
我捕获的实际帧中的属性。我的问题是:我怎样才能访问帧的 dct_coeff 或 motion_vector 或 mb_type 等属性?
最佳答案
参见 av_frame_get_side_data
(frame,
AV_FRAME_DATA_MOTION_VECTORS
)
用于运动 vector 。其他两个没有替代品。文档指出它们是 mpeg 特定的并使用内部实现细节,这就是为什么没有提供替代品的原因。
(不要忘记设置 avctx->
flags2
&
AV_CODEC_FLAG2_EXPORT_MVS
,否则不导出。)
对于没有替代品的两个,我知道如果您是(例如),您可能需要此类信息。编写流分析器,但 FFmpeg 现在确实不提供流分析器级别的 API。如果有更通用的 API,它们显然可以作为单独的辅助数据类型添加。如果你想要那样,你可能应该成为一名 FFmpeg 开发人员并使用更广泛的非 MPEG 特定的 API(例如,不使用 mb_type 的内部宏),甚至可能为其他编解码器实现它。在任何其他情况下,我真的不明白您为什么需要该信息。能详细说说吗?
关于c - AVFrame 弃用属性重新获得?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36883792/