我知道可以通过首先设置标志
从h264编码的通道中提取运动矢量av_dict_set(&opts, "flags2", "+export_mvs", 0);
然后你可以通过这个来查询运动矢量的侧面数据
sd = av_frame_get_side_data(frame, AV_FRAME_DATA_MOTION_VECTORS);
当我在线查看您是否可以使用HEVC编码视频执行类似操作时,我无法找到任何信息。我发现的全部是" AV_FRAME_DATA_MOTION_VECTORS"
的定义某些编解码器导出的运动矢量(按需通过 在libavcodec AVCodecContext flags2选项中设置export_mvs标志。
数据是在中定义的AVMotionVector结构 libavutil / motion_vector.h。
但是没有关于哪些编解码器确切地导出此运动矢量信息的信息。我怎么去发现这个?
答案 0 :(得分:1)
如果我没弄错,h264是打印动态估计矢量的唯一编解码器。
我建议您尝试使用视频过滤器mestimate。
另外,如果你想在ffmpeg中有更好的想法,请检查 libavcodec / mpegvideo.c中的 ff_print_debug_info2 功能。 强>