Kann MCEBuddy einen Audiostream verarbeiten und dann die Ausgabe dieses Prozesses erneut verarbeiten?

Der Grund, warum ich das frage, ist, dass manche Dinge schrittweise erledigt werden müssen. Der Großteil meiner Tonspuren in aufgenommenen Filmen ist AC3 5.1, daher konvertiere ich diese auf Stereo AAC herunter und lasse alle Audiostreams zusätzlich unverändert mitkopieren, mit folgenden Einstellungen:

ffmpeg-audioac3=-map 0:1 -map 0:1 -map 0:2 -c:a:0 aac -ab 384k -ac 2 -c:a:1 copy -c:a:2 copy

Das Problem ist, dass ich auf dieselbe AAC-Stereo-Spur zusätzlich eine Dynamikkompression anwenden möchte, aber solche Prozesse sollte man erst durchführen, nachdem die Datei auf Stereo heruntergesampelt wurde – daher mein Dilemma. Ich muss in ffmpeg folgendes anwenden:

-af dynaudnorm=f=150

auf die Stereo-AAC-Audiospur, NACHDEM MCEBuddy sie erstellt hat, weiß aber nicht, ob MCEBuddy das kann, und falls ja, wie.

Jede Hilfe wäre sehr willkommen.

Erstellen Sie 2 Konvertierungsaufgaben mit unterschiedlichen Profilen und versuchen Sie, die Konvertierungen wie hier erklärt hintereinander zu schalten, wobei die Ausgabe der einen Konvertierung in die nächste eingespeist wird

Wenn ich das richtig verstehe, möchtest du dein aktuelles Setup so laufen lassen wie bisher und die erzeugten MKV-Dateien anschließend erneut in MCEBuddy laden, um sie dort als „MKV Unprocessed“ zu bearbeiten – wobei der erste Audiostream, der jetzt ein 2-Kanal-AAC ist, mit Dynamic-Range-Compression versehen wird?

Überwachte Ordner erzeugen bei mir zu viele Probleme. Für mich wäre es einfacher, die Dateien einfach erneut in MCEBuddy zu laden und das Profil „MKV Unprocessed“ nach meinen Bedürfnissen anzupassen, damit nur die Audiospur verändert und die Quelldateien hinterher gelöscht werden. Ich konvertiere 40 oder mehr Dateien gleichzeitig und möchte keine überwachten Ordner, die die Warteschlange füllen, denn egal was du sagst, alle Dateien werden immer am Anfang der Warteschlange eingefügt – und das konnte ich bisher nie verhindern.

Ich denke, es könnte eine Möglichkeit geben, die benutzerdefinierten Befehle in einem Profil dafür zu verwenden. Ich bin mir noch nicht ganz sicher, wie das aussehen würde oder in welcher Reihenfolge es sein müsste, aber lassen Sie mich etwas Zeit investieren, um dies zu untersuchen, und ich melde mich wieder bei Ihnen.

Okay, hier ist mein Vorschlag.
HAFTUNGSAUSSCHLUSS: Ich konnte das nicht testen und meine ffmpeg-Kenntnisse sind bestenfalls mittelmäßig. Aber es könnte ein guter Ausgangspunkt sein, damit andere mithelfen und sich einbringen.

Füge dies dem Profil hinzu, in dem du die Stereo-Audio normalisieren willst:

CustomCommandPath=C:\Windows\System32\cmd.exe
CustomCommandParameters="/c ren "%convertedfile%" %convertedfilename%-1.%convertedext% & "C:\Program Files\MCEBuddy2x\ffmpeg\ffmpeg.exe" -i "%workingpath%\%convertedfilename%-1.%convertedext% -map 0:v -c:v copy -map 0:1 -map 0:2 -map 0:3 -af dynaudnorm=f=150 -c:a:1 copy -c:a:2 copy "%convertedfile%" & del "%workingpath%\%convertedfilename%-1.%convertedext%""
CustomCommandHangPeriod=3600
CustomCommandCritical=false
CustomCommandUISession=false
CustomCommandShowWindow=false
CustomCommandExitCodeCheck=false

