c - AVFrame 弃用属性重新获得?

标签 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 等属性?

最佳答案

参见 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/

相关文章:

debugging - 解密 Xuggle/ffmpeg 错误(新手)

python - 从 Adob​​e Premiere/Encoder in Python 和 FFMPEG 中生成的 MP4 获取时间码

c - clang 选项的别名?

c++ - 哪些 C/C++ 函数最常被错误使用并可能导致缓冲区溢出?

c - 单片机上的uart软件阅读——代码理解

linux - 在 Ubuntu 12.04 上更新 ffmpeg;与标准存储库中的旧版本冲突

ffmpeg - 如何 "SAVE FOR WEB"JPG 图像

C - 无效指令 4

python - 扩展 Python : pre-load my C module

video - 使用 ffmpeg 将图像添加到视频中,无法播放输出文件