Audio-Dateien mittels ffmpeg normalisieren

Für einen Audio-Workflow wollte ich unter anderem Audio-Dateien normalisieren, damit diese mit einer identischen Lautheit verfügbar sind. Dazu kann das freie ffmpeg genutzt werden:

ffmpeg -i local.flac -filter:a loudnorm local.wav

Allerdings wird bei der Normalisierung eine 2-Pass-Lösung empfohlen. Dabei wird im ersten Durchlauf die Datei analysiert, um die entsprechenden Werte für die qualitativ hochwertige Normalisierung zu ermitteln:

ffmpeg -i local.flac -filter:a loudnorm=print_format=json -f null NULL

Für die entsprechende Datei wird dann eine Ausgabe erzeugt:

{
	"input_i" : "-33.65",
	"input_tp" : "-8.11",
	"input_lra" : "7.10",
	"input_thresh" : "-44.96",
	"output_i" : "-25.28",
	"output_tp" : "-2.00",
	"output_lra" : "4.50",
	"output_thresh" : "-36.36",
	"normalization_type" : "dynamic",
	"target_offset" : "1.28"
}

Mithilfe dieser Informationen kann dann der zweite Durchlauf gestartet werden:

ffmpeg -i local.flac -filter:a loudnorm=linear=true:i=-16:lra=7.0:tp=-2.0:offset=0.50:measured_I=-33.65:measured_tp=-8.11:measured_LRA=7.10:measured_thresh=-44.96 -ar 44100 local.wav

Da die Lösung mittels ffmpeg etwas umständlich ist, wurde ffmpeg-normalize entwickelt. Dieses Python-Tool kann über den Python-Paketmanager installiert werden:

pip3 install ffmpeg-normalize

Anschließend kann die Normalisierung und Konvertierung vorgenommen werden:

ffmpeg-normalize local.flac -o local.wav -ar 44100

In diesem Fall wird die FLAC-Datei normalisiert und in eine Wave-Datei konvertiert und die entsprechende Samplerate auf 44100 gestellt. Um das Kommando einfacher zugänglich zu machen, kann eine Bash-Funktion definiert werden. Unter macOS muss diese in der entsprechenden Konfigurationsdatei der Z shell angelegt werden:

nano ~/.zshrc

Anschließend kann die entsprechende Funktion in der Datei definiert werden:

normalize ()
{
  ffmpeg-normalize "$1" -o "$1".wav -ar 44100
}

Nachdem das Terminal neu gestartet wurde, kann das Kommando wie folgt benutzt werden:

normalize local.flac

Downloads über youtube-dl per Bash-Funktion in der Z shell unter macOS nutzen

Vor ein paar Tagen hatte ich darüber geschrieben, wie es möglich ist mittels youtube-dl nur den MP4-Stream eines Videos herunterzuladen. Wenn das Kommando öfter benutzt werden soll, ist es etwas umständlich und wenig einprägsam.

Um das Kommando einfacher zugänglich zu machen, kann eine Bash-Funktion definiert werden. Unter macOS muss diese in der entsprechenden Konfigurationsdatei der Z shell angelegt werden:

nano ~/.zshrc

Anschließend kann die entsprechende Funktion in der Datei definiert werden:

yd ()
{
  youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' "$1"
}

Nachdem das Terminal neu gestartet wurde, kann das Kommando wie folgt benutzt werden:

yd YouTubeID123

Anschließend startet der Download wie gehabt und das Kommando geht in Zukunft wesentlich einfacher von der Hand.

Standardeditor im Terminal unter macOS Big Sur ändern

Der Standardeditor im Terminal unter macOS Big Sur, welches die Z shell nutzt, ist vim. Soll dieser Standard geändert werden, muss die Profildatei der Z shell angepasst werden:

nano ~/.zshrc

Dort wird nun folgende Zeile hinzugefügt:

export EDITOR=nano

Nachdem dem Speichern der Änderung, sowie einem Neustart der Terminal-App ist der neue Editor als Standard gesetzt.

Probleme bei der Installation von Homebrew unter macOS

Nach der Installation von Homebrew unter macOS Big Sur kann es unter Umständen (meist bei der M1/ARM Variante) passieren, das der Nutzer folgende Meldung erhält:

Warning: /opt/homebrew/bin is not in your PATH.

Gelöst werden kann dies in dem die Konfiguration für die Z shell angepasst wird. Dazu wird im Terminal eine neue Datei erstellt:

nano ~/.zshrc

In dieser Datei wird der Pfad der Homebrew-Installation der PATH-Variable hinzugefügt:

export PATH=/opt/homebrew/bin:$PATH

Beim nächsten Start der Shell, kann Homebrew dann problemlos genutzt werden.

Standardeditor für die Z shell einstellen

In der neuen macOS-Version Catalina wurde die Standardshell seitens Apple gewechselt. Statt der Bourne-again shell, kurz Bash, wird nun die Z shell, kurz zsh, genutzt. Grund hierfür ist, dass die Lizenz, welche von Bash genutzt wird, aus Sicht von Apple zu restriktiv ist. Aus diesem Grund wurde zur Z shell gewechselt. In dieser ist, unter macOS, standardmäßig vi als Editor eingestellt. Soll der Standardeditor geändert werden so muss die entsprechen Konfigurationsdatei der Z shell im Terminal bearbeitet werden:

nano ~/.zshrc

In diese Datei muss nun folgende Zeile eingetragen werden:

export EDITOR=nano

Damit wird, nachdem die Konfiguration gespeichert wurde und die Shell neu geöffnet wurde, nano als Standardeditor genutzt.