Как я могу обрезать видео с помощью ffmpeg?

172

У меня есть файл MP4 записи экрана, который мне нужно обрезать. Как я могу сделать это без использования дорогих инструментов, таких как Adobe Premier или Final Cut? Я предпочитаю, ffmpegпотому что я использовал это раньше.

stephenwade
источник

Ответы:

264

Используйте cropфильтр :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Где варианты следующие:

  • out_w ширина выходного прямоугольника
  • out_h высота выходного прямоугольника
  • xи yукажите верхний левый угол выходного прямоугольника

Исходное изображение

исходное изображение
Оригинальное изображение 320x240

Пример 1

80x60

Чтобы обрезать секцию 80 × 60, начиная с позиции (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4

Пример 2

нижняя правая четверть

Чтобы обрезать нижнюю правую четверть:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

Это так же, как:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Который так же, как:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Вы можете сослаться на размер входного изображения с помощью in_wи, in_hкак показано в этом первом примере. Ширина и высота вывода также могут быть использованы с out_wи out_h.

Пример 3

20 пикселей сверху и 20 снизу

Обрежьте 20 пикселей сверху и 20 снизу:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Фильтр будет автоматически центрировать обрезку, если xи yопущены, как в этом примере.

Предварительный просмотр

Вы можете взять урожай (хе-хе) и просмотреть его вживую ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

Таким образом, вы можете экспериментировать и настраивать кадрирование без необходимости кодировать, просматривать, повторять.

Примечания

  • crop фильтрация документации

  • Кодировщик по умолчанию для MP4 - libx264(видео H.264) или mpeg4( видео MPEG-4 Part 2) в зависимости от вашей ffmpegсборки. См. FFmpeg Wiki: Руководство по кодированию видео H.264 для получения дополнительной информации.

  • Вместо обрезки и перекодирования рассмотрите обрезку при воспроизведении. Это возможно с любым игроком, который стоит использовать.

  • Древние ffmpegсборки используются -croptop, -cropbottom, -cropleft, -croprightварианты вместо этого cropфильтра. Если это так, то приобретите современноеffmpeg . Развитие очень активно и нет оснований использовать антиквариат.

Geppettvs D'Constanzo
источник
2
Теперь это работает с 'avconv'.
Хосе
У меня 1923х1080 и хочу 1920х1080. Это то, что я рекомендовал, /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4но оригинальный фильм возвращается.
Янош
@Joce JFYI avconv является частью libav - форка ffmpeg
andrybak
1
Стоит упомянуть, что этот метод (с cropфильтром) перекодирует видео, см. stackoverflow.com/questions/33378548/… если перекодировка имеет значение для вас
abernier
1
отредактировано, чтобы заменить устаревшее -filter:vна более современное и более простое для ввода -vf. Ура!
Старейшина Гик