ffmpeg kombiniert die Filter -af und -filter_complex (verwenden Sie die linke Spur, um eine reine Monospur zu erstellen *und* das Audio zu normalisieren)

ffmpeg kombiniert die Filter -af und -filter_complex (verwenden Sie die linke Spur, um eine reine Monospur zu erstellen *und* das Audio zu normalisieren)

Ich habe verlustfreie Videoaufnahmen von Videobändern, die ich in FFV1 und FLAC konvertieren werde. Bei einigen ausgewählten Bändern muss ich dabei auch den Ton in Mono konvertieren (nur die linke Spur existiert, da die Originalaufnahme mono ist, das Aufnahmegerät jedoch immer in Stereo aufzeichnet).UndIch muss den Ton so normalisieren, dass die Lautstärke einfach gleichmäßig angepasst wird (keine Komprimierung oder etwas anderes, das den Ton über das unbedingt Notwendige hinaus verzerren würde), da der Camcorder recht leise ist und es keine Möglichkeit gab, die Audiopegel des Aufnahmegeräts anzupassen.

Bisher habe ich festgestellt, dass ich diese beiden Filter brauche:

Entfernen Sie den rechten Kanal, um eine Monoaufnahme mit nur der linken Spur zu erstellen:

-filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]"

Audio normalisieren:

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

Ich kann jedoch nicht herausfinden, wie ich diese beiden Filter kombinieren kann. Ich habe Folgendes versucht:

ffmpeg -i "input.avi" -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL[left]" -map "[left]", loudnorm=I=-16:LRA=11:TP=-1.5" -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 "output.mkv"

was ergibt:

loudnorm=I=-16:LRA=11:TP=-1.5 -c:v ffv1 -level 3 -slicecrc 1 -c:a flac -compression_level 12 output.mkv: Invalid argument

Wie kombiniere ich diese beiden Filter?

Antwort1

Beim Verketten einfacher Filter (einzelner Eingang und Ausgang) können wir einfach Kommas ( ,) zwischen den verketteten Filtern verwenden.

Die Kommasyntax bedeutet, dass die Ausgabe des ersten Filters die Eingabe des nächsten Filters ist:"[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]"

Wir müssen das Video auch mithilfe von zuordnen -map 0:v.


Vollständige Befehlszeile:

ffmpeg -i input.avi -filter_complex "[0:a]channelsplit=channel_layout=stereo:channels=FL,loudnorm=I=-16:LRA=11:TP=-1.5[left]" -map "[left]" -map 0:v -c:v ffv1 -coder 1 -context 1 -g 1 -slices 24 -slicecrc 1 -c:a flac -compression_level 12 output.mkv

Hinweis: Meine Antwort bezieht sich auf die Richtigkeit der Syntax und nicht auf die Richtigkeit der Audiofilter und -parameter (meine Kenntnisse im Audiobereich sind ziemlich begrenzt).

verwandte Informationen