Audio-Formate konvertieren

Aus LinuxUser 11/2004

Audio-Formate konvertieren

Auf den Trichter gekommen

Die Kommandozeile rockt – in dieser “Zu-Befehl”-Folge zeigen wir, wie Sie Audio-CDs auslesen und die Sound-Dateien in andere Formate umwandeln. Ob Wav, MP3 oder Ogg Vorbis: Auf der Shell konvertieren Sie mit wenigen Handgriffen.

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, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Um Audio-Dateien in andere Sound-Formate zu konvertieren, muss man nicht zu einem grafischen Tool greifen: Auf der Kommandozeile wandeln Sie mit wenigen Befehlen Wav-Dateien ins MP3- oder Ogg-Vorbis-Format und wieder zurück. Auch zum Auslesen von Audio-CDs müssen Sie nicht extra ein grafisches Programm bemühen.

Wir stellen zunächst zwei Kommandozeilenprogramme vor, mit denen Sie Musikstücke im Wav-Format aus Audio-CDs auslesen. Die beiden Grabber cdda2wav und cdparanoia stehen hier hilfreich zur Seite. Danach zeigen wir Tricks und Kniffe zur Umwandlung verschiedener Audio-Formate und beschreiben, wie Sie mit Bash-Features Schwung in die Sache bringen.

Wav-Dateien mit cdda2wav grabben

Das Programm cdda2wav[1] (“compact disc digital audio to Wav”) ist bei den meisten Distributionen auf den Installationsmedien zu finden; auf Debian-Systemen können Sie das Tool auch mit dem Aufruf

apt-get install cdda2wav

installieren. Überprüfen Sie vor dem ersten Aufruf, ob Sie auf das CD-ROM-Laufwerk als normaler Benutzer zugreifen können (Kasten 1).

Kasten 1: Zugriffsrechte für das CD-ROM-Device anpassen

Wer auf das CD-ROM-Laufwerk zugreifen darf, ist bei den verschiedenen Distributionen unterschiedlich geregelt. Die Rechte für das entsprechende Device lesen Sie mit dem Kommando ls -l aus:

$ ls -l /dev/cdrom
lrwxrwxrwx  1 root  root     3 Jun  7 00:41 /dev/cdrom -> hdc

Wie zu erwarten ist /dev/cdrom ein symbolischer Link und zeigt in diesem Fall auf die Gerätedatei hdc. Ein erneuter ls-Aufruf zeigt deren Zugriffsrechte an:

$ ls -l /dev/hdc
brw-rw—-  1 root  disk 22, 0 Mar 14  2002 /dev/hdc

Debian-spezifisches

Während die meisten Distributionen einfach den Besitzer des Laufwerks ändern, wenn Sie sich am System anmelden, verfolgt Debian ein anderes Konzept: Das Gerät gehört standardmäßig zur Gruppe disk. Da es aus Sicherheitsgründen aber nicht ratsam ist, Benutzer der Gruppe disk hinzuzufügen (Schreibrechte auf Festplattenpartitionen), ändern Sie hier zunächst als Administrator root die Gruppenzugehörigkeit auf cdrom:

chown root.cdrom /dev/hdc

Anschließend bearbeiten Sie (wiederum als Administrator) die Datei /etc/group und fügen die Benutzer, die auf das Laufwerk zugreifen sollen, der Gruppe cdrom hinzu. Mehrere Accounts hängen Sie einfach durch Kommata getrennt (ohne Leerzeichen) hintereinander, z. B.:

cdrom:x:24:huhn,petronella

Damit die Änderungen wirksam werden, muss sich der Benutzer neu am System anmelden. Mit dem Kommando groups überprüfen Sie, ob alles geklappt hat – es zeigt die Gruppenzugehörigkeit des Benutzers auf das Kommandozeile an:

$ groups
audio cdrom video

Um einen Titel auszulesen, verwenden Sie cdda2wav mit dem Parameter -t und der Track-Nummer. Zusätzlich möchte das Programm den Device-Namen des CD-ROM-Laufwerks wissen. Sie geben diesen hinter der Option -D an:

$ cdda2wav -D /dev/hdc -t 1
…
recording 276.6666 seconds stereo with 16 bits @ 44100.0 Hz ->'audio'…
 0/ 0/ 1/      0  11%

