Dazu gibt es ein Perl-Script namens amrconvert von http://xa.bi/mms/ . Notwendige Schritte um es zu erstellen:
- ftp://ftp.3gpp.org/Specs/latest/Rel-5/26_series/26104-520.zip herunterladen; dort wird das Tool »3GPP TS 26.104 V 5.2.0« bereitgestellt (hier kurz 26.104).
- unzip 26104-520.zip -d 26104-520; cd 26104-520; unzip 26104-520_ANSI_C_source_code.zip;
- cp makefile.gcc Makefile;
- in Makefile die Optionen -DETSI entfernen
- in decoder.c hinzufügen: #include “sp_dec.h”
- make;
- cp /var/www/cgw/26104-520/decoder /usr/local/bin/amr-decoder
- cp /var/www/cgw/26104-520/encoder /usr/local/bin/amr-encoder
- timidity, sox, lame und mpg123 installieren
- http://xa.bi/files/amrconvert speichern als /usr/local/bin/amrconvert.pl
- chmod a+x /usr/local/bin/amrconvert.pl;
- in amrconvert.pl editieren: Pfade für amr-encoder und amr-decoder
- entgegen http://xa.bi/mms/ wurde das Tool 26.104 so kompiliert dass es AMR-Dateien im Format »AMR MIME file storage format« ausgibt. Die Konvertierungen »ifs2amr« und »amr2ifs« im Script amrconvert.pl sind deshalb unnötig (sie führen sogar zu Fehlern). Man ändere das Script so dass diese Funktionen keinen Effekt mehr haben.
Statt mit amrconvert.pl kann man Konvertierungen zwischen WAV- und AMR-Dateien auch manuell durchführen. Vgl. auch http://www.aquarionics.com/article/name/How_to_convert_AMR_files_to_MP3 .
Konvertierung AMR zu WAV:
- Man lade sich eine AMR-Datei aus dem Internet herunter, z.B. von http://www.imserba.com/download/details.php?file=4887 .
- Konvertierung der AMR-Datei in eine RAW-Datei: amr-decoder test.amr test.raw
- Konvertierung der RAW-Datei in eine WAV-Datei: sox -r 8000 -w -c 1 -s test.raw -r 16000 -w -c 1 test.wav
- Die konvertierte Datei anhören: alsaplayer test.wav
Konvertierung von WAV zu AMR:
In 26104-520.zip ist ein Word-Dokument enthalten, das angibt: der AMR-encoder erwartet als Eingabe Dateien die aus 16-bit Worten bestehen von denen jedes ein 13-bit und links ausgerichtetes Sample enthält. Die Dateien haben 8kHz Samplerate, einen Kanal (Mono) und die Samples sind vorzeichenbehaftet linear encodiert.
- 1. Man erstellt man sich eine WAV-Datei zum Testen (mono, 22kHz): mpg123 -w test.wav -n 1000 -m -2 test.mp3
- 2. Man testet ob die WAV-Datei fehlerlos ist: alsaplayer test.wav
- 3. Um aus WAV-Dateien entsprechende RAW-Dateien zu machen verwendet man sox: sox test1.wav -r 8000 -w -c 1 -s test1.raw;
- 4. Um aus den RAW-Dateien AMR-Dateien zu machen verwendet man: amr-encoder MR74 test1.raw test1.MR74.amr
Leave a Reply