Я хочу сделать клип из видео с FFmpeg с 2-секундным видео каждые m минут, где

m = video_length / 5

Например, у меня есть видео длиной 10 минут. Видеоклип будет иметь общую длину 10 секунд (5 сегментов по 2 секунды) и будет состоять из следующих диапазонов меток времени видео:

00:00 - 00:02
02:00 - 02:02
04:00 - 04:02
06:00 - 06:02
08:00 - 08:02

Это будет производить своего рода трейлер из видео.

Я знаю, что могу добиться этого с помощью сегмента, но не могу понять весь процесс.

2 ответа2

4

Вы можете сделать это, используя фильтр выбора, за один раз

ffmpeg -i in.mp4
       -vf select='lt(mod(t,120),2)',setpts=N/FRAME_RATE/TB
       -af aselect='lt(mod(t,120),2)',asetpts=N/SR/TB
       out.mp4
0

Я знаю метод, который вы могли бы использовать. Хотя это немного грязно.

Извлеките клипы с помощью команды:

ffmpeg -i -ss <time to start> -t <duration> <output clip filename>

Вы извлекаете клипы в этом формате, где -ss - начало клипа, а -t - длительность клипа. После того, как вы извлечете их, вы можете объединить их вместе с:

ffmpeg -i concat:"clip_file1|clip_file2|clip_file3" -c copy <your output file>

Обратите внимание, что эта форма объединения не работает со всеми видеоформатами, и вам, возможно, придется добавить некоторые другие аргументы, такие как -bsf:a aac_adtstoasc для файлов MP4. Но это должно получить вам видео, которое вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .