我有一段视频,其中包含视频数据末尾以外的一些音频包:
$> 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和更高版本。
有没有一种简单的方法从文件中剥离这些音频包,以便音频和视频同时结束?
发布于 2018-05-09 17:52:21
要做到这一点,稍微有点不精确,但一般的方法是设置一个muxer标志。
ffmpeg -i input -c copy -fflags +shortest output这可能导致在较长的流中比所能容纳的分组少一个或两个。
如果您知道最短流的确切持续时间,您可以简单地限制进一步数据包的拆分:
ffmpeg -t 235.62666 -i input -c copy outputhttps://stackoverflow.com/questions/50259011
复制相似问题