Die Programmausgabe zeigt neben Informationen zu den einzelnen Titeln auch die CDDB-Disk-ID und eine Fortschrittsanzeige am unteren Rand an. Die fertige Wav-Datei trägt anschließend den Namen audio.wav und landet im aktuellen Verzeichnis. Tipp: Wer den Device-Namen nicht immer wieder eingeben will, setzt die Umgebungsvariable CDDA_DEVICE temporär durch Eingabe von

export CDDA_DEVICE=/dev/hdc

in der aktuellen Shell oder schreibt diesen Befehl in die eigene .bashrc und speichert ihn damit dauerhaft. Vergessen Sie nicht, die geänderte Bash-Konfigurationsdatei mit dem Aufruf

source ~/.bashrc

neu einzulesen. Alternativ greifen die Änderungen beim nächsten Login auch automatisch.

Um mehrere (oder alle) Tracks auszulesen, hängen Sie an den Parameter -t durch ein Pluszeichen voneinander getrennt die Nummern des ersten und des letzten Tracks an, also z. B.

cdda2wav -t 1+3

für die ersten drei Stücke. Damit die Ausgabe nicht in einer einzigen Wav-Datei, sondern in einzelnen Dateien landet, geben Sie dem Programm zusätzlich die Option -B mit (Abbildung 1). Die einzelnen Tracks heißen anschließend audio_01.wav, audio_02.wav usw.

Abbildung 1: Mit "cdda2wav" lesen Sie Audio-CDs im Handumdrehen aus.

Abbildung 1: Mit “cdda2wav” lesen Sie Audio-CDs im Handumdrehen aus.

Paranoid? Wav-Dateien mit “cdparanoia” auslesen

Das Programm cdparanoia[2] kann als Alternative zu cdda2wav zum Auslesen von Musik-CDs verwendet werden. Auch dieses Tool liefern die meisten Distributionen mit. Einen ersten Test starten Sie auf der Kommandozeile mit dem Parameter -Q. Sollten Sie keine Ausgabe wie in Listing 1 sehen, sondern eine Fehlermeldung wie z. B.

/dev/cdrom exists but isn't accessible.

erhalten, überprüfen Sie die Rechte für die Gerätedatei. Wie in Kasten 1 beschrieben, ist es sinnvoll, die Gerätedatei der Gruppe cdrom zuzuweisen und Benutzer für den CD-Zugriff in die Gruppe aufzunehmen.

Listing 1

Ausgabe von “cdparanoia -Q”

$ cdparanoia -Q
cdparanoia III release 9.8 (March 23, 2001)
(C) 2001 Monty <monty@xiph.org> and Xiphophorus
Report bugs to paranoia@xiph.org
http://www.xiph.org/paranoia/
Table of contents (audio tracks only):
track        length               begin        copy pre ch
===========================================================
  1.     8515 [01:53.40]       33 [00:00.33]    no   no  2
  2.    20750 [04:36.50]     8548 [01:53.73]    no   no  2
  3.    21827 [04:51.02]    29298 [06:30.48]    no   no  2
  4.     9848 [02:11.23]    51125 [11:21.50]    no   no  2
  5.    33262 [07:23.37]    60973 [13:32.73]    no   no  2
  6.    19750 [04:23.25]    94235 [20:56.35]    no   no  2
  7.    21835 [04:51.10]   113985 [25:19.60]    no   no  2
  8.    16148 [03:35.23]   135820 [30:10.70]    no   no  2
  9.    17562 [03:54.12]   151968 [33:46.18]    no   no  2
 10.    22103 [04:54.53]   169530 [37:40.30]    no   no  2
TOTAL  191600 [42:34.50]    (audio only)

Einen Track lesen Sie mit cdparanoia aus, indem Sie ganz einfach die Nummer des Stückes angeben, z. B.

cdparanoia 1

Ebenso definieren Sie eine Liste von Tracks: Wenn Sie beispielsweise die ersten fünf Titel grabben wollen, geben Sie diese durch 1-5 an. Sobald Sie mehr als einen Track auslesen, müssen Sie dem Programm zusätzlich den Parameter -B übergeben, damit nicht alles in einer Wav-Datei landet, also

$ cdparanoia -B 1-2
…
outputting to track01.cdda.wav

