Frage

Ich brauche die durchschnittliche Lautstärke einer mp3-Datei kennen, so dass, wenn ich es in mp3 konvertieren (bei einer anderen Bitrate) ich auch die Lautstärke skaliert werden kann, um es zu normieren ...

Deshalb brauche ich eine Kommandozeilen-Tool / Ruby-Bibliothek, die mir die durchschnittliche Lautstärke in dB gibt.

War es hilfreich?

Lösung

Sie können mit SOx (ein Open-Source-Befehlszeile Audio-Tool http://sox.sourceforge.net /sox.html ) Ihre Dateien zur gleichen Zeit zu normalisieren und transcodieren.

EDIT

Sieht aus wie es keine Optionen für Bitrate. Wie auch immer, sox ist wahrscheinlich übertrieben, wenn LAME Normalisierung der Fall ist.

Andere Tipps

Sie können mit LAME MP3-Format kodieren. Es verfügt über Optionen für die Normalisierung, Skalierung und Bitrate. LAME erstellt auch auf praktisch jede Plattform.

http://mp3gain.sourceforge.net/ ist eine gut durchdachte Lösung.

Ich schrieb einen kleinen Wrapper-Skript, basierend auf der obigen Eingabe:

#!/bin/sh

# Get the current volume (will reset to this later).
current=`amixer -c 0 get Master 2>&1 |\
    awk '/%/ {
              p=substr($4,2,length($4)-2);
              if( substr(p,length(p)) == "%" )
                 {
                 p = substr(p,1,length(p)-1)
                 }
             print p
             }'`

# Figure out how loud the track is.  The normal amplitude for a track is 0.1. 
#   Ludicrously low values are 0.05, high is 0.37 (!!?)
rm -f /tmp/$$.out
/usr/bin/mplayer -vo null -ao pcm:file=/tmp/$$.out $1 >/dev/null 2>&1
if [ $? = 0 ] ; then
    amplitude=`/usr/bin/sox /tmp/$$.out -n stat 2>&1 | awk '/RMS.+amplitude/ {print $NF}'`
fi
rm -f /tmp/$$.out

# Set an appropriate volume for the track.
to=`echo $current $amplitude | awk '{printf( "%.0f%%", $1 * 0.1/$2 );}'`
echo $current $amplitude | awk '{print "Amplitude:", $2, "  Setting volume to:", 10/$2 "%,  mixer volume:", $1 * 0.1/$2}'
amixer -c 0 set Master $to  >/dev/null 2>&1

mplayer -quiet -cache 2500 $1

# Reset the volume for next time.
amixer -c 0 set Master "$current%"  >/dev/null 2>&1

Es dauert eine zusätzliche Sekunde, um die Datei zu starten spielen, und stützt sich auf alsamixer die Lautstärke anzupassen, aber es hat eine wirklich schöne Arbeit, die Sie halten aus, die ständig die Master-Lautstärke zwicken. Und sie nicht wirklich egal, was das Eingabeformat, da bei MPlayer es überhaupt spielen kann, kann es das Audio extrahieren, so sollte es mit MP3, Ogg, AVI gut funktionieren, was auch immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top