Як можна обрізати відео за допомогою ffmpeg?


172

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

Відповіді:


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

80х60

Щоб обрізати ділянку розміром 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, частина 2) залежно від вашої ffmpegзбірки. Додаткову інформацію див. У FFmpeg Wiki: Посібник з кодування відео H.264 .

  • Замість обрізання та повторного кодування розгляньте можливість обрізання під час відтворення. Це можливо з будь-яким гравцем, який варто використовувати.

  • Стародавні ffmpegзбірки використовуються -croptop, -cropbottom, -cropleft, -croprightваріанти натомість cropфільтра. Якщо це так для вас, тоді отримайте сучаснийffmpeg . Розробка дуже активна і немає підстав використовувати антикваріат.


2
Зараз це працює з 'avconv'.
Joce

У мене 1923x1080 і хочу 1920x1080. Це та похвала, яку я спробував: /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 - fork of ffmpeg
andrybak

1
варто згадати цю техніку (з cropфільтром) повторно кодує відео, див. stackoverflow.com/questions/33378548/…, якщо перекодування має значення для вас
abernier

1
редагується, щоб змінити застарілу -filter:vна більш сучасну та простішу набрати -vf. Ура!
Старійшина Гейк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.