Eine ASCII-Anzeige informiert über den Fortschritt – außerdem sehen Sie, dass cdparanoia die Wav-Dateien track01.cdda.wav, track02.cdda.wav usw. nennt.

Aus Wav wird MP3

Viele Wege führen nach Rom – so gibt es gleich mehrere Kommandozeilen-Tools, die Wav-Dateien ins MP3-Format wandeln. Eines der beliebtesten Konvertierungs-Tools ist lame[3]. Während es auf der Projekt-Homepage lediglich den Quellcode zum Downloaden gibt, finden Sie über Suchmaschinen wie rpmseek.com[4] vorkompilierte Pakete für Debian und RPM-basierte Distributionen. Der Link zum Debian-Paket zeigt leider ins Leere – Sie finden Pakete für alle drei Zweige (stable, testing und unstable) unter [5].

Ohne weitere Optionen auf eine Wav-Datei losgelassen, produziert lame MP3-Dateien mit einer Bitrate von 128 Kbps. Geben Sie keinen Namen für die MP3-Datei an, wählt lame selbst:

$ lame audio_01.wav
…
Encoding audio_01.wav to audio_01.wav.mp3
…

Alternativ geben Sie den Namen der Ausgabedatei einfach an:

lame audio_01.wav 01.mp3

Um eine bessere Klangqualität zu erreichen, ändern Sie die Bitrate mit dem Parameter -b. So arbeitet lame beim Aufruf

lame -b 192 1.wav 1.mp3

mit 192 Kbps. Da lame standardmäßig nicht mit Wildcards umgehen kann (ein Aufruf wie lame *.wav also mit einer Fehlermeldung abbricht), können Sie mit einer kleinen for-Schleife die Vorzüge der Kommandozeile elegant ausreizen und alle Wav-Dateien im Verzeichnis mit einem Rutsch umwandeln, die Dateiendung .wav mit dem basename-Kommando abschneiden und den MP3s die richtige Endung verpassen:

for i in *.wav; do lame $i `basename $i .wav`.mp3; done

Aus MP3 wird wieder Wav

Das Programm lame können Sie ebenso dazu benutzen, aus MP3-Dateien wieder Wav-Dateien zu erzeugen – durch die verlustbehaftete Kodierung ins MP3-Format müssen Sie hier natürlich mit einer geringeren Qualität für die Wav-Datei rechnen, als wenn Sie direkt eine Audio-CD auslesen. Zusammen mit der Option --decode drehen Sie den Spieß um, und aus MP3 wird Wav:

$ lame --decode 01.mp3
input:  01.mp3  (44.1 kHz, 2 channels, MPEG-1 Layer III)
output: 01.mp3.wav  (16 bit, Microsoft WAVE)
skipping initial 1105 samples (encoder+decoder delay)
Frame#   807/4348   128 kbps  L  R

Auch in diesem Szenario sorgt lame selbst für einen passenden Dateinamen, wenn Sie diesen nicht explizit angeben. Und auch hier kann eine for-Schleife wie aus dem vorigen Abschnitt dabei helfen, alle Dateien in einem Rutsch zu konvertieren.

Eine Alternative bietet der Kommandozeilen-Player mpg123[6]. Mit dessen Option -w wandeln Sie MP3- in Wav-Dateien um:

$ mpg123 -w datei.wav 01.mp3
…
Playing MPEG stream from 01.mp3 …
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
[1:53] Decoding of 01.mp3 finished.

Achten Sie auf die Reihenfolge der Ein- und Ausgabedatei: Zuerst erscheint die Ausgabedatei hinter der Option -w, danach erst der Name der MP3-Datei, die Sie umwandeln wollen.

Aus Wav mach Ogg

Ogg Vorbis ist eine freie Alternative zu MP3 – frei in dem Sinne, dass die Codecs patentfrei und unter einer freien Lizenz veröffentlicht sind. Darüber hinaus bietet dieses Format höhere Klangqualität. Wenn Sie von den Installationsmedien das Paket vorbis-tools installieren, haben Sie neben dem Kommandozeilen-Player ogg123 auch Encoder und Decoder mit an Bord. Um Wav-Dateien in Ogg-Vorbis-Dateien umzuwandeln, setzen Sie das Programm oggenc ein:

