【发现一个问题】ffprobe的-show_packets,某个视频输出的帧的 duration 值为 1

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


首先找一个常规的视频,执行命令:

ffprobe -i regular.mp4 -show_packets -select_streams v -v quiet -print_format json

得到类似如下的信息:

        {
            "codec_type": "video",
            "stream_index": 0,
            "pts": 372372,
            "pts_time": "12.412400",
            "dts": 371371,
            "dts_time": "12.379033",
            "duration": 1001,
            "duration_time": "0.033367",
            "size": "23398",
            "pos": "18467967",
            "flags": "___"
        }

可是,某个奇怪的视频,使用 show_packets 输出如下:

        {
            "codec_type": "video",
            "stream_index": 0,
            "pts": 57850000,
            "pts_time": "57.850000",
            "dts": 57838888,
            "dts_time": "57.838888",
            "duration": 1,
            "duration_time": "0.000001",
            "size": "455",
            "pos": "81695829",
            "flags": "___"
        }

而使用 ffmpeg c api 读取 AVPacket 中的 duration 时,这个值又是对的。

暂未找到产生差距的原因。

posted on 2025-04-10 12:21  ahfuzhang  阅读(17)  评论(0)    收藏  举报