PowerShell PowerShell-Modul für Loudness Normalization definieren?

n/a

Ensign
Registriert
Feb. 2025
Beiträge
145
Moin,

oft ist es ja so, dass man Video-Dateien hat, die nicht normalisiert wurden, also wo die Szenen, wo sich die Leute unterhalten, sehr leise sind, und die Szenen, wo Kugeln durch die Luft fliegen, viel zu laut sind.

Ich hab mir so ein Modul geschrieben, um die Lautstärke zu normalisieren:

MyScript.psm1:

PowerShell:
function global:Loudnorm($fn) {
    $nfn = "$((Get-Item $fn).Basename)-loudnorm$((Get-Item $fn).Extension)"
    Write-Host "$nfn"
    ffmpeg-normalize.exe "$fn" -o "$nfn" -v -pr -c:v copy -c:a aac -b:a 192k
}

function global:LoudnormKeep($fn) {
    $nfn = "$((Get-Item $fn).Basename)-loudnorm$((Get-Item $fn).Extension)"
    Write-Host "$nfn"
    ffmpeg-normalize.exe "$fn" -o "$nfn" -v -pr -c:v copy -c:a aac -b:a 192k --keep-loudness-range-target
}

Export-ModuleMember -function Loudnorm
Export-ModuleMember -function LoudnormKeep

ffmpeg-normalize muss sich natürlich im Pfad befinden ... und das Modul kann man dann nach C:\Windows\System32\WindowsPowerShell\v1.0\Modules\MyScripts\ schubsen.

Die zweite Funktion verwendet die Option --keep-loudness-range-target. Kann mir jemand erklären, was es damit auf sich hat?

Ich hab festgestellt, dass ich nicht alle Video-Dateien mit der ersten Funktion Loudnorm konvertieren kann, und deshalb wohl diese Option brauche.

Danke.
 
mWn verwendet man die Option um den Dynamikbereich aufrecht zu erhalten, damit die generellen Schwankungen nicht zu glatt gebügelt werden und unnatürlich klingen.

Cooles Unterfangen!
 
  • Gefällt mir
Reaktionen: n/a
Von Filmen und Serien hab ich keine Ahnung, aber ich glaube, dass es zwischen drin so leise ist, soll einen Spannungsbogen aufbauen... Könnte also bewusst/beabsichtigt sein.
 
Irgendwie sieht das alles nicht so ausgereift aus. Hast du dir mal den Artikel dazu durchgelesen?

https://learn.microsoft.com/en-us/p...-powershell-script-module?view=powershell-7.5

Und was ist der Sinn von globalen Funktionen?

Und wenn du das Modul selbst geschrieben hast, musst du doch wissen was der Code macht?

Der Parameter von dir kommt auch nicht aus Powershell sondern aus ffmpeg und das hat mit powershell nichts zu tun.

Die ffmpeg muss also installiert sein und das macht wenig sinn wenn die nicht mit dem modul mitgeliefert wird (und wäre im ürbigen dann auch nur unter windows lauffähig)

Es macht auch wenig sinn daraus zwei Funktionen zu schreiben, das steuert man über modi z.B. hier beschrieben:
https://learn.microsoft.com/en-us/p...tions_advanced_parameters?view=powershell-7.5

im Übrigen ist Powershell 5 inzwischen hoffnungslos veraltet (wird halt noch mit windows mitgeliefert)
 
Ah ha ich muss zugeben dass in
Code:
$env:PSModulePath

in der Tat auch in der PS7 die Uralten Module geladen werden.

Es ändert nichts daran dass das alles ziemlich krude aussieht.

Und ich bin mir nach wie vor unsicher ob du so wirklich weißt was du da tust.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: n/a
Ich habe auch nicht behauptet, ich sei der PowerShell Übergott. :P

Aber es stimmt, diese Frage bezieht sich eher auf ffmpeg-normalize denn auf PS. Sorry
 
Zurück
Oben