我正在使用ffmpeg和libx264对视频进行编码,我想在编码过程中提取每帧的DCT系数和运动矢量。
这样做的最佳方式是什么?
我在ffmpeg手册中读到了可以使用带有一些标志的调试模式来提取这些值的方法。我尝试ffmpeg -debug dct_coeff
输出dct系数,但这个选项对我不起作用;它是否已弃用或与特定的ffmpeg版本相关?
另一种选择是修改和重新编译ffmpeg源代码,但我不知道代码DCT和MV的哪一部分是在计算的。
任何有关调试模式或代码修改建议的帮助都将不胜感激。
答案 0 :(得分:0)
尝试多种选择:
- >使用x264源代码比ffmpeg要好得多,因为ffmpeg中的代码很复杂。您可以从here下载x264并查看encoder / me.c文件。它有几种块匹配算法,其中一种是根据编码设置选择的。从那里,搜索后,您可以获得MV_x和MV_y
- >使用airgistal建议的ffmpeg代码或使用ffplay / mplayer在解码时显示运动矢量,如下所示:
ffplay -flags2 +export_mvs input.mp4
- >您可以使用此现成的工具here
答案 1 :(得分:0)
VQEG团队针对H.264(link)的JMreference工具修改版本允许生成解码.264视频的xml跟踪文件。跟踪文件包含有关比特流的所有信息,包括运动矢量和每个像素的残差(从DCT变换获得)。