Batch Tonspur im Video normalisieren und neu zusammenfügen

Cholesterin

Cadet 1st Year
Registriert
Aug. 2017
Beiträge
10
Hallo Leute, würde gerne die Audiospuren einer Serie normalisieren. Ich habe dafür ein Script was in zwei schritten arbeitet. Es analysiert, normalisiert die Audiospur und spuckt am Ende die neue Audiospur aus. Leider funktioniert das nur mit Einzeldateien. Bei mehreren Audiodateien macht es Probleme. Vielleicht hat jemand eine Idee wie man das bewerkstelligen kann das mehrere Audiodateien erstellt werden können.

Code:
cls
echo off
ffmpeg -i %1 -filter_complex "[0:a]loudnorm=I=-16:TP=-1.5:LRA=11:print_format=summary" -f null x 2>%1.txt
@for /f "tokens=3" %%a in ('findstr /C:"Input Integrated" %1.txt') do (set II=%%a)
echo %II% is the Input Integrated
@for /f "tokens=4" %%a in ('findstr /C:"Input True Peak" %1.txt') do (set ITP=%%a)
echo %ITP% is the Input True Peak
@for /f "tokens=3" %%a in ('findstr /C:"Input LRA" %1.txt') do (set ILRA=%%a)
echo %ILRA% is the Input LRA
@for /f "tokens=3" %%a in ('findstr /C:"Input Threshold" %1.txt') do (set IT=%%a)
echo %IT% is the Input Threshold
@for /f "tokens=3" %%a in ('findstr /C:"Output Integrated" %1.txt') do (set OI=%%a)
echo %OI% is the Output Integrated
@for /f "tokens=4" %%a in ('findstr /C:"Output True Peak" %1.txt') do (set OTP=%%a)
echo %OTP% is the Output True Peak
@for /f "tokens=3" %%a in ('findstr /C:"Output LRA" %1.txt') do (set OLRA=%%a)
echo %OLRA% is the Output LRA
@for /f "tokens=3" %%a in ('findstr /C:"Output Threshold" %1.txt') do (set OT=%%a)
echo %OT% is the Output Threshold
@for /f "tokens=3" %%a in ('findstr /C:"Target Offset" %1.txt') do (set TO=%%a)
echo %TO% is the Target Offset


ffmpeg -i %1 -af loudnorm=linear=true:I=-16:LRA=11:tp=-1.5:measured_I=%II%:measured_LRA=%ILRA%:measured_tp=%ITP%:measured_thresh=%IT%:offset=%TO%:print_format=summary loudnorm.wav
 
Zuletzt bearbeitet:
Datei liste erstellen:
for f in *.mp4 ; do echo file \'$f\' >> fileList.txt;
Videos konkatenieren:
ffmpeg -f concat -safe 0 -i fileList.txt -c copy mergedVideo.mp4

Die normalisierung kannst du hinterher auf die Ganze Datei anwenden. So bekommst du die normalisierung auch ueber die ganzen daten
 
@madmax2010 danke für die Befehlszeilen! Das Skript schließt sich leider direkt wieder. Bin mir aber auch nicht sicher wie ich deine Befehlszeilen funktionierend integriere in mein Code :confused_alt:
 
Ich würde stark von concat abraten. Aus folgenden Gründen:

1. ich denke nicht, dass loudnorm einen großen Unterschied macht ob jetzt alle Dateien nacheinander bearbeitet werden, oder zusammen in einer Datei.
2. je nach Codecs ist es fraglich ob die Datei mit -c copy im Anschluss sauber ist.
3. wie bekommt man später wieder die Datei getrennt in 52 Einzelteile? Oder soll die im Ganzen bleiben?

Schau dir mal das an: https://github.com/slhck/ffmpeg-normalize
Das sollte eigentlich das machen, was du möchtest.
Auch wenn das Script den dynamic Mode anbietet, diesen unbedingt vermeiden (auch wenn es schön klinkt :-)). Dazu ist dieser Maillinglist Schriftwechsel ganz informativ.
 
Zuletzt bearbeitet:
Zurück
Oben