使用 ffmpeg 将视频分割成 X 秒的部分

使用 ffmpeg 将视频分割成 X 秒的部分

我有一个视频,时长为 1 分 35 秒。我可以将其分割成多个 30 秒的片段(我完全了解分割视频的其他方法,但出于特殊原因选择了这种方法)。但是,这会产生 3 个视频,时长为 30 秒,以及一个视频,时长为 5 秒。消除少于 15 秒的落后视频并附加到片段的最佳方法是什么?

分割成片段

ffmpeg -i test.mp4 -codec:v copy -codec:a copy -segment_time 30 test-%03d.mp4

期间

ffprobe -i test.mp4 -show_format -v quiet | grep '.=.'

答案1

ffmpeg 本身无法做到这一点。您必须自己计算出单个片段的持续时间,因为没有办法指定最短持续时间。

为此,您可能需要对视频的总长度进行两次迭代。在第一次迭代中,确定片段的长度。如果您发现最后一个片段短于 15 秒,则只需调整倒数第二个片段的长度即可。这可以通过脚本语言轻松完成。

一旦你有了这个,你需要告诉segment复用器各个片段的持续时间:

-segment_times 0,30,60,80

相关内容