Kan MCEBuddy een audiostream verwerken en vervolgens de uitvoer van dat proces opnieuw verwerken?

De reden dat ik dit vraag is dat sommige dingen in stappen moeten gebeuren. Het grootste deel van mijn audio in opgenomen films is AC3 5.1, dus downsample ik dat naar stereo AAC en laat vervolgens alle audiostromen ook onveranderd meekopiëren met de volgende instellingen:

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

Het probleem is dat ik ook dynamic range compression op diezelfde AAC-stereotrack wil toepassen, maar je mag zoiets pas doen nadat het bestand naar stereo is gedownsample… vandaar mijn dilemma. Ik moet het volgende in ffmpeg toepassen:

-af dynaudnorm=f=150

op de stereo AAC-audiotrack NA DAT MCEBuddy deze heeft aangemaakt, maar ik weet niet of MCEBuddy dat kan, en zo ja, hoe.

Elke helderheid zou zeer gewaardeerd worden

Maak 2 conversietaken aan met verschillende profielen en probeer de conversies te ketenen zoals hier uitgelegd, waarbij de uitvoer van de ene conversie als invoer dient voor de volgende

Dus als ik het goed begrijp, is een manier om te doen wat ik wil dat mijn huidige setup gewoon blijft draaien zoals hij nu is, en vervolgens de uitvoer-MKV-bestanden weer in MCEBuddy te laden en ze te verwerken als MKV Unprocessed, waarbij de eerste audiostream — die nu een 2-kanaals AAC is — wordt aangepast met dynamic range compression?

Het gebruik van gemonitorde locaties veroorzaakt te veel problemen. Voor mij zou het eenvoudiger zijn om de bestanden gewoon opnieuw in MCEBuddy te laden met het MKV Unprocessed-profiel, aangepast aan mijn behoeften, zodat alleen het audio wordt gewijzigd, en vervolgens de bronbestanden te laten verwijderen wanneer het klaar is. Ik draai 40 of meer conversies tegelijk en ik wil niet dat gemonitorde locaties de wachtrij vullen, want wat je me ook vertelt, alle bestanden worden aan het begin van de wachtrij toegevoegd en ik heb nooit kunnen voorkomen dat dit gebeurt.

Ik denk dat er misschien een manier is om de aangepaste opdrachten in een profiel hiervoor te gebruiken. Ik weet nog niet precies hoe dat eruit zou zien of in welke volgorde het zou moeten, maar laat me hier even tijd voor nemen om het te onderzoeken en ik kom bij je terug.

Oke, hier is wat ik heb bedacht.
DISCLAIMER: ik heb dit niet kunnen testen en mijn ffmpeg-kennis is op zijn best middelmatig.
Maar het kan een goed startpunt zijn voor anderen om aan te haken en te helpen.

Voeg dit toe aan het profiel waarvoor je de stereo-audio wilt normaliseren.

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

In principe werkt dit als volgt: nadat het bestand is geconverteerd, maar voordat het naar de bestemming wordt verplaatst, wordt CMD uitgevoerd met de opgegeven parameters. Laten we de parameters uiteenrafelen:

/c

Start de command prompt en sluit af wanneer klaar. Niet belangrijk.

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

Hernoemt het geconverteerde bestand op de huidige locatie (aangezien we CustomCommand gebruiken, bevindt het zich in de werkmap) door er -1 aan toe te voegen. We hernoemen zodat ons nieuwe bestand achteraf de juiste naam krijgt wanneer MCEBuddy weer het stokje overneemt.

&

Scheidt opeenvolgende commando’s. Niet belangrijk, maar als je meer commando’s wilt, gebruik je & als scheiding.

“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 gebeurt de eigenlijke truc; aanpassingen doe je hier. Dit zou de video ongewijsd kopiëren, de normalisatie op het eerste audiospoor toepassen en de overige twee audiosporen onveranderd overzetten.

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

Verwijdert het oorspronkelijke bestand dat we in de eerste stap hebben hernoemd. Even opruimen.

