ffmpeg zum Konvertieren und Zusammenführen von 3 Videos zu einem einzigen Breitbildvideo

Ich habe drei .mov-Dateien mit Video in Apple ProRes (apcn) und Audio in PCM S24 LE (in24), mit identischer Länge und Abmessungen (1920x1080), Bildrate (23,976024) und jeweils mit derselben Audiospur. Ich möchte:

  • Konvertieren in H.264-Video und AAC-Audio unter Beibehaltung sehr guter Qualität (für öffentliche Ausstellungen) und

  • Generieren Sie ein einzelnes Widescreen-Video in H.264/AAC, dh es wird 1920 Pixel mal 3 breit und 1080 Pixel hoch sein.

Zum Generieren des von mir ausgearbeiteten Breitbilds kann ich diesen Befehl verwenden, vorausgesetzt, ich habe die einzelnen mp4-Dateien vorbereitet:

ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4 
   -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" triple.mp4

Hauptfrage:

Sollte ich den Vorgang in zwei Schritten durchführen – (a) Dateien konvertieren, (b) Breitbilddatei erstellen – oder bedeutet das, dass das Breitbildvideo neu codiert wird und daher eine schlechtere Qualität aufweist? Ich möchte die separaten Dateien behalten. Wenn es also keine anderen Auswirkungen gibt, würde ich es vorziehen, dies in zwei Schritten zu tun. Wenn ich die Umstellung auf H.264 gleichzeitig mit dem Breitbild machen soll, wie kombiniere ich die verschiedenen Befehle?

Teilfragen:

  1. Bei der Vorbereitung des Breitbilds bin ich auf eine alternative Methode gestoßen, die overlaywie folgt verwendet wird. Gibt es so oder so einen Vorteil? Es scheint, als ob das overlaylangsamer sein sollte, aber beim Testen schien es ungefähr gleich zu sein.

    ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4 -filter_complex "[0:v:0]pad=iw*3:ih[bg]; [bg][1:v:0]overlay=w[leftcentre]; [leftcentre][2:v:0]overlay=w*2" triple.mp4

  2. Bei der Vorbereitung des Breitbilds wählt ffmpeg meiner Meinung nach das Audio aus nur einer der Eingabedateien aus. Da der Ton bei allen gleich ist, spielt es für mich keine Rolle, welcher. Ist das richtig oder kombiniert es sie irgendwie?

  3. Habe ich recht, wenn ich denke, dass ein Begriff wie [1:v:0]in dem filter_complexAusdruck "zweiter Eingang, nur erste Videospur" bedeutet?

  4. Hier ist mein Befehl zum Konvertieren der .mov-Dateien, der wie gewünscht zu funktionieren scheint. Ist daran offensichtlich irgendetwas falsch?

    ffmpeg -i left.mov -c:v libx264 -preset medium -tune film -crf 16 -c:a aac -b:a 256k left.mp4

Darf ich fragen wie dein Projekt läuft? Ich habe vor, dasselbe zu tun, aber ich weiß nicht, ob das, was ich tun möchte, funktionieren wird. Ich plane, zwei Osmo-Taschen zu verwenden und gleichzeitig zu klicken und eine auf der linken und eine auf der rechten Seite gleichzeitig aufzunehmen. Ich denke, es ist ziemlich ähnlich wie bei Ihnen, eine breitere Sichtweise zu haben. Darf ich fragen, ob du eine Probe von dir hast oder wie deine ausgefallen ist? Vielen Dank und ich hoffe, von allen zu hören
Hi! Das Projekt hat gut funktioniert, ich habe die ffmpeg-Befehle wie oben verwendet, um eine einzelne Breitbild-Filmdatei zu erstellen. Ich habe dies verwendet, um es mit einem Matrox TripleHead2Go auf drei Projektoren aufzuteilen.
fwiw Dies ist der Befehl, den ich letztendlich verwendet habe (glaube ich):ffmpeg -i 1920_LEFT.mov -i 1920_CENTRE.mov -i 1920_RIGHT.mov -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" -c:v libx264 -tune film -crf 16 -b:a 256k myOutputFile.mp4
Zu Ihrer Information, meine Quelle waren nicht mehrere Kameraaufnahmen, sondern mehrere Stunden Aufnahmen von einer Kamera, die zu einem Multi-Screen-Kunstwerk bearbeitet wurden, das mit drei Projektoren gleichzeitig projiziert werden sollte. Ich fügte die drei Videos zu einem einzigen Breitbildvideo zusammen, um sicherzustellen, dass sie beim Abspielen genau synchronisiert waren, da sie tagelang ununterbrochen in einer Galerieumgebung abgespielt wurden, in der niemand die Synchronisierung überprüfte. Daher haben wir einen Matrox TripleHead2Go verwendet, um das Breitbildvideo in drei separate, aber synchronisierte Ausgänge für die Projektoren aufzuteilen. Es gab nur einen Audiostream.
Das beantwortet die Frage nicht wirklich. Wenn Sie eine andere Frage haben, können Sie diese stellen, indem Sie auf Frage stellen klicken . Sie können auch ein Kopfgeld hinzufügen , um mehr Aufmerksamkeit auf diese Frage zu lenken, sobald Sie genug Ruf haben . - Aus Bewertung

Antworten (1)

In Bezug auf die Qualität ist es besser, die ursprünglichen MOVs zu verwenden, aber wenn das MP4-basierte Stapeln in Ordnung aussieht, ist dies der letzte Schiedsrichter.

ffmpeg -i left.mov -i centre.mov -i right.mov 
-filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3"
-c:v libx264 -tune film -crf 16 -b:a 256k triple.mp4

Bei der Verwendung der Originale spielt es keine Rolle, ob Sie dies in einem oder zwei Schritten tun. Aus Gründen der Rationalisierung würde ich es in zwei Schritten machen - dann konkurrieren die beiden Codierungen nicht um Speicher oder CPU.

  1. Die stackFilter sind etwas effizienter. Sie erfordern, dass alle Eingaben dieselbe Größe in der Dimension senkrecht zur Verbindungsrichtung haben, dh dieselbe Höhe für hstack. Overlay ist ein generischer Filter, also nicht. Außerdem frieren Stack-Filter beim ersten und letzten Frame von Eingaben ein, die spät beginnen oder früh enden.

  2. In digitalen Dateien sind Audio und Video unabhängig, dh sie existieren in derselben Datei und werden über Zeitstempel synchronisiert, aber logischerweise sind sie unterschiedliche Einheiten. ffmpeg verlässt sich auf -map-Optionen, um Streams für die Aufnahme in die Ausgabe auszuwählen. In Ermangelung einer -map-Option wählt es ein Audio - das "beste" - aus allen Eingängen aus. Siehe https://ffmpeg.org/ffmpeg.html#Stream-Auswahl

  3. [1:v:0]... " bedeutet 'zweiter Eingang, nur erste Videospur'? " --> Ja.

  4. Sieht gut aus. Die Eignung des tuneWertes hängt vom Material ab.

Vielen Dank! Ich habe dies gerade in zwei Schritten gemacht, indem ich .mp4-Dateien erstellt und sie dann verwendet hstackhabe, um eine .mp4-Datei mit dreifacher Breite zu erstellen. Ich bin überrascht zu sehen, dass die Dateigröße für die Datei mit dreifacher Breite kleiner ist als für jede einzelne .mp4-Datei! Bitrate Viewer zeigt mir, dass die Datei mit dreifacher Breite eine deutlich niedrigere Bitrate hat (durchschnittlich 12 Mbit / s statt 18 Mbit / s), obwohl sie dreimal so breit ist. Wird mit einigen Standardeinstellungen neu codiert und muss ich einige Argumente verwenden, um die Qualitätsstufe dieser Neucodierung zu steuern?
Nur um das klarzustellen: Hast du MP4 oder MOVs als Quelle für das Stacking verwendet?
Ich habe die .mp4s verwendet. Werde es stattdessen mit den .mov-Dateien machen.
Kleiner Nachtrag: Wenn ich entschieden habe, -crf 16dass meine individuellen 1920 x 1080 .mp4-Dateien eine geeignete Qualität bieten, sollte ich diese weiterhin zum Erstellen meiner gestapelten Breitbild-.mp4 verwenden oder muss ich diesen Wert verringern, um die gleiche Qualität in einer 5760 x 1080-Datei zu erhalten ?
Je höher die Auflösung, desto entspannter kann CRF sein (bis zu einem gewissen Punkt), aber es hört sich so an, als würden Sie das gegenteilige Ergebnis erzielen. Schauen Sie nicht auf die Dateigröße, machen Sie eine subjektive Überprüfung.