我正在学习如何使用 分割和合并视频ffmpeg
。目前我正在练习 799 KB MP4,one_through_ten-timestamped.mp4
,其中每一帧都有一个刻印的“帧号”(直到第 40 帧,刻印的帧号每隔一帧才会增加一次)。
我使用的命令是:
ffmpeg -f concat -i one_through_ten_edit_list.txt -c copy one_through_ten_edited.mp4
哪里one_through_ten_edit_list.txt
:
file one_through_ten-timestamped.mp4
inpoint 00:00:01.500
outpoint 00:00:05.000
file one_through_ten-timestamped.mp4
inpoint 00:00:09.500
outpoint 00:00:13.000
ffmpeg
当我在输出视频中执行此命令时出现了几个问题:
- 输出从源视频的开头开始,而不是 1.5 秒后。
- 第二个输入视频连接后的音频有延迟(在 QuickTime Player 上播放时。在 上播放没问题
ffplay
)。
当我在MPEG 流剪辑,生成的视频将按预期播放。以下是一些表格输出ffprobe
,one_through_ten-timestamped.mp4
显示了 ffmpeg 视频和 MPEG Streamclip 在连接点上的不同之处:
请注意,ffmpeg
MPEG Streamclip 和 MPEG Streamclip 处理第二段的方式大致相同,但ffmpeg
似乎不尊重inpoint
第一个输入视频。请注意,在我的 MP4 中,每帧有一个数据包。
ffmpeg
从 2.8 版(可能更早)到 3.3.3 版都是这样。我是不是漏掉了命令行或编辑列表选项?肯定有人已经成功地使用它ffmpeg
来分割和合并视频(无需重新压缩)。
答案1
您可以尝试添加-async 1
ffmpeg -f concat -async 1 -safe 0 -i one_through_ten_edit_list.txt -c copy one_through_ten_edited.mp4