Я хочу разделить видео на части, но не на равные части.
Я хочу, чтобы каждый клип был от 15 до 50 секунд. Но я хочу, чтобы длина каждого клипа была случайной (в пределах этого диапазона от 15 до 50 секунд).
Как это сделать с помощью ffmpeg в командной строке?
Это команда, которую я использовал для разделения видео на равные части.
ffmpeg -i lutherceleb.mp4 -acodec copy -f segment -vcodec copy -reset_timestamps 1 -map 0 OUTPUT%d.mp4
решение1
Это немного хакерски, но вы можете использовать любой скриптовый язык (например, 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
.