Grundsätzlich sollte das so funktionieren: Nachdem die Datei konvertiert, aber noch bevor sie ins Ziel verschoben wird, wird CMD mit den angegebenen Parametern ausgeführt. Hier die Parameter im Einzelnen:

/c

Startet die Eingabeaufforderung und beendet sich danach. Einfach ignorieren.

ren “%convertedfile%” %convertedfilename%-1.%convertedext%

Benennt die konvertierte Datei im aktuellen Ordner (da wir CustomCommand verwenden, ist das das Arbeitsverzeichnis) um, indem eine -1 angehängt wird. Wir benennen sie um, damit die neue Datei nach Abschluss der benutzerdefinierten Befehle den richtigen Namen trägt, wenn MCEBuddy wieder übernimmt.

&

Trennt mehrere Befehle. Einfach ignorieren. Weitere Befehle werden ebenfalls mit & getrennt.

“C:\Program Files\MCEBuddy2x\ffmpeg\ffmpeg.exe” -i “%workingpath%%convertedfilename%-1.%convertedext% -map 0:v -c:v copy -map 0:1 -map 0:2 -map 0:3 -af dynaudnorm=f=150 -c:a:1 copy -c:a:2 copy “%convertedfile%””

Hier passiert die eigentliche Magie; wer etwas ändern will, muss hier ansetzen. Das Video wird 1:1 übernommen, die erste Audiospur wird normalisiert, die restlichen beiden Audiospuren unverändert kopiert.

del “%workingpath%%convertedfilename%-1.%convertedext%”

Löscht die ursprünglich umbenannte Datei – einfach Aufräumarbeit.

Vielen Dank … Es tut mir leid, dass ich so lange gebraucht habe, es zu sehen und zu testen, aber ich habe es gerade an einer kurzen 5-Minuten-Testdatei ausprobiert, die ich zum Testen von Profilen verwende, und die benutzerdefinierten Befehle wurden ausgeführt. Jetzt ist meine einzige Frage, wie ich überprüfen kann, ob die Dynamikkompression stattgefunden hat? Oh, Moment … ich kann die Audiospur aus der Quelldatei und der konvertierten Datei extrahieren und sie in einem Audio-Editor vergleichen.

EDIT … Ich werde es mir in einem Audio-Editor ansehen, wenn ich Zeit habe, aber allein beim Hören des Originals und der Konvertierung kann ich einen Unterschied feststellen: Die Soundeffekte sind nicht mehr so übermächtig, aber dennoch etwas lauter, daher scheint das genau das zu sein, was ich gesucht habe … DANKE!

Das ist großartig! Gern geschehen.

Jetzt muss ich nur noch herausfinden, wie ich das perfekt machen kann: ob ich ffprobe verwenden kann, um die Audiodatei zuerst zu analysieren, und dann die Parameter sowohl für die Dynamikkompression als auch für die Normalisierung automatisch festlegen lassen kann (damit alle Sendungen/Filme dieselbe Standardlautstärke haben). Wenn du also Ideen hast, wäre ich für jeglichen Input dankbar.

Lass mich ein wenig herumspielen und mich dann bei dir melden.

Ich habe mit verschiedenen Methoden herumexperimentiert, aber keine ist wirklich zuverlässig. Und durch einen Benutzerfehler habe ich die Profile gelöscht, die ich zum Testen verwendet habe, sodass ich Ihnen nicht einmal Beispiele liefern kann. Außerdem habe ich irgendwie alle meine Logs gelöscht.

