FFmpeg在不解码视频的情况下获取运动矢量

2024-05-13 19:47:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想访问h264视频流的运动矢量,而不解码视频。我知道这会显示视频和运动矢量:

ffplay -i myvideo.avi -flags2 +export_mvs -vf codecview=mv=pf+bf+bb

如何避免解码整个视频以节省CPU?我想这样做的原因是我需要用Python解析这些数据

编辑 我尝试将ffprobe

ffprobe -i my_video.mp4 -flags2 +export_mvs -print_format json -show_frames

它打印了许多信息:

  {
            "media_type": "video",
            "stream_index": 0,
            "key_frame": 0,
            "pkt_pts": 2513990,
            "pkt_pts_time": "27.933222",
            "pkt_dts": 2510990,
            "pkt_dts_time": "27.899889",
            "best_effort_timestamp": 2513990,
            "best_effort_timestamp_time": "27.933222",
            "pkt_duration": 3000,
            "pkt_duration_time": "0.033333",
            "pkt_pos": "1157994",
            "pkt_size": "262",
            "width": 1280,
            "height": 720,
            "pix_fmt": "yuvj420p",
            "sample_aspect_ratio": "1:1",
            "pict_type": "P",
            "coded_picture_number": 559,
            "display_picture_number": 0,
            "interlaced_frame": 0,
            "top_field_first": 0,
            "repeat_pict": 0,
            "color_range": "pc",
            "color_space": "bt709",
            "color_primaries": "bt709",
            "color_transfer": "bt709",
            "chroma_location": "left",
            "side_data_list": [
                {
                    "side_data_type": "Motion vectors"
                }
            ]
        },

正如您所看到的,Motion vectorsside_data_type中提到。我如何打印它们? 我试过了

ffprobe -i my_video.mp4 -flags2 +export_mvs -print_format json -show_frames -show_entries side_data="Motion vectors" 

但它似乎没有添加任何信息。我可以将"Motion vectors" 更改为任何其他值而不会出现错误,因此我猜这不是指向正确数据的


Tags: data视频timevideotypeshowexportside