我正在寻找一个开源工具/代码或一些指导来提取H.264编码比特序列的运动矢量(MV)。我已经知道运动矢量可以通过下面的命令使用ffmpeg来可视化:
ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
但是,我想生成一个日志文件,其中逐帧列出P和B帧的MV。我从libavutil/motion_vector.h查看了MVs的结构,但我找不到一个示例来说明它们是如何通过ffplay提取并覆盖原始序列的。我想,如果我能找出这一点,我可能会重新安排代码,将MVs提取到文本文件中。
我也尝试了this answer中给出的代码,但它似乎不适用于较新版本的ffmpeg:
我将感谢任何示例代码或提示。
发布于 2015-07-22 20:28:45
codecview视频过滤器的源代码是here,这就是你要找的吗?
编辑对不起,我想这不是很有帮助。您正在寻找的函数是filter_frame(),它向您展示了如何从给定的AVFrame读取AVMotionVectors (作为辅助数据),这是您的命令行示例中使用的代码。这个示例调用draw_arrow(),但您可以简单地将其替换为对printf()的调用,或者将MV信息记录到您选择的日志文件中的某个自定义函数。
https://stackoverflow.com/questions/31556421
复制相似问题