Heel erg bedankt…het spijt me dat het zo lang heeft geduurd voordat ik dit zag en kon testen, maar ik heb het net gedaan op een korte test van 5 minuten die ik gebruik voor het testen van profielen en de aangepaste commando’s werkten. Nu is mijn enige vraag hoe ik kan controleren of de dynamische rangecompressie heeft plaatsgevonden? Oh, wacht…ik kan de audio uit zowel het bron- als het geconverteerde bestand halen en ze vergelijken in een audio-editor.

EDIT…ik zal het nakijken in een audio-editor wanneer ik tijd heb, maar alleen al door naar de originele en geconverteerde versie te luisteren merk ik een verschil: de geluidseffecten zijn niet meer zo overheersend, maar toch nog een beetje luider, dus het lijkt erop dat dit is wat ik zocht…BEDANKT!

Dat is geweldig! Graag gedaan.

Nu is het enige wat ik nog moet uitzoeken om dit perfect te maken of ik ffprobe kan gebruiken om het audiobestand eerst te analyseren, en vervolgens de parameters kan laten kiezen voor zowel dynamische range compressie als normalisatie (zodat alle shows/films hetzelfde standaardvolume hebben), dus als je ideeën hebt, zou ik alle input op prijs stellen.

Laat me even met een paar dingen experimenteren en ik kom bij je terug.

Ik heb met verschillende methoden geëxperimenteerd, maar geen is echt betrouwbaar. En door een gebruikersfout heb ik de profielen die ik voor testen gebruikte gewist, dus ik kan je zelfs geen voorbeelden meer geven. En op de een of andere manier heb ik al mijn logs ook weggegooid.

Ik heb een paar verschillende werkstromen geprobeerd. Met precustomcommand het audio apart extraheren als stereo, en met een batchbestand het te normaliseren via ffprobe door de variabelen als argumenten mee te geven, het vervolgens door de normale MCEBuddy-verwerking halen zonder dat stereospoor, en dan in customcommand het weer terugplaatsen. Dit werkte ongeveer 10% van de tijd.

Ik probeerde ook het audiotrack in precustomcommand te extraheren zoals het is, de video door MCEBuddy te verwerken als enkel stereo met de optie Volume leveling ingeschakeld, en daarna de surroundtracks weer terug te plaatsen. Dit werkte het vaakst, maar ik weet niet zeker of het de normalisering oplevert die jij wilt.

Daarnaast gebruikte ik ook geen customcommands en verwerkte ik met de optie Volume leveling aan, wat 100% van de tijd werkte, maar ook hier ben ik niet zeker of het het gewenste resultaat geeft.

Als ik meer vrije tijd vind, ga ik er nog wat mee experimenteren, maar ik begin binnenkort aan een nieuwe baan en waarschijnlijk lukt dat dan even niet.

Heel erg bedankt voor de moeite. Ik hoop dat mijn vriend me de methode geeft die hij gebruikt in ffmpeg, maar hij is moeilijk doende omdat hij wil dat ik de Sickbeard-script gebruik; hij heeft echter geen tijd om me dat te leren.

Als ik de informatie van hem krijg, zou het slechts een kwestie zijn van een aangepaste opdracht toevoegen aan degene die je al hebt gegeven.

Nogmaals dank.

Ik heb een manier gevonden om dit te vereenvoudigen zonder eerst een analyse te hoeven uitvoeren. Ik vond de volgende opdracht en instellingen om in ffmpeg te gebruiken en er lijkt consensus te zijn dat dit de instelling is om te gebruiken:

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

Dit zal de normalisatie uitvoeren. Ik neem aan dat we eerst de dynamische rangecompressie moeten doen en dit daarna toepassen, dus is er eigenlijk een manier om de uitvoer van de aangepaste opdracht die je hierboven voor de dynamische rangecompressie hebt gemaakt, door een andere aangepaste opdracht te laten lopen die deze opdracht toepast? Tenzij er een betere manier is om het te doen, ik weet dat ik geen idee heb.

Ik probeerde het zelf uit, maar ik kreeg de twee commando’s niet aan elkaar gekoppeld zodat het goed werkte. Ik raak verdwaald in de syntax. Ik ben geen programmeur… LOL

Iets als dit waarschijnlijk.

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%””

Geweldig, bedankt, ik weet dat je het druk hebt. Ik zal het later vandaag of vanavond proberen en je laten weten. Ik waardeer het.