Mpg123

mpg123


Konsolenausgabe von mpg123 beim Abspielen einer mp3-Datei.
Basisdaten

Entwickler Michael Hipp, Thomas Orgis, Nicholas Humfrey
Erscheinungsjahr 1999
Aktuelle Version 0.60
(29.08.2006)
Betriebssystem Unix-Systeme
Programmier­sprache C, Assemblersprache
Kategorie Decoder
Lizenz LGPL
deutschsprachig nein
http://mpg123.org/

mpg123 ist ein freier Audio-Spieler an der Kommandozeile für MPEG-Audio. Die unterstützten Formate sind MPEG-Layer 1, 2 und 3 (letzteres ist bekannt als MP3). Der Name mpg123 begründet sich in der Unterstützung der drei Audiolayer. mpg123 gehört zu den verbreitetsten MP3-Playern und viele weitere Projekte nutzen Code von mpg123.

Funktion und Eigenschaften

mpg123 dient dazu, um im MPEG-Audio-Format vorliegende Daten zu dekomprimieren und gegebenenfalls auszugeben. Dies bedeutet, das Programm kann als kommandozeilenbasierter Abspieler für Musik dienen. Durch seine diversen Optionen kann mpg123 jedoch auch als Dekomprimierstufe für ein anderes Programm genutzt werden.

Performance

mpg123 hat das Ziel die Daten in Echtzeit zu dekodieren und abzuspielen. Laut Homepage ist dies beispielsweise schon mit einem auf 120 MHz getakteten 80486-Prozessor möglich. Auf vielen moderneren Rechnern erzeugt mpg123 eine geringe Systembelastung. Deshalb kann man mehrere Instanzen von mpg123 gleichzeitig ausführen um beispielsweise verschiedene Räume zu beschallen. Mixerprogramme wie dermixd nutzen mehrere Instanzen von mpg123, um eine sanfte Überblendung - sogenanntes Crossfading - zwischen zwei Musiktiteln zu implementieren.

Darüberhinaus hat mpg123 speziell optimierten Code für 80386, 80486, Pentium, AltiVec, MMX und 3DNow!. Auf Systemen mit solchen Architekturen kann daher ein Performancegewinn erreicht werden.

Sollte die Performance für eine bestimmte Nutzung nicht genügen, kann man das eingebaute 2:1 und 4:1 Downsampling nutzen, um eine höhere Geschwindigkeit zu erzielen.

technische Eigenschaften

Das Programm läuft auf diversen Unix-Betriebssystemen. Offiziell unterstützt werden Linux, FreeBSD, SunOS 4.1.3, Solaris 2.5, HP-UX 9.x und IRIX. Eine Portierung auf Windows existiert[1].

Ebenso werden viele verschiedene Geräte zur Ausgabe des Tons unterstützt. Darüber hinaus beherrscht aber mpg123 auch die Variante, die dekodierten Daten an der Standardausgabe auszugeben. So können die Daten von einem anderen Programm weiterverarbeitet werden. Die Daten können auch als WAV in eine Datei oder auf die Standardausgabe geschrieben werden.

mpg123 nutzt normalerweise Gleitkommaarithmetik für die mathematischen Berechnungen, kann jedoch auch für die Nutzung von Festkommaarithmetik kompiliert werden. Dies unterscheidet mpg123 beispielsweise von MAD, welches immer Festkommaarithmetik nutzt. In vielen modernen Desktopprozessoren ist Gleitkommaarithmetik fest eingebaut und kann damit schnell verarbeitet werden. Auf Prozessoren für PDA's kann jedoch Festkommaarithmetik bessere Performance erreichen.

weitere Eigenschaften

Durch Tests[2] wurde gezeigt, dass mpg123 die Anforderungen der Spezifikation an die Korrektheit der Wiedergabe erfüllt.

Das Programm unterstützt Gapless Playback und wertet dafür Informationen von Lame aus. mpg123 wertet ID3-Tags der Versionen 1 und 2 aus. Die so gewonnenen Informationen werden in der Konsole ausgegeben. ReplayGain wird ebenfalls unterstützt.

mpg123 nimmt auch während des Dekodierens Tastaturbefehle an, womit die Musikausgabe gesteuert werden kann. Einige Frontends nutzen diese Funktionalität.

Geschichte

mpg123 wurde von Michael Hipp 1995 als Weiterentwicklung des mpegaudio-Pakets gestartet. Mit der Zeit kamen Beiträge weiterer Programmierer hinzu, hauptsächlich optimierte Dekodierroutinen für verschiedene Prozessorarchitekturen.

