我正在尝试使用 ffmpeg 和AVSideData
API 从 h264 视频中提取运动矢量。我对格式有点困惑,因为有些细节没有得到很好的记录,我希望有人能确切地知道,因为我在很多地方都读到过一些相互矛盾的内容。
源块和目标块的位置是左上角坐标还是中心坐标?当我绘制运动矢量时,它们看起来像是中心坐标,但如果是这样,那么在块大小为偶数的情况下,我该如何计算块的大小?这会导致我在垂直轴或水平轴上截断像素。
第二个问题是 h264 支持半像素和四分之一像素 MV 位置,鉴于源点和目标点仅为整数,我该如何检测和处理这个问题?我是否需要使用 、 和 自己计算?motion_x
如果motion_y
是motion_scale
这样,那么为什么要包括源位置呢?
示例图片:
使用左上角坐标:
注意左上角的黑色边框
使用中心坐标: