MPEG-1 Audio Layer 3

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Das Audioformat MPEG-1 Audio Layer 3 / MP3 ist ein Dateiformat zur verlustbehafteten Audiodatenkompression. MP3 bedient sich dabei der Psychoakustik mit dem Ziel, nur für den Menschen bewusst hörbare Audiosignale zu speichern. Dadurch wird eine Datenkompression möglich, welche die Audioqualität nicht oder nur gering beeinträchtigt. Das Format ist ein indirekter Vorgänger qualitativ und funktionell überlegener Formate wie AAC oder Vorbis. MP3 ist allerdings nicht frei, sondern durch Lizenzen und Patente geschützt.

Inzwischen kann praktisch jeder Medienspieler MP3 abspielen und das Format hat auch Einzug in mobile Abspielgeräte, Blu-Ray-Geräte, Handys, Festnetztelefone, Anrufbeantworter, Spielkonsolen und professionelle Aufnahmegeräte gehalten.

Zur Bearbeitung von MP3-Dateien gibt es viele Programme, darunter

  • Audacity ist ein Audeioeditor.
  • checkmate überprüft MP3-Dateien auf Fehler.
  • cutmp3 ist ein kleiner MP3-Editor.
  • lame ist ein Audioencoder zur Erzeugung von MP3-Dateien.
  • mp3gain normalisiert die Lautstärke von MP3-Dateien.
  • mp3info liefert Informationen über MP3-Dateien.
  • sox ist ein Audiokonverter.

Umwandlung

MP3-Datei (>128kbps) in MP3-Datei (128kbps) umwandeln.

$ lame -h --mp3input file.mp3

(ungetestet) Alle MP3-Dateien im aktuellen Verzeichnis in OGG-Dateien umwandeln.

$ normalize-mp3 --ogg *.mp3

MP3-Datei "file.mp3" ins Raw-Datei "file.raw" umwandeln.

$ mpg123 -s file.mp3 > file.raw

MP3-Datei in WAV-Datei umwandeln.

$ lame --decode file.mp3

MP3-Datei "file.mp3" in WAV-Datei "file.wav" umwandeln.

$ mpg123 -s file.mp3 | sox -t raw -r 44100 -c 2 -s -w - file.wav

Alle MP3-Dateien im aktuellen Verzeichnis in WAV-Dateien umwandeln.

$ for i in *.mp3; do lame --decode "$i" "$i".wav; done

Playlist

Erstellen der Playlist "playlist.m3u" aus allen MP3-Dateien im aktuellen Verzeichnis.

$ ls -tr *.mp3 > playlist.m3u

Erstellen eines Playlist-Archivs. Der Pfad zum Archiv kann als Parameter ($1) an das Skript übergeben werden. die Variable "ROOT" setzt einen Standardwert (nämlich "/usr/local/share/MP3") für den Fall, dass kein Parameter angegeben wurde. Den Pfad zur aktuellen Datei extrahiert das Skript innerhalb der Schleife mit dirname und basename. Das Skript soll die Playlisten in Verzeichnisse mit dem Namen des Interpreten einsortieren. Dabei wird davon ausgegangen, dass das Archiv jeweils Unterverzeichnisse für Bands und deren Alben enthält. Die awk-Variable NF erlaubt via "NF-1" den Zugriff auf das vorletzte Element des Pfads, das dem Namen der Band entspricht. Alternativ könnte diese Information natürlich auch mit mp3info extrahiert werden.

#!/bin/bash
#
# Make playlist archive
# path: $1/band/album/*.m3u

IFS="
"
ROOT=${1:-/"/usr/local/share/MP3"}
ALL=' find $ROOT -name \*.m3u'

for i in $ALL; do
   DIR='dirname $i'
   FILE='basename $i'
   SONGS='cat $i'
   BAND=$(echo "$DIR" | awk -F "/" '{print $(NF-1)}')
   echo "$BAND $FILE"
   mkdir -p $BAND
   rm -f ${BAND}/${FILE}
   for j in $SONGS; do
      echo "${DIR}/${j}" > ${BAND}/${FILE}
   done
done

Automatisches Entfernen von Stille an Dateianfang und -ende

Unter Microsoft Windows gibt es das Programm Mptrim Pro, mit dem automatisch Stille am Anfang und Ende einer MP3-Datei entfernt werden kann. Mp3directcut schneidet framegenau ohne Umwandlung in andere Formate.

Unter Linux habe ich bisher nichts derartiges gefunden. Die Anforderungen wären:

  • es muss nicht jede Datei einzeln angefasst werden, das Programm muss also batchfähig sein
  • es darf keine Umwandlung in WAV oder andere Formate stattfinden, die MP3-Datei soll direkt geschnitten werden

Unter Linux scheint es keine MP3-Editoren zu geben, die MP3-Dateien direkt schneiden können:

  • cutmp3 kann zwar Stille entfernen - aber wie das gehen soll?
  • crip kann zwar Stille entfernen, in MP3-Dateien allerdings nur in der alten Version 1.0, die Sox 12.17.0 als Grundvoraussetzung hat - Sox wiederum wandelt Dateien erst in WAV um, taugt also auch nicht.

Weblinks