【问题标题】:FFMPEG: Remove packets based on PTS/DTSFFMPEG:基于 PTS/DTS 删除数据包
【发布时间】:2018-05-10 01:52:21
【问题描述】:

我有一个视频,其中包含超出视频数据末尾的一些音频数据包:

$> ffprobe -show_packets video.mp4
...
...
...
[PACKET]
codec_type=video
stream_index=0
pts=5653648
pts_time=235.568667
dts=5653648
dts_time=235.568667
duration=1001
duration_time=0.041708
convergence_duration=N/A
convergence_duration_time=N/A
size=1030
pos=25233684
flags=__
[/PACKET]
[PACKET]
codec_type=audio
stream_index=1
pts=11310080
pts_time=235.626667
dts=11310080
dts_time=235.626667
duration=1024
duration_time=0.021333
convergence_duration=N/A
convergence_duration_time=N/A
size=284
pos=25234714
flags=K_
[/PACKET]
[PACKET]
codec_type=audio
stream_index=1
pts=11311104
pts_time=235.648000
dts=11311104
dts_time=235.648000
duration=1024
duration_time=0.021333
convergence_duration=N/A
convergence_duration_time=N/A
size=285
pos=25234998
flags=K_
[/PACKET]
[PACKET]
codec_type=audio
stream_index=1
pts=11312128
pts_time=235.669333
dts=11312128
dts_time=235.669333
duration=992
duration_time=0.020667
convergence_duration=N/A
convergence_duration_time=N/A
size=290
pos=25235283
flags=K_
[/PACKET]
$>

视频中最后一个视频数据包的 PTS 时间为 235.568667,持续时间为 0.041708 - 这意味着所有视频数据都以 235.610375 结束。但是有音频数据包开始235.626667 及以后。

有没有一种简单的方法可以从文件中剥离这些音频数据包,以便音频和视频同时结束?

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    稍微不精确但通用的方法是设置一个复用器标志。

    ffmpeg -i input -c copy -fflags +shortest output
    

    这可能会导致更长的流中的数据包比可以容纳的少一到两个。

    如果您知道最短流的确切持续时间,您可以简单地限制更多数据包的解复用:

    ffmpeg -t 235.62666 -i input -c copy output
    

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 2015-11-05
      • 2020-06-14
      • 2022-01-24
      • 2019-02-17
      • 2020-09-15
      • 2012-11-15
      • 2014-04-19
      相关资源
      最近更新 更多