Wie kann ich ein Video mit ffmpeg zuschneiden?

Ich habe eine MP4-Datei 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 (1)

Verwenden Sie den cropFilter :

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

Wobei die Optionen wie folgt sind:

  • out_wist die Breite des Ausgaberechtecks
  • out_hist die Höhe des Ausgaberechtecks
  • xund ygeben Sie die obere linke Ecke des Ausgaberechtecks ​​an

Original Bild

Original Bild
Originalbild im Format 320 x 240

Beispiel 1

80x60

So beschneiden Sie einen 80×60-Abschnitt ausgehend von Position (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • Das Audio wird in diesem Beispiel als Stream kopiert , sodass eine erneute Codierung vermieden wird.

Beispiel 2

unteres rechtes 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

Was dasselbe ist wie:

ffmpeg -i in.mp4 -filter:v "crop=160:120:160:120" -c:a copy out.mp4
  • Sie können auf die Eingabebildgröße mit in_wund verweisen, 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 von unten

Beschneide 20 Pixel von oben und 20 von unten:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Der Filter zentriert den Ausschnitt automatisch, wenn xund yweggelassen werden, wie in diesem Beispiel.

Vorschau

Sie können einen Ausschnitt nehmen (heh heh) und 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 Ihren Zuschnitt anpassen, ohne codieren, anzeigen und wiederholen zu müssen.

Anmerkungen

  • cropDokumentation filtern

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

  • Anstatt zuzuschneiden und neu zu codieren, sollten Sie bei der Wiedergabe zuschneiden. Dies ist mit jedem Player möglich, der es wert ist, verwendet zu werden.

  • Antike ffmpegBuilds verwendeten die Optionen -croptop, -cropbottom, -cropleft, -croprightanstelle des cropFilters. Wenn dies bei Ihnen der Fall ist, dann besorgen Sie sich eine moderneffmpeg . Die Entwicklung ist sehr aktiv und es gibt keinen Grund, eine Antiquität zu verwenden.

Dies funktioniert jetzt mit 'avconv'.
Ich habe eine 1923x1080 und möchte 1920x1080. Dies ist der Kommentar, den ich versucht 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.
@Joce JFYI avconv ist Teil von libav – einer Gabelung von ffmpeg
Erwähnenswert ist, dass diese Technik (mit dem cropFilter) das Video neu codiert, siehe stackoverflow.com/questions/33378548/… , wenn die Neucodierung für Sie wichtig ist
bearbeitet, um das veraltete -filter:vin das aktuellere und einfacher zu tippende zu ändern -vf. Prost!
Irgendwie bekomme ich eine automatische Waage. Ich denke, es kommt vom Aspekt :/ Wenn ich zum Beispiel "crop=80:60:200:100" mache, hat mein endgültiges Video eine Größe von 97x60. Ich habe versucht, setsar=1:1 neben Crop hinzuzufügen, aber dann scheint es vor dem Crop zu skalieren, sodass die endgültige Größe 80 x 60 ist, aber der Inhalt ist der falsche Aspekt.
Wenn Sie versuchen, schwarze Balken um Ihr Video (Piallarbox, Letterbox, Windowbox usw.) zu entfernen, verwenden Sie cropdetectzuerst ffmpeg-Druckzuschneideparameter für Sie:ffmpeg.exe -i vid.mp4 -vf cropdetect out.mp4
Für diejenigen, die sich fragen, -vfist ein Alias ​​für -filter:v.
Wenn ich diese Lösung verwende, hat mein Ausgabevideo eine viel niedrigere Bitrate. Irgendeine Idee warum?
Sie können die Ausgabe-Audio/Video-Bitrate mit den richtigen Parametern anpassen. Bitte beziehen Sie sich auf diese Antwort, um ein Verfahren zu sehen: superuser.com/a/521684/83875 , im Grunde Sie " use the -b:v and -b:a options, respectively. You can use abbreviations like K for kBit/s and M for MBit/s.". Dank an @slhck.
Wenn Ihr Video lang ist, möchten Sie vielleicht ffmpeg eine Passage mit cropdetect abtasten lassen, um optimale Werte zu erhalten, bevor Sie codieren. Hier ist ein Beispiel, das den Crop-Wert für eine 14-minütige Passage erhält, die bei 33,5 Minuten im Video beginnt: ffmpeg -ss 00:33:30 -t 00:14:00 -i video.mp4 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | Schwanz -1
Dieser Erntefilter funktioniert großartig! Um den zum Zuschneiden eines Videos erforderlichen Begrenzungsrahmen zu bestimmen, habe ich einen Videoframe mit ffmpeg in ein Bild exportiert. Öffnen Sie dann das Bild mit GIMP, wo ich einen Begrenzungsrahmen für den Bereich zeichnen kann, in dem ich das Video zuschneiden wollte, und dann kann ich die X-, Y-, W- und H-Informationen aus dem Zeigerfenster abrufen. Fragen Sie nach, wenn dies nicht deutlich genug ist.
@GeppettvsD'Constanzo Sie könnten eine neue Frage stellen, wenn Ihnen ein bestimmter Teil nicht klar ist.
Wäre es möglich, das Video nur für eine bestimmte Dauer zuzuschneiden?
@Alex, sicher. Sie müssen nur die richtigen Parameter in die Befehlszeile einfügen. Weitere Informationen finden Sie in dieser Antwort: askubuntu.com/a/59388/9598
Grundsätzlich fügen Sie hinzu -ss 00:00:30, um den Punkt anzugeben, an dem der Schnitt beginnen soll, und -t 00:00:05um die gewünschte Dauer anzugeben.