Wie kann ich eine MP3-Datei möglichst klein encodieren ohne hörbare Qualitätsmängel, z.B. um sie per E-Mail zu verschicken? Wie kann ich das für eine ganze Sammlung tun (das Dateiformat »normieren«)?

April 30th, 2008 by matthias

Man verwende lame zur Kodierung mit variabler Bitrate einen Befehl der Form:

  1. lame -V 7 input.mp3 output.mp3

Bei der Option »-V« bedeutet:

  • 1: die meisten Frames haben 320 kbps (keines unter 128 kbps)
  • 2: die meisten Frames haben 256 kbps (keines unter 128 kbps)
  • 3: die meisten Frames haben 224 kbps (bei Musik; bei Sprache: 96-128 kbps)
  • 4: die meisten Frames haben 192 kbps
  • 5: die meisten Frames haben 160 kbps
  • 6: die meisten Frames haben 128 kbps
  • 7: die meisten Frames haben 112 kbps oder 96 kbps, je nach Musikstück
  • 8: die meisten Frames haben 96 kbps
  • 9: die meisten Frames haben 80 kbps (bei Musik; bei Sprache: 16-24 kbps)

Bei »-V 8« hört man deutlich, dass die hohen Frequenzen (etwa mit Besen gespieltes Schlagzeug) nicht mehr richtig zur Geltung kommen. Das ist meist noch akzeptabel, jedoch scheint »-V 7« die beste Kombination aus Qualität und Größe. »-V 9« produziert akzeptable Qualität bei Sprache (allerdings mit hörbarem Quantisierungsrauschen). »-V 8« scheint für Sprache die beste Wahl (es sind keine merklichen Qualitätsmängel hörbar). Will man in kompakter aber sehr hoher Qualität Sprachaufzeichnungen archivieren scheint »-V 3 -q 1« die beste Wahl: diese Aufzeichnungen enthalten viele Frames geringer Komplexität (z.B. Pausen) bei denen es völlige Verschwendung ist sie mit 128 kbps oder höher zu encodieren.

Es gibt verschiedene Noise-Shaping Algorithmen; »-V« impliziert »-h« (high quality), was »-q 2« ist. Theoretisch ergibt sich durch »-q 0« eine weitere Verbesserung. Sie ist jedoch praktisch nicht hörbar, dafür dauert der Codiervorgang aber etwa vierfach länger. Man verwende »-q 1«: dies ist gegenüber »-q 2« ebenfalls eine Verbesserung, der Codierungsaufwand ist aber noch vertretbar.

Um als Mono zu encodieren, füge man »-m m« hinzu. Das ergibt gegenüber Joint Stereo noch einmal eine Verkleinerung um 20-30%. Allerdings ist selbst bei Sprache durch die Recodierung eine deutliche Qualitätsverschlechterung (ähnlich dem Quantisierungsrauschen) hörbar.

Um Dateien in Serie umzukodieren verwende man:

  1. for file in *.mp3 ; do lame -V 7 "$file" "${file/.mp3/.varKbpsV7.mp3}"; done

Um in Serie umzukodieren mit 128 kbps konstanter Bitrate:

  1. for file in *.mp3 ; do lame -b 128 -h "$file" "${file/.mp3/.varKbpsV7.mp3}"; done

Posted in Audiobearbeitung |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.