MP3-Encoder Vergleich

  • Ich hab für einen Freund ein kurzes Script erstellt, welches eine Wav-Datei mit verschiedenen Encodern (Fraunhofer, Lame, Blade, Xing und Gogo) in MP3s (96,128,320 kbit/s) umwandelt .
    Und das will ich auch euch nicht vorenthalten:

    Spoiler anzeigen
    [autoit]

    $sFile = FileOpenDialog("Wähle .wav-Datei", @ScriptDir, "(*.wav)")
    If @error Or Not $sFile Or Not FileExists($sFile) Then
    MsgBox(0, "ERROR", ".Wav-Datei nicht gefunden!")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _Encode("Encoder: Gogo - 96 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 96 -m j "' & $sFile & '" "' & @ScriptDir & '\96_gogo.mp3"')
    _Encode("Encoder: Gogo - 128 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 128 -m j "' & $sFile & '" "' & @ScriptDir & '\128_gogo.mp3"')
    _Encode("Encoder: Gogo - 320 kBit/s", @ScriptDir & '\Encoders\gogo.exe -b 320 -m j "' & $sFile & '" "' & @ScriptDir & '\320_gogo.mp3"')

    [/autoit] [autoit][/autoit] [autoit]

    _Encode("Encoder: Lame - 96 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b96 "' & $sFile & '" "' & @ScriptDir & '\96_lame.mp3"')
    _Encode("Encoder: Lame - 128 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b128 "' & $sFile & '" "' & @ScriptDir & '\128_lame.mp3"')
    _Encode("Encoder: Lame - 320 kBit/s", @ScriptDir & '\Encoders\lame.exe -mj -q0 --cbr -b320 "' & $sFile & '" "' & @ScriptDir & '\320_lame.mp3"')

    [/autoit] [autoit][/autoit] [autoit]

    _Encode("Encoder: Blade - 96 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 96 -q "' & $sFile & '" "' & @ScriptDir & '\96_blade.mp3"')
    _Encode("Encoder: Blade - 128 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 128 -q "' & $sFile & '" "' & @ScriptDir & '\128_blade.mp3"')
    _Encode("Encoder: Blade - 320 kBit/s", @ScriptDir & '\Encoders\blade.exe -br 320 -q "' & $sFile & '" "' & @ScriptDir & '\320_blade.mp3"')

    [/autoit] [autoit][/autoit] [autoit]

    _Encode("Encoder: Xing - 96 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\96_xing.mp3" -b48')
    _Encode("Encoder: Xing - 128 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\128_xing.mp3" -b64')
    _Encode("Encoder: Xing - 320 kBit/s", @ScriptDir & '\Encoders\xing.exe "' & $sFile & '" "' & @ScriptDir & '\320_xing.mp3" -b160')

    [/autoit] [autoit][/autoit] [autoit]

    _Encode("Encoder: Fraunhofer - 96 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\96_fraunhofer.mp3" -br 96000 -hq')
    _Encode("Encoder: Fraunhofer - 128 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\128_fraunhofer.mp3" -br 128000 -hq')
    _Encode("Encoder: Fraunhofer - 320 kBit/s", @ScriptDir & '\Encoders\fhg.exe "' & $sFile & '" "' & @ScriptDir & '\320_fraunhofer.mp3" -br 320000 -hq')

    [/autoit] [autoit][/autoit] [autoit]

    Func _Encode($sTitle, $sCmd)
    Local $iTimer = TimerInit()
    Local $aRegExp = StringRegExp($sCmd, '"[^"]*"', 3)
    If IsArray($aRegExp) And UBound($aRegExp) > 1 Then
    $aRegExp = $aRegExp[1]
    Else
    $aRegExp = ""
    EndIf
    ProgressOn("Encoding to MP3", $sTitle, $aRegExp)
    Local $foo = Run($sCmd, @SystemDir, @SW_HIDE, 0x8)
    Local $line
    While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    $aRegExp = StringRegExp($line, "([0-9.]+)\h*%", 3)
    If IsArray($aRegExp) Then ProgressSet($aRegExp[UBound($aRegExp) - 1])
    WEnd
    ConsoleWrite($sTitle & " Time: " & Round(TimerDiff($iTimer), 1) & "ms" & @LF)
    Sleep(200)
    ProgressOff()
    EndFunc ;==>_Encode

    [/autoit]

    Es ging darum zu zeigen, daß MP3 nicht gleich MP3 ist, sondern das Ergebnis sehr stark vom Encoder abhängt.
    Man sieht auch schon an der Geschwindikeit, daß die Encoder unterschiedlich genau arbeiten.

    E