Создайте клип из видео с помощью FFMPEG

Создайте клип из видео с помощью FFMPEG

Я хочу сделать клип из видео с помощью 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

Это создаст своего рода трейлер из видео.

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

решение1

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

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

решение2

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

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

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. Но это должно дать вам желаемое видео.

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