![Ich möchte ffmpeg-normalize verwenden, um die Lautstärke von 100 MP4-Videodateien zu normalisieren](https://rvso.com/image/1606692/Ich%20m%C3%B6chte%20ffmpeg-normalize%20verwenden%2C%20um%20die%20Lautst%C3%A4rke%20von%20100%20MP4-Videodateien%20zu%20normalisieren.png)
Ich möchte ffmpeg-normalize verwenden, um die Lautstärke von 100 MP4-Videodateien zu normalisieren. Gibt es eine Möglichkeit, dass das Programm alle durchläuft, um einen geeigneten Pegel zu bestimmen – oder muss ich ihm eine Datei als Eingabe geben? Kann es einen ganzen Ordner konvertieren, ohne 100 Dateinamen aufzulisten? Ich habe versucht, ffmpeg-normalize *.mp4 zu verwenden (während sich die Eingabeaufforderung im Verzeichnis der Videos befand), aber es kam die Fehlermeldung „Datei *.mp4 existiert nicht“. Ich verwende ffmpeg auf einem Windows-System, aber ich werde die Dateien über einen KODI-Player auf einem nVidia Shield abspielen. Ich möchte einfach in der Lage sein, die Videos ohne große Lautstärkeschwankungen abzuspielen.
Antwort1
Das ffmpeg-normalize
Tool kann mehrere Dateien als Eingabe verwenden. Der Platzhalter *.mp4
ist Linux-spezifisch. Unter Windows können Sie eine einfache Schleife verwenden, wie in README
ffmpeg-normalize erklärt:
for %%f in ("*.mp4") do ffmpeg-normalize "%%f" -c:a aac -b:a 192k -ext mp4
Dadurch werden Ihre Ausgabedateien normalized
mit einer mp4
Erweiterung und AAC-codierten (normalisierten) Audiostreams im Ordner erstellt.
Da die Standardeinstellung die Lautstärkenormalisierung nach EBU R 128 mit einer bestimmten Ziellautstärke verwendet, müssen Sie sich nicht um das „Ausrichten“ mehrerer Dateien kümmern. Führen Sie es einfach für alle aus.
Wenn Sie Fragen zur Verwendung haben, lesen Sie bitte zunächst die README-Datei. Andernfalls melden Sie das Problem auf GitHub.
Antwort2
Ich habe eine Windows-Lösung wie die, die ich hier erstellt habe, gesehen, die vor vielen Jahren von jemand anderem erstellt wurde – aber ich weiß nicht, wie sie hieß oder wo ich sie noch bekommen kann. Ich glaube auch, dass sie nur für AVI-Dateien war. Ich habe mich dazu entschlossen, meine eigene von Grund auf neu zu schreiben, um MP4s zu verarbeiten. Ich möchte dies mit allen Interessierten teilen, da mir diese Site sehr geholfen hat, bis zu diesem Punkt zu gelangen.
Ich habe in meinem Windows 10 ein DOS-Batchskript geschrieben, das mehrere *mp4-Dateien (und ja – mit Leerzeichen im Namen) aufnehmen und die Lautstärke mit mp3gain normalisieren kann. (Ich habe MP4GAIN ausprobiert, aber die Testphase endete nach etwa einer Stunde.) Ich habe herausgefunden, dass dieses Skript viel schneller arbeitet als MP4GAIN. Ich mache das, weil ich ffmpeg und mp3gain bei jedem Schritt gezielt steuern und Dinge tun kann, die mp4gain oder ffmpeg-normalize möglicherweise nicht können.
Es ist auf keinen Fall narrensicher und auch nicht optimiert. Es kann eher ein Sprungbrett für jemanden sein, der es für seine eigenen Zwecke optimieren/anpassen möchte. Ich extrahiere das Audio als MP3 VBR, lasse mp3gain seine Magie darauf wirken und füge es dann wieder zurück. Ich habe festgestellt, dass ich 5 gleichzeitige Normalisierungen verarbeiten kann, aber es hängt vom verfügbaren Festplattenspeicher ab, wenn Sie mehr auf einmal ausprobieren möchten.
Erstellen Sie die Ordner. „C:\Vids“ kann sich an einem beliebigen Ort befinden, muss aber die ursprünglichen, funktionierenden und abgeschlossenen Ordner enthalten.
C:\Vids
C:\Vids\original
C:\Vids\working
C:\Vids\completed
Laden Sie die neuesten Versionen herunter. Soweit ich überprüft habe, sind sie seit dem 1.9.2020 kostenlos. Ich verwende Folgendes:
C:\Vids\ffmpeg.exe ( ffmpeg version git-2020-08-28-ccc7120 )
C:\Vids\mp3gain.exe ( mp3gain version 1.4.6 )
Erstellen Sie ein C:\Vids\normalize.bat
und fügen Sie Folgendes dort ein:
echo off
setlocal enableextensions enabledelayedexpansion
for %%I in (original\*.mp4) DO (
echo Creating working\%%~nI.bat
echo echo off > "working\%%~nI.bat"
echo echo Unpacking audio and video from %%I . >> "working\%%~nI.bat"
echo echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo ..\ffmpeg.exe -v 0 -i "..\%%I" -q:a 0 -map a ".\%%~nI_audio_only.mp3" -vcodec copy -map 0:v ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo echo . >> "working\%%~nI.bat"
echo echo Normalizing extracted audio with Mp3Gain. >> "working\%%~nI.bat"
echo echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo ..\mp3gain.exe ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo echo Reconstructing normalized video from component parts. >> "working\%%~nI.bat"
echo echo .\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
echo ..\ffmpeg.exe -v 0 -i ".\%%~nI_video_only.mp4" -i ".\%%~nI_audio_only.mp3" -codec copy "..\completed\%%~nI%%~xI" >> "working\%%~nI.bat"
echo echo Post-process clean up. >> "working\%%~nI.bat"
echo del ".\%%~nI_audio_only.mp3" >> "working\%%~nI.bat"
echo del ".\%%~nI_video_only.mp4" >> "working\%%~nI.bat"
echo echo Done. >> "working\%%~nI.bat"
echo echo on >> "working\%%~nI.bat"
)
pause
echo on
Legen Sie die Original-MP4s in Ihren C:\Vids\original
Ordner und führen Sie normalize.bat aus. Ich mache das über die DOS-Eingabeaufforderung cmd.exe, aber Sie können auch im Windows Explorer auf die Batchdatei doppelklicken. Der Originalordner wird nach MP4s durchsucht und einzelne Batchdateien erstellt C:\Vids\working
. Sie können eine, zwei oder vier dieser Batchdateien gleichzeitig starten C:\Vids\working
.
Jede Original-MP4 wird in eine MP4 ohne Audio und eine MP3-VBR ohne Video entpackt.
Die Video- und Audioextraktionen werden gleichzeitig durchgeführt, da man davon ausgeht, dass dadurch wahrscheinlich zwei Dateien entstehen, die später wieder zusammengefügt werden können, ohne dass das Video oder Audio kürzer als das andere ist. Die Video- und Audioextrakte gehen in C:\Vids\working
.
Anschließend wird mp3gain.exe mit der extrahierten MP3-Datei ausgeführt und die Audio- und Video-Streams werden anschließend mit ffmpeg erneut zusammengeführt und in den C:\Vids\completed
Ordner gelegt.
Die temporär entpackten MP4- und MP3-Dateien werden gelöscht, sobald der Vorgang abgeschlossen ist.
=======
EINSCHRÄNKUNGEN:
Der Dateiname der MP4s darf bestimmte Sonderzeichen (wie ! oder ♫) nicht enthalten, aber Zeichen wie Leerzeichen ( ) [ ] # ' @ - _ sind OK. Wenn Sie feststellen, dass das generierte Skript fehlschlägt oder viel zu schnell beendet wird und die Videodatei nicht verarbeitet, versuchen Sie, die Originaldatei umzubenennen.
Ich habe keine Prüfung für ffprobe, um festzustellen, ob das eingebettete Audio bereits ein MP3 ist, und ich habe festgestellt, dass nicht alle AAC-Audiodateien von aacgain.exe normalisiert werden können. Daher erzwinge ich, dass alles als MP3 VBR in höchster Qualität ausgegeben wird. Wenn die Qualität des Original-Audios ausreichend ist, macht mir das nichts aus.
ANFRAGE
Es wäre hilfreich, wenn dieses Skript erweitert werden könnte, um die verschiedenen Audiotypen zu erkennen und eine Audiokopie zu erstellen, wenn es bereits MP3 ist. Oder man könnte erkennen, dass das AAC-Audio in MP3 konvertiert oder als AAC belassen werden muss.
Sorgen Sie dafür, dass es auch andere Videodateitypen (AVI, MKV, WMV usw.) verarbeiten kann.
Überprüfen Sie nach jedem Schritt, ob ein Fehler aufgetreten ist, und beenden Sie das Skript. Aktivieren Sie eine Fortsetzen-Funktion, sodass keine erneuten Extraktionen erforderlich sind.
Fügen Sie Flags hinzu, um zu aktivierenKomprimierendie Videodatei mit libx264 -crf 18 -preset veryslow, um etwas Platz zu sparen – das wird aber dazu führen, dass alles sehr langsam läuft.
Alle anderen Verbesserungen, die Ihnen einfallen.
Danke.
~Lum