Zu Befehl

Aus LinuxUser 09/2001

Zu Befehl

Rock around the commandline

MP3s hören, in wav-Dateien umwandeln, Playlists abspielen, mit Shell-Skripten zusammenarbeiten – das alles und noch viel mehr kann das Programm mpg123. Bringen Sie Ihre Kommandozeile zum Singen!

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Mit xmms, kmp3 etc. finden Sie unter Linux mehr als einen komfortablen MP3-Spieler. Jedes dieser Programme hat Features, die über das reine Abspielen von Musikstücken hinausgehen.

Doch manchmal reicht auch schon ein Kommandozeilenprogramm ohne aufwändige Oberfläche. So gibt es auf der Konsole schon seit Längerem das Programm mpg123. Es funktioniert auf vielen Unix-Plattformen mit einem einfachen Kommandozeilenaufruf und ist nicht so speicherhungrig wie die GUI-Verwandten. Wie Sie mit ein paar Handgriffen auf der Konsole MP3s abspielen, Listen Ihrer Lieblingssongs erstellen und diese sortiert oder in einer zufällig ausgewählten Reihenfolge erklingen lassen, darum soll es in dieser “Zu Befehl”-Folge gehen.

Spiel mir das Lied

MP3, abgekürzt für “MPEG-(Moving Pictures Experts Group)-2 Layer III“, ist ein komprimiertes Audio-Format – Musikstücke werden in CD-Qualität auf etwa ein Zehntel der Dateigröße reduziert. Um diese über einen Computer abspielen zu können, sollten Sie einen ausreichend schnellen Rechner (mindestens einen Pentium) mit Soundkarte und die entsprechenden Ausgabegeräte (Lautsprecher oder Kopfhörer) besitzen.

Last but not least benötigen Sie eine Software, die die komprimierten Dateien wieder dekodiert. Auf der mpg123-Homepage ([1]) finden Sie die aktuelle Version (mpg123 0.59r) zum Download. Die meisten Distributionen haben das Programm ebenfalls als Paket dabei; schauen Sie auf Ihrem System nach, ob das Tool schon installiert ist:

huhn@asteroid:~$ which mpg123
 /usr/bin/mpg123

Wenn Sie darauf verzichten möchten, die jeweils neueste Version aus den Sourcen selbst zu kompilieren, installieren Sie ruhig einen Vorgänger, der bei Ihrer Distribution dabei ist. Mit dem Kommando mpg123 -v erhalten Sie Informationen über die auf Ihrem Rechner vorhandene Programmversion, z. B.

Version 0.59q (1999/Jan/26)

Alle in diesem Artikel vorgestellten Optionen funktionieren sowohl mit diesem Release als auch mit dem aktuellen.

Starten Sie einen ersten Versuch: Mit mpg123 datei.mp3 spielen Sie ein MP3 ab. Sollten Sie eine Meldung der Art Can't open /dev/dsp! erhalten, blockiert ein anderes Programm das Sound-Device. Sofern Sie nicht auf Anhieb herausfinden, welcher Prozess der Übeltäter ist, hilft das Tool lsof:

huhn@asteroid:~$ /usr/sbin/lsof | grep /dev/dsp
 xmms       2383 huhn   10w   CHR       14,3               9190 /dev/dsp

Hier sehen Sie, dass das Programm XMMS noch auf die Soundkarte zugreift. Beenden Sie den Prozess, und versuchen Sie es noch einmal:

huhn@asteroid:~/mp3$ mpg123 Subway_to_Sally_-_Der_Sturm.mp3
 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
 Version 0.59q (1999/Jan/26). Written and copyrights by Michael Hipp.
 Uses code from various people. See 'README' for more!
 THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
 Playing MPEG stream from
 Subway_to_Sally_-_Der_Sturm.mp3 …
 MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

Diesen Output bekommen Sie direkt in die Konsole. Einen “Stopp”-Knopf wie bei den grafischen Tools gibt es nicht, aber ein [Strg-C] tut hier seine Wirkung – der Prozess wird beendet. Mit den Tools zur Prozessverwaltung (vgl. LinuxUser 12/2000 [2]) können Sie an dieser Stelle noch weiter spielen.

Als Nächstes simulieren Sie eine “Pause”-Taste. Schauen Sie zunächst nach der PID (“Prozess-Identifikationsnummer”) von mpg123. Dazu schicken Sie das Programm direkt zu Beginn mit einem angehängten & in den Hintergrund und tippen dann ps ins Fenster:

