【问题标题】:Extraction motion vectors from H.264 bitstream [closed]从 H.264 比特流中提取运动矢量 [关闭]
【发布时间】:2015-07-22 07:21:57
【问题描述】:

我正在寻找一种开源工具/代码或一些指导来提取 H.264 编码位序列的运动矢量 (MV)。我已经知道可以使用 ffmpeg 和以下命令来可视化运动矢量:

ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb

但是,我想生成一个日志文件,其中逐帧列出 P 和 B 帧的 MV。我从 libavutil/motion_vector.h 中检查了 MV 的结构,但我找不到一个示例来显示它们是如何被 ffplay 提取并覆盖在原始序列上的。我想如果我能找到它,我可能会重新安排代码以将 MV 提取到文本文件中。

我也尝试了this answer中给出的代码,但它似乎不适用于较新版本的ffmpeg:

如果有任何示例代码或提示,我将不胜感激。

【问题讨论】:

  • 寻求教程、工具和库对于 Stack Overflow 来说是题外话(请参阅 help center)。另请注意,ffplay source code 已获得 LGPL 许可,并且可用。
  • 他还要求提供代码/指导,因此提供一些代码示例会更有帮助。

标签: c ffmpeg h.264 video-processing


【解决方案1】:

codecview 视频过滤器的源代码是here,是你要找的吗?

[编辑] 抱歉,我想这不是很有帮助。您正在寻找的函数是filter_frame(),它向您展示了如何从给定的 AVFrame 读取 AVMotionVectors(作为辅助数据),这是您的命令行示例中使用的代码。此示例调用 draw_arrow(),但您可以简单地将其替换为调用 printf() 或一些将 MV 信息记录到您选择的日志文件的自定义函数。

【讨论】:

  • 您好,您能否提供更多关于我们如何在 MATLAB 中使用 AVMotionVectors 的详细信息。您的回答确实给出了一些提示,但我被阻止使用。如何在 Matlab 中得到这个。网上关于这方面的信息很少。
  • 我想问一个更详细的新问题,我不知道你想如何在 matlab 中输入数据,或者你到底被什么阻止了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 2013-11-07
  • 2011-08-18
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多