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


101

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

159

Использоватьcrop filter:

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

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

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

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

original image
Оригинальное изображение 320х240

Пример 1

80x60

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

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • Аудиоstream copiedв этом примере, таким образом, избегается перекодирование.

Пример 2

bottom right quarter

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

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 pixels from the top, and 20 from the bottom

Обрежьте 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 filter documentation

  • Кодировщик по умолчанию для MP4libx264(Видео H.264) илиmpeg4(Видео MPEG-4 часть 2) в зависимости от вашегоffmpegстроить.УвидетьFFmpeg Wiki: H.264 Video Encoding Guideдля получения дополнительной информации.

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

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

+1

Теперь это работает с «avconv». 16 сен. 152015-09-16 13:52:11

  0

У меня 1923х1080 и хочу 1920х1080.Я рекомендовал эту рекомендацию: '/Users/kukodajanos/Рабочая область/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter: v" crop = 1920: 1080: 0: 0 "-c: копия/Users/kukodajanos/Desktop/video_640x480-4.mp4', но возвращается оригинальный фильм. 24 янв. 172017-01-24 16:18:47

  0

@Joce JFYI avconv является частью libav - ветки ffmpeg 12 май. 172017-05-12 10:37:38

+1

Стоит отметить, что этот метод (с фильтром 'crop') перекодирует видео, см. https://stackoverflow.com/questions/33378548/ffmpeg-crop-a-video-without-losing-the-quality, если для вас важна кодировка 14 окт. 172017-10-14 09:58:45

  0

отредактировано, чтобы заменить устаревший '-filter: v' на более современный и более простой для ввода' -vf'Ура! 15 дек. 172017-12-15 00:35:15

  0

Я получаю какой-то автоматический масштаб как-то.Я предполагаю, что это происходит с аспекта:/Например, когда я делаю «обрезать = 80: 60: 200: 100», мое окончательное видео заканчивается размером 97x60.Я попытался добавить setsar = 1: 1 рядом с кадрированием, но затем кажется, что его масштабируют перед кадрированием, поэтому окончательный размер составляет 80x60, но содержимое имеет неправильный аспект. 28 дек. 172017-12-28 23:53:08