huhn@asteroid:~/mp3$ mpg123 Subway_to_Sally_-_Der_Sturm.mp3 &[…]
 huhn@asteroid:~/mp3$ ps
   PID TTY          TIME CMD
 28010 pts/8    00:00:00 bash
 30928 pts/8    00:00:06 mpg123
 30929 pts/8    00:00:00 ps

Ein kill -STOP 30928 unterbricht den Prozess, beendet ihn aber nicht – Pause. Weiter geht’s mit kill -CONT 30928, das Abspielen wird fortgesetzt. Wahlweise können Sie dem Programm auch mehrere Dateien mit auf den Weg geben; diese werden dann der Reihe nach abgespielt. Drücken Sie zwischendurch [Strg-C], wird nur das aktuelle Musikstück abgebrochen, mpg123 geht direkt zur nächsten Sound-Datei weiter.

Schauen Sie sich jetzt die wichtigsten Optionen des Programms an. Ein mpg123 -t (Langform: --test) dekodiert die Datei, ohne Sound auszugeben. Mit dem Parameter mpg123 -v datei.mp3 (für --verbose) bekommen Sie Informationen zur MP3-Datei:

[…]
 Channels: 2, copyright: No, original: Yes, CRC: No, emphasis: 0.
 Bitrate: 128 Kbits/s, Extension value: 0
 Audio: 1:1 conversion, rate: 44100, encoding: signed 16 bit, channels: 2Frame#   112 [ 8835], Time: 00:02.92 [03:50.79],

Zuviel auf einmal? Verwenden Sie -q (--quiet), um die Meldungen abzuschalten. Um die CPU-Auslastung etwas zu dämpfen, können Sie mit den Optionen --2to1 bzw. --4to1 (kurz: -2 oder -4) experimentieren. Sie setzen die Rate von 44 kHz auf 22 oder 11 herunter – natürlich auf Kosten der Klangqualität.

Weitere Optimierungen können Sie mit -b größe (--buffer größe) erzielen. Mit der Größe (in kBytes) legen Sie einen Speicher fest für den Fall, dass das System mal überlastet sein sollte – normalerweise wird die Sound-Ausgabe dann nämlich unterbrochen. Wählen Sie mindestens eine Größe von 1024 kBytes (entspricht einem MByte), das sind ca. sechs Sekunden des Musikstücks:

huhn@asteroid:~/mp3$ mpg123 -b 1024 Subway_to_Sally_-_Der_Sturm.mp3

Playlist, hang the DJ!

Wie eingangs erwähnt kann mpg123 auch mit mehreren Dateien umgehen. Geben Sie einfach die Dateinamen hintereinander an: mpg123 datei1.mp3 datei2.mp3 ... oder für alle Dateien in einem Verzeichnis mpg123 *.mp3.

Geordnet ist die Abspielfolge damit noch nicht, aber mit ein paar Kommandozeilenhandgriffen haben Sie sich schnell eine eigene Wunschliste zusammengestellt. Tools wie WinAmp oder XMMS speichern auf Wunsch eine Liste von Songs in einer Playlist mit der Dateiendung .mu3 ab. Eine solche Liste kann immer wieder mit dem Programm eingelesen werden – die Songs werden in der von Ihnen zusammengestellten Reihenfolge abgespielt.

Eine bereits mit XMMS erstellte liste.mu3 recyclen Sie mit mpg123 -@ liste.m3u (oder --list liste.m3u) für den Kommandozeilen-Player. Ein [Strg-C] bringt Sie dabei zum nächsten Stück.

Werfen Sie doch mal einen Blick in eine solche XMMS-Playlist. Die Struktur ist einfach:

[…]
 /home/huhn/mp3/rock/AC-DC_-_Touch_Too_Much.mp3
 /home/huhn/mp3/rock/ACDC_-_Who_Made_Who.mp3[…]

Eigentlich werden da nur die Dateien mit der kompletten Pfadangabe aufgeführt. So etwas können Sie mit einem Editor Ihrer Wahl auch selbst erstellen und mit ein paar Handgriffen auf der Kommandozeile automatisieren. Angenommen Sie haben Ihre MP3-Dateien in Unterverzeichnissen sortiert, und es gibt eine Klassikabteilung, die Sie zusammenfassen möchten.

huhn@asteroid:~/mp3$ find /absoluter/Pfad/zum/Klassik-Verzeichnis -name "*.mp3" > ./klassik.m3u