$ oggenc 01.wav
Opening with wav module: WAV file reader
Encoding "01.wav" to
         "01.ogg"
at quality 3.00
        [ 17.8%] [ 1m24s remaining]

Auch dieses Tool legt automatisch den neuen Dateinamen fest – anders als bei den anderen hier vorgestellten Programmen versteht oggenc allerdings auch Wildcards und wandelt mit einem einzigen Befehl (oggenc *.wav) alle Wav-Dateien eines Verzeichnisses um (Abbildung 2).

Abbildung 2: Das Programm "oggenc" versteht auch Wildcards.

Abbildung 2: Das Programm “oggenc” versteht auch Wildcards.

Soll die Ausgabedatei einen anderen Namen haben, geben Sie diesen mit der Option -o an:

oggenc 01.wav -o bla.ogg

Besonders praktisch an oggenc ist, dass Sie direkt beim Umwandeln über Kommandozeilenparameter Informationen zu Künstler (-a), Albumnamen (-l), Titel (-t), Genre (-G) und das Datum (-d) angeben können:

oggenc 01.wav -a "The Alan Parsons Project" -t "Sirius" -l "Eye in the
Sky" -G "Pop" -d "1981" -o blubb.ogg

Gängige Abspielprogramme, wie z. B. XMMS, stellen diese (in ID3-Tags gespeicherten) Informationen anschließend richtig dar (Abbildung 3).

Abbildung 3: Wer bin ich? "oggenc" nimmt schon beim Umwandeln entsprechende Informationen entgegen.

Abbildung 3: Wer bin ich? “oggenc” nimmt schon beim Umwandeln entsprechende Informationen entgegen.

Von Ogg zu Wav

Genauso einfach ist das Umwandeln mit dem Kommando oggdec von Ogg Vorbis ins Wav-Format. Auch hier kommt wieder die Option -o zum Einsatz, wenn Sie explizit einen Dateinamen angeben möchten. Wildcards sind wieder problemlos: Mit

oggdec *.ogg

verwandeln Sie alle Ogg-Vorbis-Dateien eines Verzeichnisses in Wav-Dateien.

Fazit

Audio-Dateien zu konvertieren, ist auf der Kommandozeile ein Kinderspiel. Kommt ein Tool nicht mit Wildcards klar, helfen Bash-Features wie die for-Schleife weiter. Wem das alles zu aufwendig oder zu viel Tipp-Arbeit ist, der kann sich das Skript abcde[7] anschauen, das die hier vorgestellten Kommandos einsetzt und auch Kommentare oder ID3-Tags hinzufügt und die Titel per CDDB-Abfrage direkt richtig benennt.

Glossar

CDDB

Die “Compact Disk Database” enthält Informationen zu Audio-CDs und deren Titeln. Viele CD-Abspielprogramme fragen (eine Internet-Verbindung vorausgesetzt) automatisch einen freien CDDB-Server ab und laden die entsprechenden Informationen über Künstler, Albumname und Titelliste in die Playlist. CDDB selbst ist inzwischen ein kommerzieller Service, Linux-Player greifen daher meist auf die FreeDB-Datenbank (www.freedb.org) zu.

Bitrate

Beim Komprimieren von Sound-Dateien ins MP3-Format entscheidet die Bitrate (meistens in KBit pro Sekunde angegeben) über die Klangqualität. Je höher die Bitrate, desto besser der Klang der MP3-Datei, aber desto größer auch die Datei – in der Praxis sind sich Bitraten zwischen 128 und 192 Kbps sinnvoll.

Infos

[1] cdda2wav-Homepage: http://www.cdda2wav.de/

[2] cdparanoia-Web-Seite: http://www.xiph.org/paranoia/

[3] Das lame-Projekt: http://lame.sourceforge.net/

[4] Suchmaschine für RPMs und Debian-Pakete: http://rpmseek.com/

[5] lame für Debian Linux: ftp://ftp.nerim.net/debian-marillat/

[6] Kommandozeilen-MP3-Player mpg123: http://www.mpg123.de/

[7] Heike Jurzik, “Music was my first love… – abcde – A Better CD Encoder”, LinuxUser 04/2003, S. 70 ff., http://www.linux-user.de/ausgabe/2003/04/070-zubefehl-abcde/

LinuxUser 11/2004 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