Echtzeit mp3 Aufnahmen, Teil 2
ArticleCategory: [Artikel Kategorie]
Applications
AuthorImage:[Bild des Autors]
TranslationInfo:[Author and translation history]
original in nl Philip de Groot
nl to en Philip
de Groot
en to de Guido
Socher
AboutTheAuthor:[�ber den Autor]
Bald bekommt er seinen Doktor von der Universit�t
Nijmegen in Chemometrie. Er arbeitet
gern mit Linux und schreibt regelm��ig seine Erfahrungen
auf.
Abstract:[Zusammenfassung]
Dieser Artikel ist eine Fortsetzung eines fr�heren Artikels
�ber Echtzeit mp3 Aufnahmen von z.B Radio�bertragungen.
Ich habe gezeigt, wie 12 Stunden Musik in einer 650 MB gro�en
Datei oder 24 in einer 1.3 Gigabyte Datei gespeichert werden
k�nnen mit fast CD Qualit�t (128 kbit/s; Stereo). Wie
handhabt man nun solche gro�en Dateien? Kann man noch
l�ngere Aufnahmen machen oder die Musik noch st�rker
komprimieren? Wie steht es mit der Qualit�t? Wir werden
versuchen diese Fragen zu beantworten.
ArticleIllustration:[Titelbild des Artikels]
ArticleBody:[Der eigentliche Artikel]
Editieren von mp3-Dateien
Angenommen Du hast eine wundersch�ne Aufnahme von 24 Stunden
Musik, z.B die Eighties Top 300 aus
einer Radiosendung wie von Loostad radio aufgenommen und du
m�chtest diese Aufnahme in kleinere Dateien aufteilen. Dabei
m�chtest Du auch Reklame und Nachrichtensendungen entfernen.
Wie kann man das am besten machen? Ein Vorschlag w�re:
- Dekodiere die mp3 Datei in eine Wavedatei.
- Nimm einen Wave Editor, um die Schneidearbeiten
durchzuf�hren.
- Kodiere die Wavedatei wieder in eine mp3 Datei.
Dieses Verfahren w�rde theoretisch funktionieren und entgegen
der allgemeinen Meinung verursacht das Wiederaufnehmen einer Wavedatei
mit dem exakt gleichen mp3 Algorithmus auch keinen
Qualit�tsverlust. Diese Verfahren hat jedoch in der Praxis
einige Probleme:
- Das Dekodieren einer 650 MB mp3 Datei ergibt eine 6.5 Gigabyte
Datei (Kompressionsfaktor ist etwa 10). �ber die n�tige
CPU Zeit wollen wir gar nicht reden.
- W�hrend des Dekodierens bleibt die Originaldatei
bestehen. Dadurch wird noch weiterer Speicherplatz ben�tigt.
Falls Du also Aufnahmen in Teile von einer Stunde zerlegen
m�chtest, brauchst Du 2x6.5=13 Gigabyte!
Kurzgesagt, Du brauchst ein Programm, das in der Lage ist mp3
Dateien selbst zu editieren. Solche Programme existieren, aber
nicht (im Moment) f�r Linux. Eine ganze Reihe solcher
Programme gibt es f�r Windows, aber die meisten haben ein
gro�es Problem: Sie k�nnen nicht mit mp3 Dateien von 650
MB umgehen. Ich habe ein Programm gefunden, das in der Lage ist mit
solchen Dateien zu arbeiten:
'Manns' mp3 edit'. Ich benutze das Programm unter Windows98. In
seinem graphischen Interface kann man Anfang und Ende des
gew�nschten St�ckes w�hlen. Man kann diese
St�ck mit dem 'trim' Befehl kopieren. Das Programm ist
'donationware', das hei�t du solltest daf�r zahlen, falls
das Programm Deinen W�nschen entspricht. Das Programm hat ein
Problem: Es ist furchtbar langsam bei einer 650 MB Datei und es
kann nur KONSTANTE Bitraten handhaben. Um z.B den Anfang der
letzten Stunde einer 24 Stundenaufnahme zu suchen, braucht es sehr lange
und involviert heftige Plattenzugriffe. Das 'Trimmen' des
entsprechenden Musikst�cks dagegen geht recht schnell. Bis
jetzt konnte ich noch keine Probleme bei den so bearbeiteten mp3
Dateien feststellen. Trotzdem �berpr�fe ich immer die
fertigen Dateien, indem ich sie nochmal in den mp3 Editor lade.
Falls das Laden funktioniert sind die Dateien OK. W�hrend
meiner ersten Experimente mit diesem Editor habe ich schon auf den
'trim'-Knopf gedr�ckt, w�hrend die Platte noch heftigst
arbeitete. Das f�hrte zu einer unbrauchbaren mp3 Datei. Um dir
einen Anhaltspunkt zu geben: Das Editieren einer 650 MB Datei
braucht etwa eine Stunde, haupts�chlich weil man immer warten
mu� (etwas frustrierend).
Lange mp3 Aufnahmen (>24 Stunden)
Es ist kein Problem, 24 Stundenaufnahmen von einem Radiosender zu
machen. Die Datei hat immer noch eine handhabbare Gr��e
(z.B 1.3 Gigabyte f�r 24 Stunden) und kann leicht auf der
Festplatte gespeichert werden. Die Sache �ndert sich, wenn man
z.B Aufnahmen �ber eine Woche hinweg machen m�chte.
M�glicherweise wird es nicht auf Deine Platte passen und du
m�chtest das Problem l�sen. Ich hatte dieses Problem als
ich die 'Alltimes Top 2000' zwischen Weihnachten und Neujahr 2000
(144 Stunden Musik) gesendet vom Niederl�ndischen
Nationalradio Radio 2 aufnehmen
wollte. Meine Platte war damals einfach zu klein. Ich mu�te
das auf andere Weise l�sen. Hier ist das Rezept:
- Erzeuge eine leere Datei, die genau auf eine 700 MB
CD-recordable (80 Minuten CD) pa�t.
- Erzeuge nun in dieser leeren Datei ein Linux
ext2-Dateisystem.
- Mounte diese Datei, so da� es wie eine separate Platte
behandelt werden kann.
- Nimm 12 Stunden Musik in mp3 auf dieser virtuellen Platte auf
(128 kbit/s; Stereo; ca 670 MB).
- Unmounte die Datei und mounte eine zweite Datei. Nimm
weiterhin auf der zweiten Datei auf.
- Kopiere die erste Datei mit einem CD Brenner. Das ist kein
Problem f�r den Computer, selbst wenn parallel dazu weiter
aufgenommen wird (Mein Computer ist ein Pentium II 450 MHz und
ich lasse kein XWindows laufen).
- Nachdem die CD erstellt ist, kann die mp3-Datei gel�scht
werden (die eigentliche mp3-Datei, nicht die Image Datei). Die
nun wieder leere Imagedatei kann f�r die n�chste
Aufnahme benutzt werden.
- Wiederhole diese Prozedur bis alles aufgenommen ist.
Ich habe dieses Verfahren benutzt, um die ganzen Top2000
aufzunehmen. Kein Problem. Ich benutzte 12 CDs w�hrend der
Aufnahmen, die ich jetzt , nach dem Zusammenschneiden, nicht mehr
benutze, aber das war n�tig f�r eine erfolgreiche
Aufnahme. Wie funktioniert das? Ich kam auf die Idee als ich die CD-Burning-Howto
gelesen hatte. Die n�tigen Schritte sind hier erkl�rt:
- Ich erzeugte 4 Imagedateien auf einer seperaten Partition.
Ich hatte noch 2.9 Gigabyte auf dieser Partition frei.
-
Ich nannte die Image-Dateien image_1, image_2, image_3, und
image_4:
dd if=/dev/zero of="image_1" bs=1024k count=700
Ich wiederholte diese Komanndo f�r alle 4. Das Erzeugen
dieser Imagedateien braucht seine Zeit.
-
Erzeuge das Linux ext2-Filesystem auf dem Image:
shell> /sbin/mke2fs -b 2048 image_1
empty_file is not a block special device.
Proceed anyway? (y,n) y
Beachte: Das ext2-Dateisystem braucht auch etwas Platz. Damit
hat man nicht die ganzen 700 MB f�r mp3 zur
Verf�gung.
-
Um die Imagedateien zu mounten, braucht man das loopback
Device. Loopback Device Unterst�tzung mu� im Kernel
vorhanden sein oder als separates ladbares Kernel Modul.
mount -t ext2 -o loop=/dev/loop1 image_1 /mnt
Nun kannst du �ber das /mnt-Verzeichnis auf den Inhalt von
image_1 zugreifen. Damit k�nnen die Aufnahmen anfangen.
-
Nach dem Beenden der Aufnahmen unmounted man die Imagedatei
und schreibt sie auf CD:
umount /mnt
cdrecord -v speed=2 dev=0,1,0 -data image_1
Beachte, da� die Option 'dev=0,1,0' von Deinem System
abh�ngt. (mit cdrecord -scanbus, kannst du herausfinden,
wie dieser Parameter bei dir hei�en wird). W�hrend
die Imagedatei auf CD geschrieben wird, kann man die Aufnahmen
schon auf der zweiten Imagedatei fortsetzen.
-
Testen der erzeugten CD:
mount -t ext2 /dev/scd0 /cdrom
Falls alles funktioniert hat, kannst du jetzt die aufgenommene
mp3-Datei �ber das Verzeichnis /cdrom sehen. Ich
m�chte anmerken, da� ich einige Probleme mit den
Kerneln 2.4.0 bis 2.4.2 hatte. Ich konnte mit ihnen keine CDs
mit ext2-Dateisystem mounten und es gab Probleme mit dem
loopback Device. Im Kernel 2.4.3 hat dagegen alles bestens
funktioniert, genauso wie mit den 2.2.x-Kerneln.
Der Vorteil diese Vorgehens ist die geringe Prozessorlast. Die
Imagedateien existieren schon und werden nur langsam gef�llt.
Man kann das mit einem Script automatisieren. Die CDs habe ich
jedoch immer von Hand gebrannt, falls es Probleme beim Brennen gibt, sieht
man es sofort.
Das war einmal aufgrund einer fehlerhaften LeerCD der Fall. Aus
diesem Grund erzeugte ich 4 Imagedateien. Damit h�tte ich 36
Stunden Zeit, um irgendwelche Probleme zu l�sen.
Das Script sah so aus:
#!/bin/sh
echo "loading modules for sound support..."
modprobe -k snd-card-sb16
modprobe -k snd-pcm-oss
modprobe -k snd-mixer-oss
echo "setting mixer..."
amixer set Line 31 unmute capture; amixer set Master 31; amixer set PCM 31
cd /where/ever/you/stored/the/images/
for i in 1 2 3; do
for ii in 1 2 3 4; do
echo "mounting image_$ii on /mnt ..."
mount -t ext2 -o loop=/dev/loop1 image_$ii /mnt
echo "starting mpegrec ..."
mpegrec -b 128 -x -mj -o /mnt/top2000_$ii.mp3
echo "umount /mnt"
umount /mnt
done
done
Ich habe alles OHNE XWindows gemacht, nur mit dem Bash-prompt.
Ich lud die Soundunterst�tzung von Hand, genauso wie die OSS
Emulation (notwendig, um einen korrekt funktionierenden ALSA-Treiber
zu erhalten) und den mixer Treiber. Nat�rlich k�nnte man
das mit pre-install/post-install Triggern in /etc/conf.modules
automatisieren. Die vierte Zeile im Script konfiguriert den Mixer:
Aufnahmequelle ist 'line-in' und die Lautst�rke wird auf
Maximum gestellt. Danach �bernimmt das Script das Mounten und
Unmounten der Imagedateien. Die mpegrec Option '-mj' ist f�r
joined stereo recording. Ich tat das, da ich kleinere mp3 Dateien
erwartete, aber das war nicht der Fall. Die n�chsten Aufnahmen
werde ich mit normalem Stereo machen. Das 'mpegrec' Programm sollte
nach 12 Stunden aufh�ren. Um das zu erreichen, editierte ich
den Quellcode und �nderte die maximal 24 Stunden (die ich
einfach im Quellcode beschrieben fand) in 12 Stunden um. Leider
funktionierte das nicht. Das Programm nahm weiter auf und ich
mu�te mit crtl-c abbrechen. Ich verstehe das 'mpegrec'
�berhaupt nicht mehr. Ich sollte den Quellcode genauer
lesen.....
Anmerkung:
Die neuste Version von cdrecord (cdrecord-1.9) brachte Probleme
beim Erzeugen der CDs. Die vorherige Version cdrecord-1.8.1,
arbeitete ohne Probleme. Ich l�ste das Problem, indem ich die
Firmware meines CD Recorders, Philips CDD 3610 von Version 3.02 aus
Version 3.09 updateted. Urspr�nglich vermutete ich, da�
die CD Brennprobleme durch den Kernel, 2.4.3, verursacht
w�rden, aber das stimmte nicht.
Die Qualit�t von mp3 Aufnahemen
Aufgrund des Feedbacks auf meinen vorangegangen Artikel (Talkbackpage)
erhielt ich einen Link auf eine Webseite mit interessanten
Informationen bez�glich mp3-Aufnahmen. Speziell die mp3
Qualit�t in Bezug auf die mp3 Bitrate ist dort hervorragend
erkl�rt. Die Adresse ist : http://www.r3mix.net/.
Zusammenfassung der wichtigsten Fakten:
- Eine sampling Rate von 128 kbit/s ist keine CD-Qualit�t.
Ein Auditorium konnte alle 128 kbit/s mp3 Dateien erkennen.
F�r Aufnahmen aus dem Radio spielt das jedoch keine Rolle,
da Radiomusik keine CD-Qualit�t hat. 128 kbit/s sind hier
mehr als ausreichend.
- Eine sampling Rate von 256 kbit/s ergibt echte
CD-Qualit�t. In anderen Worten: Es ist nicht m�glich,
den 256 kbit/s mp3-Stream von der orginal CD zu unterscheiden.
Trotzdem ist es immer noch m�glich
Kompressionsver�nderungen zu erkennen, aber nur wenn man
wei�, auf welche Teile der Musik man achten mu�.
- Aufnahmen mit Lame und variabler Bitrate (VBR) werden
empfohlen. Die Standard-Bitrate von 192 kbit/s (einen Wert, den
ich f�r merkw�rdig hielt) ist ein guter Startwert
f�r die meisten Zwecke. In Abh�ngigkeit von der
'Schwierigkeit' des Songs wird die Sampelrate dann etwas
erh�ht oder erniedrigt. Ein weiterer Vorteil ergibt sich bei
der Verwendung von Filtern. Damit erh�lt man eine bessere
Qualit�t bei geringerer Aufnahmerate. Philips entwickelte diese Filter
w�hrend der Entwicklung der CD Aufnahmetechnik und sie
k�nnen ohne Probleme benutzt werden.
All das wird im Detail auf der erw�hnten Webseite diskutiert.
Erzeugen einer kleinst m�glichen mp3 Datei
Unten werde ich ein Script diskutieren, das mir von einem Leser ,
via e-Mail, zugeschickt wurde. Das Script sieht so aus:
#!/bin/bash
echo "record $1 named ($3) for $2 seconds"
aumix -f ~/.aumixrc
/usr/bin/yes x | /usr/bin/radio $1 >/dev/null 2>/dev/null
sox -V -r 44100 -c 2 -t ossdsp -w -s /dev/dsp -t wav - 2>/dev/null |
lame - ~/$3.`/bin/date "+%H%M.%m-%d-%y"`.mp3 --resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice&
sleep $2
kill -9 $!
# copy the output to a different direcory. If you want you can
# replace cp by rcp or scp and copy it to a different computer:
cp $3.*`/bin/date "+.%m-%d-%y"`.mp3 /tmp/outputdir
Das Hauptziel des Scripts ist eine verst�ndliche
Radioaufnahme zu machen, die nur 3.5 megabyte/Stunde Plattenplatz
braucht! Mit verst�ndlich meine ich, da� man in der Lage
sein mu�, die aufgenommene Sprache zu verstehen.
Nat�rlich ist die Qualit�t furchtbar. Die erste Zeile des
Scripts konfiguriert den Mixer und startet das Radiokartenprogramm
sowie Sox. Der Trick besteht in den lame'-Optionen, die wir hier
untersuchen:
--resample 16 -b 8 -a -m m -h --lowpass 4 --highpass .12 --voice
--resample 16 |
Definiere erneut die re-sampling Rate der Ausgabedatei von
44 kHz auf 16 kHz. |
-b 8 |
Setze die sampling Rate auf 8 kbit/s. |
-a |
Kombiniere die Stereokan�le zu mono. |
-m m |
Erzwinge mp3 mono |
-h |
high-quality mp3 Kodierung (langsamer) |
--lowpass 4 |
Setze den Tiefpa�filter auf 4 KHz. Alle Signale
(Frequenzen) h�her als 4 kHz werden entfernt. |
--highpass .12 |
Setze den Hochpa�filter auf .12 kHz. Alle Frequenzen
unter .12 kHz werden entfernt. |
--voice |
Benutze eine mp3-Kompression, die f�r Sprache optimiert
ist. |
Es ist klar, da� man eine hohe Kompression f�r Sprache
erhalten kann. Meist ist das nicht unbedingt erw�nscht, aber
hier die M�glichkeit aufgezeigt.
Ein Standard-Script f�r mp3 Aufnahmen
Dieses Script wurde �ber die TalkBack
Seiten geschickt (Ich bin dankbar daf�r: Jeder kann von
dieser Information profitieren!). Das ist eine gro�er Vorteil
der TalkBack Seiten, die f�r den letzten Artikel und f�r
diesen Artikel vorhanden sind. Jeder kann seine Erfahrungen
ver�ffentlichen oder andere Besucher um Rat fragen. In kurz:
eine gro�e Menge an Informationen wird zusammengebracht und
ist f�r jeden verf�gbar. Das Script nennt sich
'mp3_record' und sieht so aus:
#!/bin/sh
/usr/local/bin/mpegrec \
-l 5400 \
-x '--preset fm \
--tt "Computers in Your Life" \
--tl "Open Line with Tom Wieble" \
--ta "Tom Wieble" --ty `date +%Y` \
--tg "Speech" \
--tc "Copyright (c) 1997 - `date +%Y` WOSU" -c' \
-o open_line_`date +%d%b%y`_`date +%H%M`.mp3
Die Option '-l 5400' setzt die Aufnahmenzeit auf 90 Minuten.
Alle Optionen nach '-x' werden direkt an 'lame' weitergegeben
(lines 4 to 9) und die '-o' Option speichert die Dateien als
'Datum_Zeit.mp3'. Diese Zeilen k�nnen nach Bedarf angepasst
werden. F�r diesen Zweck mag es n�tzlich sein, sich die
'lame'-Optionen genauer anzusehen. Die Optionen von Lame sind in
der folgenden Tabelle zusammengefa�t:
--preset fm |
Lame kennt einige Standardeinstellungen. 'fm' ist f�r
Fm-Radioaufnahmen. Ich bevorzuge jedoch die normalen Aufnahmen
mit 128 kbit/s. |
--tt "Computers in Your Life" |
'--tt' Setze den Titel einer Aufnahme (30 Zeichen
maximal). |
--tl "Open Line with Tom Wieble" |
'--tl': Abbum, oder: Urspr�ngliche Quelle (30 Zeichen
max). |
--ta "Tom Wieble" --ty `date +%Y` |
'--ta': K�nstler (30 Zeichen max). |
--tg "Speech" |
'--tg': Gattung (Name oder Nummer). |
--tc "Copyright (c) 1997 - `date +%Y` WOSU"
-c" |
'--tc': Kommentar ( 30 Zeichen max). |
Kurz gesagt eine sch�ne Art mp3 Dateinen zu erzeugen mit
Datum, Zeit und verschiedenen anderen Informationen. Es erfordert
etwas Zeit all das in ein Script zu packen, aber es ist gut zu
sehen, da� all dies m�glich ist.