Сегментация видео на части по X секунд с помощью ffmpeg

Сегментация видео на части по X секунд с помощью ffmpeg

У меня есть одно видео длительностью в одну минуту и ​​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

Связанный контент