Ich habe ein paar verschiedene Workflows ausprobiert. Mit precustomcommand die Audiospur separat als Stereo extrahieren, über eine Batchdatei zur Normalisierung mit ffprobe verarbeiten, wobei die Variablen als Argumente übergeben werden, dann über die normale MCEBuddy-Verarbeitung laufen lassen – ohne diese Stereospur – und anschließend in customcommand wieder einfügen. Das hat etwa 10 % der Zeit funktioniert.

Ich habe auch versucht, die Audiospur in precustomcommand so zu extrahieren, wie sie ist, das Video über MCEBuddy als reines Stereo mit aktivierter Lautstärkeanpassung zu verarbeiten und dann die Surround-Spuren wieder einzufügen. Das hat am häufigsten funktioniert, aber ich bin mir nicht sicher, ob es die gewünschte Normalisierung liefert.

Dann habe ich auch einfach keine customcommands verwendet und mit aktivierter Lautstärkeanpassung verarbeitet, was zu 100 % funktioniert hat – aber wiederum bin ich mir nicht sicher, ob das das gewünschte Ergebnis ist.

Wenn ich mehr freie Zeit finde, werde ich weiterexperimentieren, aber ich fange bald einen neuen Job an und werde wahrscheinlich eine Weile nicht dazu kommen.

Vielen Dank für die Mühe. Ich hoffe, dass mir mein Freund die Methode zeigt, die er in ffmpeg verwendet, aber er stellt sich quer, da er möchte, dass ich stattdessen das Sickbeard-Skript nutze, hat aber keine Zeit, mir beizubringen, wie es funktioniert.

Wenn ich die Informationen von ihm bekomme, sollte es nur eine Frage einer benutzerdefinierten Befehlsanpassung an den bereits von dir bereitgestellten Befehl sein.

Nochmals vielen Dank.

Ich habe einen Weg gefunden, das Ganze zu vereinfachen, ohne vorher eine Analyse durchführen zu müssen. Ich habe folgenden Befehl und diese Einstellungen für ffmpeg gefunden, und es scheint Konsens darüber zu bestehen, dass dies die zu verwendende Einstellung ist:

-af loudnorm=I=-16:LRA=11:TP=-1.5

Dies wird die Normalisierung durchführen. Ich nehme an, dass wir zuerst die Dynamikkompression durchführen müssen und dann dies anwenden. Gibt es also eine Möglichkeit, die Ausgabe des benutzerdefinierten Befehls, den Sie oben für die Dynamikkompression erstellt haben, durch einen weiteren benutzerdefinierten Befehl zu schicken, der diesen Befehl anwendet? Es sei denn, es gibt einen besseren Weg, das zu tun – ich habe keine Ahnung.

Ich habe versucht, selbst damit zu arbeiten, aber ich konnte die beiden Befehle nicht zusammenschalten, damit es richtig funktioniert. Ich verliere mich in der Syntax. Ich bin kein Programmierer… LOL

So in etwa wahrscheinlich.

CustomCommandParameters="/c ren “%convertedfile%” %convertedfilename%-1.%convertedext% & “C:\Program Files\MCEBuddy2x\ffmpeg\ffmpeg.exe” -i “%workingpath%%convertedfilename%-1.%convertedext% -map 0:v -c:v copy -map 0:1 -map 0:2 -map 0:3 -af dynaudnorm=f=150 -c:a:1 copy -c:a:2 copy “%workingpath%%convertedfilename%-2.%convertedext%” & del “%workingpath%%convertedfilename%-1.%convertedext%” & “C:\Program Files\MCEBuddy2x\ffmpeg\ffmpeg.exe” -i “%workingpath%%convertedfilename%-2.%convertedext%” -map 0:v -c:v copy -map 0:1 -map 0:2 -map 0:3 -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:a:1 copy -c:a:2 copy “%convertedfile%” & del “%workingpath%%convertedfilename%-2.%convertedext%””

Super, danke, ich weiß, dass du viel zu tun hast. Ich werde es heute später oder heute Nacht ausprobieren und dir Bescheid geben. Ich schätze das.