Automatische mp3-Bearbeitung?


Status
Nicht offen für weitere Antworten.
#1
Kennt jemand ein Programm bzw weiß ob dies z.b. mit CoolEdit/Wavelab geht:

Ich möchte gerne meine Archivierte Plattensammlung normalisieren (0 db) und evtl noch weiterbearbeiten z.b. stillen am anfang/ende schneiden, evtl "cleanen" etc.
Das ganze soll aber automatisch gehn, sprich ich sage dem Programm er soll alle Datein aus dem Ordner xyz bearbeiten. Also nicht jede Datei Manuell sondern alle automatisch verarbeiten!

Mfg Benny
 
#2
Hi..
probier's doch mal mit dem Programm "MP3Gain".
Da kann man einzelne Dateien bzw. komplette Ordner
auf "Wunschpegel" bringen.
Das tolle daran ist es kostet nix & es arbeitet mit dem MP3-File... sprich: Nicht noch mehr Datenverlust.
Zum Download einfach mal den Programm-Namen in "google" eingeben!
 
#4
Ich suche immernoch ein Tool, dass automatisch stillen von MP3 datein am Anfang und Ende schneidet. Das Tool MP3Trim kann dies leider nur für einzelne MP3s uind nicht für ganze Ordner (Automatisch)... Kentn jemand ein autopmatisches Tool...
Es sollte wie MP3Gain funktionieren! Vielen Dank
 
#7
Notfalls installierst Du Dir Cygwin auf Deinem Rechner und hast damit die Shell-Scriptsprachen von UNIX-Systemen (z.B. Linux) auf Deinem Rechner.

Dann startest Du die entsprechende Shell (bash), wechselst in das entsprechende Verzeichnis und gibst folgende Zeilen ein:

for name in * ; do
<Aufruf für mp3trim> ;
done

Fertig bist Du.

Zu beachten ist folgendes: Unter UNIX und somit auch in dieser Scriptsprache gibt es keine Laufwerksbuchstaben. Du gibt statt C:\ also /cygdrive/c/ an.

Unter UNIX wird kein \ sondern ein / verwendet.

Wenn Du mp3trim aufrufst, gibst Du statt dem Dateinamen $name an.

Mal kurz das praktische Beispiel hinther:

mp3trim liegt in c:\programme\mp3trim\mp3trim.exe

Der Ordner mit dem MP3s ist unter

d:\mp3

Dann sieht der gesamte Befehl etwa so aus:

cd /cygdrive/d/mp3
for name in *; do
/cygdrive/c/programme/mp3trim/mp3trim.exe $name
done

Wichtig: Gross-/Kleinschreibung ist relevant und es müssen natürlich noch die entsprechenden Parameter an den mp3trim-Aufruf angehängt werden, die kenne ich nämlich nicht.

Ich hoffe das war nicht zu kompliziert und hat geholfen.

Christoph
 
#8
Die MP3 selbst liegen zwar auf einem Windows Server, allerdings sind die Backups auf einem Linux Fileserver. Aber ich kenne kein linux Tool, mit dem man automatisch stillen erkennen und schneiden kann..
 
#9
Das kann man auch scripten.

mpg123 verwenden um nur je 1 Frame auszugeben, dieses sox zur Analyse vorwerfen, dessen Ausgabe auf die Lautstärke parsen und - wenn der Frame leiser als der gewünschte Schwellwert ist - mit dem nächsten Frame weitermachen, bis der Schwellwert erreicht ist.

Genauso kann man am Ende vorgehen, dann die so erhaltenen Frames mp3trim vorwerfen (sowas gibt es unter Linux auch, könnte anders heissen) und fertig ist.

Falls Du das allein nicht hinbekommst, sag nochmal Bescheid, dann bastel ich da mal was.

Christoph
 
#12
Habe jetzt mal was in Perl gebastelt, um Stille an Anfang und Ende wegzuschneiden. Ist Quick&Dirty.

Du brauchst sox, mp3asm und mpg123 installiert.

Code:
#!/usr/bin/perl

sub framevol
{
        my $frame=$_[0];
        my $tmp="$$.cutmp3";
        `mpg123 -q -w /tmp/$tmp\.wav -k $frame -n 2 $datei 2>&1 >/dev/null`;  # aktuellen und
                                                              # folgenden Frame
                                                              # in WAV wandeln
        open SOX,"sox -t wav /tmp/$tmp\.wav -t wav /dev/null stat 2>&1|";
        while ($x=<SOX>)
        {
                #print "$x";
                if ($x=~/^Maximum.+amplitude:.*([0-9]\.[0-9].*)/)
                {
                        $vol=$1;
                }
        }
        close SOX;
        system("rm -f /tmp/$tmp\.wav");
        return $vol;
}

sub refvol
{
        my $tmp="$$.cutmp3";
        `mpg123 -q -w /tmp/$tmp\.wav $datei 2>&1 >/dev/null`;
        open SOX,"sox -t wav /tmp/$tmp\.wav -t wav /dev/null stat 2>&1|";
        while ($x=<SOX>)
        {
                #print "$x";
                if ($x=~/^Maximum.+amplitude:.*([0-9]\.[0-9].*)/)
                {
                        $vol=$1;
                }
        }
        close SOX;
        system("rm -f /tmp/$tmp\.wav");
        return $vol;
}

sub startframe
{
        $frame=0;
        while (framevol($frame)<($refwert/15)) # 1/15 des Maxwertes
        {
                $frame++;
                if ($frame > ($frames-10))
                {
                        die "Start nicht gefunden.";
                }
        }
        if ($frame == 0)
        {
                $frame=1;
        }
        return $frame;
}

sub endframe
{
        $backframes=0;
        while (framevol($frames-$backframes)<($refwert/15)) # 1/15 des  Maxwertes
        {
                $backframes++;
                if ($backframes > ($frames-10))
                {
                        die "Ending nicht gefunden.";
                }
        }
        if ($backframes > 0)
        {
                $backframes--;
        }
        return $frames-$backframes;
}

$realdatei=$ARGV[0];
$datei=$$.".cutmp3";

rename $realdatei,$datei; # Temporaerdatei ohne Sonderzeichen anlegen

$frames=`mp3info -p %u $datei`;
print "Datei hat $frames Frames.\n";
$refwert=refvol;
print "Maximale Lautstaerke (1 = 100%) $refwert\n";
$startframe=startframe;
print "Ermittelter Startframe: $startframe\n";
$endframe=endframe;
print "Ermittelter Endframe: $endframe\n";

if ($startframe >= $endframe)
{
        die "Es konnten keine sinnvollen Werte ermittelt werden.\n";
}

system("mp3asm -v -t -s $startframe -e $endframe -o $datei.final $datei ");
rename $datei.".final",$realdatei; # Temporaerdatei in endfueltige Datei umbennen
unlink $datei; # Temp.Datei wegraeumen
Einfach Text ausschneiden und in eine Textdatei einfügen und chmod 755 nicht vergessen.

Christoph
 
Status
Nicht offen für weitere Antworten.
Oben