So verringern Sie die Lautstärke in einem bestimmten Zeitintervall mit ffmpeg.exe

So verringern Sie die Lautstärke in einem bestimmten Zeitintervall mit ffmpeg.exe

Ich versuche, die Lautstärke in einem bestimmten Zeitintervall mit ffmpeg.exe zu verringern. Nehmen wir an, ich habe ein 5 Minuten langes Video und möchte die Lautstärke zwischen 00:01:30 und 00:02:00 verringern. Ich habe gelesen, dass wir verschiedene Parameter gleichzeitig verwenden können, aber ich konnte es nicht herausfinden.

Für jede Hilfe wäre ich sehr dankbar.

Antwort1

Sie können dies mit einem Filterkomplex tun:

ffmpeg -i in.mp4 -filter_complex "[0:v]null[out2];[0:a]atrim=duration=90[a];\
[0:a]atrim=start=90:duration=30,volume=0.1,asetpts=PTS-STARTPTS[b];[a][b]concat=v=0:a=1[c];\
[0:a]atrim=start=120,asetpts=PTS-STARTPTS[d];[c][d]concat=v=0:a=1[out1]" \
-acodec mp2 -map [out1] -map [out2] out.mp4

Es verringert die Lautstärke auf 0,1 (1,0 ist voll) im Abschnitt von 90 bis 120 Sekunden. Wie funktioniert es? Es tut nichts mit dem Videostream (Filter null), sondern nimmt ihn nur in das Filterdiagramm auf. Dann werden die ersten 90 Sekunden vom Audiostream abgeschnitten, dann werden 30 Sekunden (90-120) vom Audiostream abgeschnitten und die Lautstärke auf 0,1 verringert. Dann werden die letzten beiden Audiostreams mit Concat kombiniert. Dann wird der restliche Audiostream erneut abgeschnitten und erneut kombiniert.

Ich hoffe es hilft.

verwandte Informationen