Erinnern Sie sich an “Zu Befehl” 06/2000 ([3]), als es um find ging? Hier wird im Klassik-Verzeichnis nach allen Dateien gesucht, die auf .mp3 enden. Für diese gilt dann, dass sie auf der Standardausgabe (stdout) ausgegeben werden, welche diesmal nicht der Monitor ist, sondern mit > in eine Datei klassik.m3u umgeleitet wird.

Sie erhalten eine alphabetisch sortierte Liste. Soll diese nicht einfach der Reihe nach abgespielt, sondern das nächste Stück zufällig ausgewählt werden, fügen Sie dem Parameter -@ klassik.m3u noch ein -z (für --shuffle) hinzu.

Mit find kann man noch weiter spielen. Sie haben Ihre MP3s nicht oder schlecht sortiert und wissen, dass da irgendwo ein Stück von Loona liegt, an das Sie sich einfach nicht mehr genau erinnern? Der Aufruf

huhn@asteroid:~$ find /home/huhn/mp3/ -name "*oona*" | xargs mpg123

hilft weiter:

Playing MPEG stream from Loona_-_Baila_Mi_Ritmo.mp3

Das Programm xargs übergibt die von find erzeugte Liste an das Kommando mpg123, das nicht aus einer Pipe lesen kann.

Um MP3-Dateien auf eine Musik-CD brennen zu können, müssen sie als nicht komprimierte wav-Dateien vorliegen. Zum Umwandeln können Sie den Parameter -w nehmen:

huhn@asteroid:~$ mpg123 -w datei.wav datei.mp3

Kosmetik für die Sound-Dateien

Sofern Sie mpg123 nicht mit dem Parameter -q (--quiet) versehen, bekommen Sie bei manchen Files als Konsolenausgabe Infos über Künstler, Erscheinungsjahr, Genre oder Album:

[…]
 Title  : Touch Too Much                  Artist: AC/DC
 Album  : Highway To Hell                 Year: 1983
 Comment:                                 Genre: Hard Rock

Hier handelt es sich um sogenannte Tags, also Zusätze zu MP3-Musikdateien, die beispielsweise Informationen über den Titel, die Band sowie das Album enthalten. Diese zeigt der Player während der Wiedergabe an. Mit dem kleinen Kommandozeilentool mp3info ([4] und [5], siehe Kasten), von dem verschiedene Versionen in Umlauf sind, setzen und löschen Sie diese Tags.

Um einem Song neue oder andere Informationen zu geben, geben Sie bei der 0.2.16-Version auf der Kommandozeile Folgendes ein:

huhn@asteroid:~$ mp3info -t "Baila Mi Ritmo" -a "Loona" -l "Sommerhits 2001" -y "2001" -c "von /home/george/schnulzen" -g 58 Loona_-_Baila_Mi_Ritmo.mp3

Aufgelöst sieht das so aus: -t steht für Title, -a für Artist, -l für Album, -y für Year, -c für Comment” und -g für Genre. Bei der Option -g werden keine Strings (Zeichenketten) eingetragen, sondern ein numerischer Wert. Welcher Wert für welches Genre gilt, erfahren Sie mit mp3info -p. In der 0.8.X-Version können Sie die gleichen Parameter verwenden, statt mp3info -p gilt hier ein mp3info -G für die Ziffern der Stilrichtungen.

Versionen von mp3info

Sowohl aktuelle Debian- als auch Mandrake-Distributionen haben von diesem Programm die Version mp3info-0.2.16 von Thorvald Natvig in ihr Programm aufgenommen. Red Hat und SuSE setzen hingegen auf die Version mp3info-0.8.X von Ricardo Cerqueira und Cedric Tefft. Auf unserer Heft-CD finden Sie die Sourcen und RPMs für beide: mp3info-02.16 stammt von [4] und die 0.8-Versionen von [5].

Die Optionen der beiden Versionen unterscheiden sich nur in einigen Parametern und in der Liste der Genres voneinander. Ein Bedienungsbeispiel stellen wir im Text kurz vor.

Glossar

Frame

Ohne zu tief ins Detail gehen zu wollen: Unter einem Frame kann man eine Einheit des MP3-Bitstreams verstehen. Jede dieser Einheiten enthält eine feste Anzahl von Abtastwerten (Samples). Die Sample-Frequenz (rate) gibt an, wie häufig pro Sekunde das analoge Audiosignal abgetastet wird: rate: 44100 im Beispiel oben bedeutet also 44.100 Mal pro Sekunde. Das Ergebnis jeder Messung ergibt einen 16-Bit-Wert (encoding: signed 16 bit) und das Ganze für zwei Kanäle (Stereo).

LinuxUser 09/2001 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben