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:
Bei der Vorbereitung des Breitbilds bin ich auf eine alternative Methode gestoßen, die overlay
wie folgt verwendet wird. Gibt es so oder so einen Vorteil? Es scheint, als ob das overlay
langsamer 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
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?
Habe ich recht, wenn ich denke, dass ein Begriff wie [1:v:0]
in dem filter_complex
Ausdruck "zweiter Eingang, nur erste Videospur" bedeutet?
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
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.
Die stack
Filter 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.
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
[1:v:0]
... " bedeutet 'zweiter Eingang, nur erste Videospur'? " --> Ja.
Sieht gut aus. Die Eignung des tune
Wertes hängt vom Material ab.
hstack
habe, 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?-crf 16
dass 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 ?
Pham Don
Rory
Rory
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
Rory
Michael Liebmann