FFMPEG 将视频分割成范围内的随机时长

FFMPEG 将视频分割成范围内的随机时长

我想将视频分成几部分,但不将其分成相等的部分。

我希望每个剪辑的时长在 15 到 50 秒之间。但我希望每个剪辑的长度都是随机的(在 15 到 50 秒的范围内)。

我如何在命令行中使用 ffmpeg 执行此操作?

这是我用来将视频分割成相等部分的命令

ffmpeg -i lutherceleb.mp4 -acodec copy -f segment -vcodec copy   -reset_timestamps 1 -map 0 OUTPUT%d.mp4

答案1

这有点 hacky,但您可以使用任何脚本语言(例如 Ruby)来生成随机的分段时间列表。只需更改总时长(此处为 150),然后将该脚本的输出分配给选项-segment_times

$ times=$(ruby -e 's=[]; d=0; while d < 150 do t=rand(15..50); s << (d+t); d=d+t end; puts s.join(",")')
$ echo $times
15,53,96,124,168
$ ffmpeg -i lutherceleb.mp4 -f segment -segment_times $times -c copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4

您可以缩短-acodec copy -vcodec copy-c copy

相关内容