代码之家  ›  专栏  ›  技术社区  ›  Vinay

ffprobe获取最后一个音频/视频包的pts

  •  1
  • Vinay  · 技术社区  · 7 年前

    mov 文件,我需要得到的结局 pts 用于音频和视频流。我可以通过(手动)执行以下操作来完成此操作:

    ffprobe -show_packets file.mov

    这给了我一个类似的输出(当然还有更多的数据包):

    [PACKET]
    codec_type=audio
    stream_index=0
    pts=221184
    pts_time=5.015510
    dts=221184
    dts_time=5.015510
    duration=580
    duration_time=0.013152
    convergence_duration=N/A
    convergence_duration_time=N/A
    size=304
    pos=4833575
    flags=K_
    [/PACKET]
    [PACKET]
    codec_type=video
    stream_index=1
    pts=29800
    pts_time=4.966667
    dts=29400
    dts_time=4.900000
    duration=200
    duration_time=0.033333
    convergence_duration=N/A
    convergence_duration_time=N/A
    size=20707
    pos=4837376
    flags=__
    [/PACKET]
    

    在上述场景中,结束点为 221764 30000 视频( pts + duration

    1 回复  |  直到 7 年前
        1
  •  5
  •   Gyan    7 年前

    跑

    ffprobe -v 0 -show_entries packet=pts,duration -of compact=p=0:nk=1 -read_intervals 999999 -select_streams v video.mp4  | tail -1
    

    这将以 118231200|3600 其中,第一个值是pts,第二个值是视频流的最后一个分组的持续时间。

    你只需要确定 -read_intervals ,以秒为单位,等于或大于文件的持续时间。 999999