Ich habe eine 5.1-Audiospur aus einem Film, in der vorne links und vorne rechts Musik und in der Mitte Dialoge enthalten sind. Das Spielen der 5.1-Spur in VLC fügt alles gut zusammen.
Ich versuche, die 5.1-Spur mit Stereo zu konvertieren ffmpeg -ac 2
, aber der resultierende Stereomix hat eine viel geringere Lautstärke als die native Wiedergabe der 5.1-Spur.
Das Hinzufügen -af "pan=stereo|c0=FL|c1=FR"
ergibt die richtige Lautstärke, es wird jedoch kein Dialog angezeigt, da der Center-Kanal nicht enthalten ist.
Die Lösung besteht also vielleicht darin, Links / Mitte / Rechts in Stereo zu mischen und die Back-End-Subwoofer-Kanäle auszuschalten. (Ich vermute hier ...)
Die Frage ist also: Wie mache ich ffmpeg downmix 5.1 auf Stereo so, wie es VLC macht, mit der gleichen Lautstärke im Endergebnis?
-ac 2
. Daher frage ich mich, wie ffmpeg das gleiche gute Ergebnis wie VLC erzielen kann.Antworten:
Ich fand die Antwort, die Shane lieferte, um zu wenig von den anderen Kanälen und zu viel von der Mitte zur Verfügung zu stellen. Filme mit Kopfhörern klangen aus dem Gleichgewicht, mit allen Dialogen und nicht genügend Hintergrundmusik / -effekten.
Gemäß den ATSC-Standards (Abschnitt 7.8, Seite 91) wird die folgende Formel verwendet, um 5.1 auf konventionelles Stereo herunterzumischen (im Gegensatz zu Matrix):
clev und slev sollten laut den Tabellen 5.9 und 5.10 im oben genannten Dokument 0,707 betragen, unter der Annahme eines Center / Surround-Mischungspegels von 0. Andere Werte sind in den Tabellen angegeben, die die Menge der Center-Mischung verringern, die ich nicht finde nützlich.
In diesem Sinne erzeugt die folgende ffmpeg-Option einen ausgewogenen Klang mit hörbarem Dialog. Beachten Sie, dass die Angabe der Audiokanäle nicht erforderlich ist.
Ein Hinweis zur Verwendung des Symbols " Kleiner als" aus der Dokumentation des Schwenkfilters :
quelle
ac -2
Schalter implementiert wurde . Mit anderen Worten, der einzige Unterschied zwischen der Verwendung dieses Filters und dem Ausführenac -2
besteht darin, viel mehr zu tippen.Die Antworten auf diese Frage sind inzwischen ein bisschen chaotisch geworden, wobei viele redundante Informationen und andere vollständige Ungenauigkeiten enthalten. Diese Antwort ist ein Versuch, die Informationen in diesen Antworten zu rationalisieren, während die darin enthaltenen Probleme beseitigt werden.
Am wichtigsten ist, dass Gregors Antwort, die derzeit am häufigsten gestellte Antwort auf diese Frage, nicht anders ist als die Verwendung des
-ac 2
Schalters - mehr dazu weiter unten.Downmixen eines 5.1-Kanal-Audiostreams auf Stereo mit
-ac 2
FFmpeg verfügt über integrierte Funktionen zum Downmixen einer 5.1-Spur auf Stereo. Dies ist auch die Lösung, die in der FFmpeg-eigenen Dokumentation empfohlen wird :
Der
-ac 2
Schalter mischt die Anteile der ersten 5 Kanäle aus dem 6-Kanal-Stream der Quelle - Back Left, Back Right, Front Left, Front Right und Front Center - in die Kanäle Front Left und Front Right des Stereo-Ausgangsstreams:Wenn Sie diese Option verwenden , wird Audio vom LFE-Kanal ( .1 in 5.1, reserviert für den Subwoofer und für tiefe Niederfrequenzeffekte) vollständig verworfen .
Leider
-ac 2
ergaben sich bei meinen Tests die unterschiedlichsten Gesamtpegel für Musik und Dialoge, sodass es sich um die Downmix-Formel handelt, die die schlechteste Ausgabe aller von mir getesteten Formeln liefert, obwohl Sie sie möglicherweise testen und feststellen können gibt Ihnen einen vollkommen angemessenen Downmix für Ihre Bedürfnisse, in welchem Fall die Verwendung einer anderen Formel für Sie übertrieben wäre.So mischen Sie einen DTS-Track herunter,
-ac 2
ohne ihn zu transkodieren (dh Codec und Erweiterung bleiben unverändert):Wie von Mephisto in seiner Antwort hervorgehoben, können Sie den Stream heruntermischen und gleichzeitig die Lautstärke erhöhen, wenn der Dialog und die Musik für Sie ausgewogen sind, aber nur eine geringe Lautstärke aufweisen:
Für den
-vol
Switch entspricht 100% Lautstärke in der Quelle dem ganzzahligen Wert 256, und wenn Sie einen größeren Wert als diesen verwenden, wird die Gesamtlautstärke des Audiostreams erhöht. Beachten Sie jedoch, dass zu viel zu Verzerrungen oder Artefakten führen kann, insbesondere in den lauteren Bereichen.So mischen Sie einen Audiostream auf Stereo herunter und codieren ihn in den AC3-Codec:
Heruntermischen eines 5.1-Kanal-Audio-Streams auf Stereo mit einem benutzerdefinierten Mix-Algorithmus
Wenn Sie einen Downmix mit höherer Qualität wünschen oder den LFE-Stream unbedingt in Ihre Ausgabe einbeziehen müssen, können Sie den Audio-Filter-Schalter (
-af
) von FFmpeg verwenden, um das Audio mithilfe einer benutzerdefinierten Mischformel herunterzumischen.Downmix mit der ATSC-Formel (Gregorys Antwort)
Zum Zeitpunkt der Veröffentlichung dieser Antwort lautete die am häufigsten gestimmte Antwort auf diese Frage Gregorys , mit der die Formel aus der ATSC-Spezifikation (siehe Abschnitt 7.8.2, Downmixing in zwei Kanäle ) in einen FFmpeg-Audiofilter eingefügt wurde . Diese Spezifikation ist direkt mit der FFmpeg-Dokumentation zu diesem Thema verknüpft , was darauf hindeutet, dass es sich höchstwahrscheinlich um dieselbe Formel handelt, die FFmpeg bereits für seinen
-ac 2
Switch implementiert . Wenn dies zutrifft, ist es keine-ac 2
Zeitverschwendung , die gesamte Formel in Gregorys Antwort einzutippen .Ich habe mich entschlossen, dies mit Sicherheit zu testen, indem ich denselben Audioeingang mit beiden
-ac 2
und dem-af
Filter aus Gregorys Antwort neu codierte (die genauen verwendeten Befehle können den Fußnoten zu dieser Antwort entnommen werden).Ich habe dann die Größen der resultierenden Ausgabedateien verglichen und festgestellt, dass sie Byte für Byte dieselbe Größe haben:
Schließlich habe ich beide Ausgabedateien in Audacity geöffnet und ihre Wellenformen verglichen, um zu bestätigen, dass sie identisch sind (zum Vergrößern klicken):
Es scheint daher ziemlich schlüssig, dass die in Gregorys Antwort beschriebene ATSC-Formel die gleiche ist, die bereits von FFmpeg implementiert wurde , und dass ihre Verwendung völlig überflüssig ist, wenn sie nichts
-ac 2
tut, was nicht der Fall ist, und ein viel umständlicherer Befehl ist.Downmixing ohne Verwerfen des LFE-Kanals (Antwort von Dave_750)
Dies ist die einzige der in den Antworten enthaltenen Downmix-Formeln, die den LFE-Kanal in das Stereo-Ausgangssignal zu mischen scheint, anstatt ihn vollständig zu verwerfen. Infolgedessen ist dies diejenige, die den geringsten Klang von der Quelle sicherstellt hat verloren.
Der Gesamtlautstärkepegel ist höher und voller
-ac 2
als der darunter liegende Nightmode-Dialog-Downmix. Musikpegel sind jedoch viel näher an der Quelle als der Nightmode Dialogue-Downmix, und aufgrund der Einbeziehung der LFE-Spur kann durch Erhöhen der Lautstärke der Ausgabe bei Verwendung dieser Downmix-Formel ein Ausgabestream erzeugt werden, der für die 5.1-Quelle besser geeignet ist als für alle anderen Formeln, die ich getestet habe.Wenn Sie die Möglichkeit haben, würde ich Ihnen dringend empfehlen, Ihre Audiostreams sowohl mit dieser Downmix-Formel als auch mit dem Nightmode-Dialog-Downmix zu codieren und die Wellenformen der beiden sorgfältig zu vergleichen, um festzustellen, welche besser ist.
So mischen Sie eine 5.1-Spur mit dieser Formel auf Stereo herunter und erhöhen den Lautstärkepegel auf 425 (wobei 256 100% des Lautstärkepegels der Originalquelle entspricht):
Downmixing mit Robert Colliers Nightmode-Dialog (Shane Harrelsons Antwort)
Die von Robert Collier im Doom9- Forum erstellte und von Shane Harrelson in seiner Antwort erwähnte Nightmode-Dialogformel führt zu einem weitaus besseren Downmix als der
-ac 2
Schalter. Statt übermäßig leiser Dialoge werden sie auf Ebenen zurückgebracht, die viel näher an denen von Doom9 liegen Quelle.Aus Robert Colliers Beschreibung der Mischung:
Leider ist die Musik dieser Downmix-Formel viel leiser als in der 5.1-Quelle (was aufgrund der Absicht von Collier, einen "Nightmode" -Mix zu erstellen, beabsichtigt war) und aufgrund des vollständigen Verlusts der LFE-Spur nicht der gesamte Audioausgang Klang so voll oder quellnah wie Dave_750's Formel mit erhöhter Lautstärke .
Wenn Sie jedoch aus irgendeinem Grund vermeiden möchten, die Gesamtlautstärke des Streams zu erhöhen, ist der Nachtmodus-Dialog wahrscheinlich die beste Option. Auch hier würde ich dringend empfehlen, Ihren Audiostream für beide zu codieren und die Wellenformen der beiden sorgfältig zu vergleichen .
So mischen Sie mit der Nightmode-Dialogformel in FFmpeg herunter:
Tarcs Antwort
Diese Antwort setzt einfach die Nightmode Dialogue-Downmix-Formel aus Shane Harrelsons Antwort in einen Befehl zum Konvertieren des Audiostreams in einen MKV-Container um. Während der in dieser Antwort gegebene Befehl in einem solchen Audiostream gut funktionieren würde, würde das Anpassen für eine eigenständige Audiospur den Fehler ergeben:
Dies liegt daran, dass der Audiocodec beim Downmixen nicht kopiert werden kann. Wie alle anderen Änderungen, die FFmpeg an einem Ausgabestream vornimmt, erfordert auch ein Downmix , dass die Spur neu codiert wird, damit die Änderungen übernommen werden.
Dieser Befehl enthielt auch einen redundanten
-ac 2
Schalter, den FFmpeg ignoriert hätte.Testbefehle
Um die Zuverlässigkeit der Tests zu demonstrieren, die ich für diese Antwort durchgeführt habe, sind nachfolgend alle Befehle aufgeführt, die ich zum Testen der einzelnen Downmix-Formeln verwendet habe.
Der für die
-ac 2
Option verwendete Testbefehl:Der Testbefehl für Gregorys Antwort:
Der Testbefehl für die Antwort von Dave_750:
Der Testbefehl für Shane Harrelsons Antwort:
quelle
-ac 2
ergab sich für mich zunächst ein schlechteres Ergebnis, das zum ursprünglichen Posting führte. Ich werde es noch einmal versuchen und, wenn möglich, einen 5.1-Auszug veröffentlichen, der mit dem eingebauten Down-Mix kein zufriedenstellendes Ergebnis liefert. Auch sehr schön zu wissen, dass man ohne Umcodierung runtermischen kann!ac -2
Option ergab auch das schlechteste Ergebnis aller Downmix-Formeln. Ich denke, dies ist nur ein Versagen der ATSC-Standardformel.ffmpeg -i 5.1.mp4 -ac 2 2.mp4
funktioniert, aberffplay -i 5.1.mp4 -ac 2
nicht.Versuchen Sie diesen Downmix:
wie von Robert Collier im Doom9-Forum vorgeschlagen.
quelle
Indem Sie @Shane Harrelson's mit @Jordan Harris ' Antwort auf eine andere Frage kombinieren - und dabei den Lazy-Modus aktivieren - finden Sie hier die Informationen , die zum Konvertieren von
input_51.mkv
(5.1) inoutput_stereo.mkv
(Stereo) erforderlich sind :Der
-c:v copy
Teil bedeutet , dass der Videostrom nicht berührt wird (ich glaube , dass die v ideo c ODEC Einstellungen wird cop IED). Ohne es wird es viel länger dauern. Das Wiederholen der obigen Antwort-ac 2
bedeutet der Vollständigkeit halber zwei Audiokanäle und-af
spezifiziert einen Audiofilter.Nachdem ich mir den Befehl etwas genauer angesehen hatte, stellte ich fest, dass er die Zusammensetzung der beiden Stereokanäle festlegt. Der
FL
(vordere linke Kanal) wird aus dem OriginalFC
(vordere Mitte) plus0.30*FL
(30% von vorne links) plus0.30*BL
(30% von hinten links) usw. entnommen .quelle
Dies ist jetzt eine alte Frage, hat mich aber in die richtige Richtung gelenkt und wollte mein Ergebnis mitteilen:
Wenn Sie die Hälfte von FC und LFE links und rechts platzieren, erhalten Sie für die effektive Lautstärke beider Lautsprecher insgesamt 1. Mit .707 * Vorne / Hinten Links / Rechts werden diese Kanäle auf einen guten Pegel abgesenkt, damit sie die Mitte nicht überfordern.
quelle
Wenn Sie mit der Option -ac 2 einen ausgewogenen Downmix erzielen, bei dem weder die Musik noch die Sprache zu viel mehr als die anderen Komponenten klingen, müssen Sie nur die Lautstärke erhöhen
Ich habe im Beispiel 512 verwendet, wodurch der Klang zweimal lauter wird. Die Regel ist, dass 256 gleich 100% ist
Stellen Sie den Wert nicht zu hoch ein und achten Sie darauf, die Ergebnisse in den Teilen des Films mit Explosionen oder lautem Rauschen zu überprüfen. Es ist sehr einfach, eine Verzerrung einzuführen, indem ein zu hoher Wert verwendet wird.
quelle
-ac 2
Die Lautstärke der Kanäle im Downmix bleibt bei Fließkommacodec -> pcm_f32le, aac unverändert
Die Lautstärke im Downmix (5.1 bis 2.0 ohne LFE) wird mit Integer Codec -> pcm_s16le, libfdk_aac um 1 / 2.5 = -7.96 dB reduziert
Bei Filmen ist der Ton in eine Richtung gerichtet, und auf allen Kanälen ist kein maximaler Schalldruck zu hören. Reduzierte Downmix-Lautstärke ist also falsch, geringe Komprimierung ist der richtige Weg. Genau das macht Dolby.
quelle
Nachdem ich diese ganze Seite und einige Experimente gelesen hatte, kam ich zu dem Skript "down_mix":
Passen Sie die obigen Variablen Ihren Wünschen an. Ich hatte kein Problem mit der geringen Lautstärke, also habe ich das weggelassen, aber einfach hinzugefügt.
quelle
Der ffmpeg-Filter "-ac 2" funktioniert einwandfrei, solange Ihr Ziel pcm_s16le-codiert ist. Bei der Codierung in pcm_f32le im WAV-Format wird die Lautstärke um 9 dB und mehr erhöht. Daher: Verwenden Sie in solchen Fällen nicht den Filter "-ac 2".
quelle