Beginnend 2000/2001 reduzierte sich die Aktivität der Weiterentwicklung an mpg123, nachdem zuvor mehrere Versionen in der 0.59-Reihe herausgebracht worden waren. Da mit der Zeit mehrere schwere Sicherheitslücken bekannt wurden[3], entwickelten die Linux-Distributionen Debian (ausgehend von mpg123 0.59r) und Gentoo (ausgehend von mpg123 0.59s) Patches zur Behebung dieser Sicherheitslücken. Michael Hipp wies Anfang 2005 auf diese Probleme hin und riet von der Nutzung der offiziellen, aber ungepflegten Version ab.

Neben diesen Varianten wurden von diversen Autoren Weiterentwicklungen als Patches angeboten. Im April 2005 startete Nicholas Humfrey ein Projekt auf Sourceforge. Er veröffentlichte eine Version namens mpg123-gpl, basierend auf der Version 0.59 und den Debian-Patches. Als Weiterentwicklung implementierte er die Nutzung von GNU-Autoconf. Unabhängig davon entwickelte Thomas Orgis 2005 mehrere Versionen von mpg123-thor, die basierend auf Version 0.59r einige frei verfügbare Patches einarbeitete, darunter die Debian-Sicherheitspatches. Darüberhinaus wurde die Konsolensteuerung überarbeitet[4].

Diese beiden Projekte begannen Ende 2005 zusammenzuarbeiten. Mit der Zustimmung von Michael Hipp entwickelten sie die neue 'offizielle' Version von mpg123. Nach mehreren Beta-Versionen erschien so am 29.08.2006 die Version 0.60 von mpg123. Das Datum wurde symbolisch gewählt, eines der MP3 betreffenden Patente lief an dem Tag in Deutschland aus[5].

Lizenz und Patente

Die aktuelle Version 0.60 von mpg123 ist unter der LGPL lizenziert. Das bedeutet das Programm erfüllt die Bedingungen für freie Software und Open Source.

Zu Beginn seiner Entwicklung wurde mpg123 jedoch noch unter der folgenden Bedingung veröffentlicht: free for private use, ask me when you want to do something commercial. Die Einschränkungen für die kommerzielle Nutzung vertragen sich nicht mit den Bedingungen für freie Software. Viele Linux-Distributionen setzten mpg123 daher in eine non-free-Sektion oder verzichteten ganz auf diese Software.

Aufgrund dieser Situation entwickelte Joe Drew 1999 ein Skript, um mpg123 für die Nutzung in FreeAmp zu ersetzen. 2001 entschied er sich, daraus einen kompletten Ersatz für mpg123 zu entwickeln, der vollkommen kompatibel aber auch freie Software sein sollte. Dieses Projekt nannte er mpg321.[6]

Michael Hipp änderte bei späteren Veröffentlichungen von mpg123 die Lizenz auf GPL und die Lizenz der mpglib auf LGPL. Damit wurde das Programm freie Software, der Bedarf für eine freie Alternative entfiel. Mit dem Release der Version 0.60 änderten die neuen Projektleiter die Lizenz für das komplette Paket auf LGPL.

Die Fraunhofer-Gesellschaft und Thomson halten eine ganze Reihe von Softwarepatenten rund um Techniken zur Nutzung des MP3-Formats.[5] Laut eigener Aussage verlangen sie jedoch keine Lizenzgebühren von Decodern. Zudem ist ein Teil dieser Patente bereits abgelaufen.[7]

Verbreitung und Varianten

Seit dem Release der Version 0.60 wird mpg123 täglich mehr als 100mal von Sourceforge heruntergeladen. Hinzu kommen die Downloads direkt von der Webseite von mpg123. Die verbreiteten Linux-Distributionen enthalten mpg123.

Michael Hipp erstellte 1998 eine Java-Variante unter dem Namen jmpg123. Diese Variante kam jedoch nie über die Version 0.1 hinaus. Zudem erstellte er eine Portierung der Layer-2-Funktionalität für einen DSP.

Von dem Programm gibt es eine Windows-Portierung[1]. mpg123 oder Codebestandteile davon wurden in vielen weiteren Projekten als Decoder für MP3 eingesetzt, so XMMS, MPlayer, LAME und als Plugin für Winamp.

Quellen

  1. a b Windows-Variante von mpg123 (japanisch)
  2. http://www.underbit.com/resources/mpeg/audio/compliance/
  3. CVE-2004-0991, Buffer-Overflow, CVE-2006-1655
  4. Webseite von mpg123-thor
  5. a b Liste der MP3 betreffenden Patente
  6. Homepage von mpg321
  7. Aussage vom Projektleiter zu den Patenten

Dieser Artikel nimmt am Schreibwettbewerb teil. Bitte hilf mit, ihn zu verbessern!