Wie kann ich ein Video mit ffmpeg zuschneiden?


172

Ich habe eine MP4-Datei mit einer Bildschirmaufnahme, die ich zuschneiden muss. Wie kann ich dies erreichen, ohne teure Tools wie Adobe Premier oder Final Cut zu verwenden? Ich bevorzuge, ffmpegweil ich es vorher benutzt habe.

Antworten:


264

Verwenden Sie den cropFilter :

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

Wo die Optionen wie folgt sind:

  • out_w ist die Breite des Ausgaberechts
  • out_h ist die Höhe des Ausgaberechts
  • xund ygeben Sie die linke obere Ecke des Ausgaberechts an

Original Bild

Original Bild
Ursprüngliches Bild 320x240

Beispiel 1

80x60

So schneiden Sie einen 80 × 60-Abschnitt ab Position (200, 100) zu:

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • In diesem Beispiel wird das Audio per Stream kopiert , sodass eine Neucodierung vermieden wird.

Beispiel 2

rechtes unteres Viertel

So beschneiden Sie das untere rechte Viertel:

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

Dies ist dasselbe wie:

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

Welches ist das gleiche wie:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Sie können sich mit in_wund auf die Größe des Eingabebilds beziehen, in_hwie in diesem ersten Beispiel gezeigt. Die Ausgabebreite und -höhe kann auch mit out_wund verwendet werden out_h.

Beispiel 3

20 Pixel von oben und 20 Pixel von unten

Beschneide 20 Pixel von oben und 20 Pixel von unten:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Der Filter wird automatisch zentriert die Ernte , wenn xund yist wie in diesem Beispiel weggelassen.

Vorschau

Sie können eine Ernte (heh heh) nehmen und sie live in der Vorschau anzeigen mit ffplay:

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

Auf diese Weise können Sie experimentieren und den Zuschnitt anpassen, ohne ihn kodieren, anzeigen und wiederholen zu müssen.

Anmerkungen

  • crop Filterdokumentation

  • Der Standard-Encoder für MP4 ist libx264(H.264-Video) oder mpeg4(MPEG-4 Part 2-Video), abhängig von Ihrem ffmpegBuild. Weitere Informationen finden Sie im FFmpeg Wiki: H.264 Video Encoding Guide .

  • Anstatt das Format zu beschneiden und neu zu codieren, sollten Sie es bei der Wiedergabe beschneiden. Dies ist mit jedem Spieler möglich, der es wert ist, benutzt zu werden.

  • Antike ffmpegBuilds verwendet -croptop, -cropbottom, -cropleft, -croprightOptionen anstelle des cropFilters. Wenn dies bei Ihnen der Fall ist, holenffmpeg Sie sich ein modernes . Die Entwicklung ist sehr aktiv und es gibt keinen Grund, eine Antiquität zu verwenden.


2
Dies funktioniert jetzt mit 'avconv'.
Joce

Ich habe ein 1923x1080 und möchte 1920x1080. Dies ist die Empfehlung, die ich ausprobiert habe: /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.mp4aber der Originalfilm wird zurückgegeben.
János

@Joce JFYI avconv ist Teil von libav - eine Abzweigung von ffmpeg
andrybak

1
wert , diese Technik zu erwähnen (mit cropFilter) , um das Video erneut codiert, siehe stackoverflow.com/questions/33378548/... wenn Neucodierung Angelegenheiten für Sie
abernier

1
bearbeitet, um die veralteten zu ändern, die -filter:vaktueller und einfacher zu tippen sind -vf. Prost!
Elder Geek
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.