Echtzeit mp3 Aufnahmen, Teil 2
    ArticleCategory: [Artikel Kategorie]
    Applications 
    AuthorImage:[Bild des Autors]
    ![[Photo of the Author]](../../common/images/PhilipGroot.jpg) 
 
    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]
    ![[Illustration]](../../common/images/article178/image_art178.jpg) 
 
    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.