ffmpeg Mpeg-4编码中的DCT系数和MV提取

DCT coefficients and MV extraction in ffmpeg Mpeg-4 encoding

我正在使用 ffmpeg 和 libx264 对视频进行编码,我想在编码过程中提取每一帧的 DCT 系数和运动矢量。

最好的方法是什么?

我在 ffmpeg 手册中读到可以使用带有一些标志的调试模式来提取这些值。我尝试 ffmpeg -debug dct_coeff 输出 dct 系数,但这个选项对我不起作用;它是否已弃用或与特定的 ffmpeg 版本相关?

另一种选择是修改并重新编译 ffmpeg 源代码,但我不知道在代码的哪一部分计算 DCT 和 MV。

任何有关调试模式或代码修改建议的帮助都将不胜感激。

多个选项可供尝试:

-->使用x264源代码比ffmpeg好很多,因为ffmpeg的代码比较复杂。您可以从 here 下载 x264 并查看 encoder/me.c 文件。它有几种块匹配算法,根据编码设置从中选择一种。从那里,搜索后,您可以获得 MV_x 和 MV_y

-->使用 aergistal 建议的 ffmpeg 代码或使用 ffplay/mplayer 在解码时显示运动矢量,如下所示:

ffplay -flags2 +export_mvs input.mp4

--> 你可以使用这个现成的工具here

VQEG 团队针对 H.264 (link) 的 JMreference 工具的修改版本允许生成 xml 跟踪文件解码 .264 视频。跟踪文件包含有关比特流的所有信息,包括运动矢量和每个像素的残差(从 DCT 变换获得)。