FFmpeg – это мощный мультимедийный редактор командной строки для Linux. Он позволяет записывать и обрабатывать аудио, создавать скринкасты и даже редактировать и кодировать видеофайлы с высоким битрейтом. Здесь мы покажем вам, как быстро обрезать видеофайлы с помощью FFmpeg
Обрезка начала и конца видеофайла
Одной из самых мощных функций FFmpeg является возможность быстрой обрезки сегментов аудио- и видеофайлов. Это позволяет удалять ненужные фрагменты из видео и даже автоматизировать процесс с помощью скриптов.
Перед тем как приступить к обрезке, убедитесь, что у вас есть резервная копия исходного видеофайла. В отличие от графических редакторов, FFmpeg не предоставляет возможности отмены ни одной из своих функций:
cp ~/my-video.mp4 ~/my-video-backup.mp4
Чтобы обрезать первые 30 секунд 5-минутного видеофайла, выполните следующую команду:
ffmpeg -ss 00:00:30 -to 00:05:00 -i my-video.mp4 -c copy my-video-trim.mp4
Вы также можете использовать этот синтаксис для обрезки в конце, а не в начале видеофайла. Используя тот же видеофайл, выполните следующую команду, чтобы удалить последние 30 секунд:
ffmpeg -ss 00:00:00 -to 00:04:30 -i my-video.mp4 -c copy my-video-trim.mp4
Помимо этого, данный синтаксис также поддерживает обрезку на обоих концах видео. Например, удаление первых и последних 30 секунд из 5-минутного видео будет выглядеть так:
ffmpeg -ss 00:00:30 -to 00:04:30 -i my-video.mp4 -c copy my-video-trim.mp4
После этого проверьте, правильно ли FFmpeg обрезал ваше видео, сравнив его с исходным файлом.
Вырезание короткого сегмента внутри видеофайла
FFmpeg также может выборочно вырезать сегменты внутри видеофайла. В графических редакторах для этого обычно требуется создать две отдельные вырезки и вручную соединить их на временной шкале видео.
Откройте видео в медиаплеере и определите точные временные метки для точек обрезания. В моем случае я хочу создать видеофайл, используя только кадры с 2:30 до 4:00 и с 7:45 до 8:30 оригинала.
Переведите временные метки из минут в секунды:
echo "00:02:30" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
Перейдите в каталог с видеофайлом и вставьте следующую команду:
ffmpeg -i my-video.mp4 \ -vf "select='between(t,FIRST-START-VALUE,FIRST-END-VALUE)+between(t,SECOND-START-VALUE,SECOND-END-VALUE)', setpts=N/FRAME_RATE/TB" \ -af "aselect='between(t,FIRST-START-VALUE,FIRST-END-VALUE)+between(t,SECOND-START-VALUE,SECOND-END-VALUE)', asetpts=N/SR/TB" \ my-video-cut.mp4
Замените значения «FIRST-START-VALUE» и «FIRST-END-VALUE» для флагов -vf
и -af
на значения для первой вырезки. В моем видео первая нарезка начинается на 150 секунде и заканчивается на 240.
Замените значения «SECOND-START-VALUE» и «SECOND-END-VALUE» на значение для второй нарезки, затем нажмите Enter, чтобы выполнить команду.
Примечание: Вы можете добавить дополнительные нарезки, скопировав функцию between()
на оба флага -vf
и -af
вместе со списком новых нарезок, разделенных запятыми.
Убедитесь, что ваше новое видео правильно нарезано, сравнив его с исходным файлом.
Разрезание видеофайла на однородные сегменты
Помимо разрезания и соединения клипов, вы можете использовать FFmpeg для разрезания и обрезки всего видео на короткие сегменты. Это может быть полезно, если у вас есть длинное видео, которое вы разбиваете на более мелкие клипы.
Перейдите в каталог с вашим длинным видео и выполните команду.
ffmpeg -i my-video.mp4 -c copy -map 0 -segment_time 00:10:00 -f segment -reset_timestamps 1 my-video-%03d.mp4
Замените значение «segment_time» на длину клипов. Например, вы можете установить значение «00:05:00», чтобы разделить длинное видео на 5-минутные сегменты.
Примечание: Эта команда попытается разделить видеофайл на основе ближайшего ключевого кадра к целевому времени сегмента. Поэтому в результате выполнения этой команды не всегда получаются идеально равномерные сегменты.
Комментарии (0)