Op dezelfde manier als encoden van audio, is encoderen van CD een 2 stappen proces. Eerst de audio data van de cd afhalen en converteren naar een wav file. En dan de wav file naar MP3 converteren.
Er zijn 2 types encoders, console gebaseerd en X gebaseerd. Beiden doen het zelfde, maar de X gebaseerde zijn makkelijker te gebruiken (en zien er leuker uit).
Weer, voordat je begint met encoderen, kijk of je genoeg harde schrijf ruimte hebt op je systeem.
Ik heb een zeer simpel Perl script geschreven dat tracks van een Cd zal rippen en encoderen.
#!/usr/bin/perl
if ($ARGV[0] ne "") {
$count = 1;
do {
$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");
$track = "$ARGV[1]/track".$count.".mp3";
$enc = system("bladeenc /mp3/cdda.wav $track -br 256000");
$count++;
}
until $count > $ARGV[0];
exit;
}
else {
print "Usage cdriper [no of tracks] [destination directory]\n\n";
}
Onthoud: Het script hierboven is erg basic en heeft niks moderns, zoals
error checking. Verbeter als je wilt. :)
De belangrijkste regels zijn:
$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");
Deze regel roept de CD ripper, cdparanoia aan. Cdparanoia converteert ruwe CD audio data in het Wav formaat.
Ik gebruik Cdparanoia, maar als je CDDA2Wav wilt gebruiken zou het commando zo moeten zijn:
$cdcap = system("cdda2wav", $count, "/mp3/cdda.wav");
De opvallenste opties zijn $count, welke het nummer van de track om te rippen is, en dan het path voor de uitgevoerde Wav file. In mijn voorbeeld gaat dit door een tmp directory op mijn MP3 SCSI disk.
De Wav file wordt geconverteerd naar MP3 door het gebruik van BladeEnc.
Ik heb het Perl script geschreven om te voorkomen dat je elke track apart moet encoderen en rippen, en zodat je de batch mode van Cdparanoia niet nodig hebt. Dit vermindert het aantal benodigde vrije Mb's, omdat Cdparanoia een hele Cd in een keer ript, en dit neemt tot 600 MB.
Als je Lame of Gogo wilt gebruiken, verander de encoder regel dan naar:
$enc = system("lame /mp3/cdda.wav $track -b 256");
$enc = system("gogo /mp3/cdda.wav $track -b 256");
Hier is een dump van de verkrijgbare opties voor elke encoder.
BladeEnc
BladeEnc 0.91 (c) Tord Jansson Homepage: http://bladeenc.mp3.no =============================================================================== BladeEnc is free software, distributed under the Lesser General Public License. See the file COPYING, BladeEnc's homepage or www.fsf.org for more details. Usage: bladeenc [global switches] input1 [output1 [switches]] input2 ... General switches: -[kbit], -br [kbit] MP3 bitrate instellen. Standaard is 128 (64 voor mono uitvoer). -crc checksum data in MP3 file steken. -delete, -del Sampel verwijderen na succesvol encoderen. -private, -p Stel de private flag in de uitvoer file in. -copyright, -c Stel de copyright flag in de uitvoer file in. -copy Verwijdert de originele flags in de output file. -mono, -dm Produceer een mono Mp3 door de stereo kanalen te combineren. -leftmono, -lm Produceer een mono Mp3 van het linker stereo kanaal. -rightmono, -rm Produceer een mono Mp3 van het rechter stereo kanaal -swap Swap het linker en rechter stereo kanaal. -rawfreq=[freq] Specificeer de frequentie van Raw samples. Standaard is 44100. -rawbits=[bits] Specificeer de bits per kanaal voor Raw samples. Standaard is 16 -rawmono Specificeer dat de Raw samples mono zijn en niet stereo. -rawstereo Specificeer dat de Raw samples stereo zijn. (standaard). -rawsigned Specificeer dat de Raw samples gesigneerd zijn. (standaard). -rawunsigned Specificeer dat de Raw samples niet gesigneerd zijn. -rawbyteorder=[order]Specificeer byteorder van Raw samples, LITTLE of BIG. -rawchannels=[1/2] Specificeer het aantal kanalen voor Raw samples. doet hetzelfde als -rawmono en respectivelijk -rawstereo. Globale instellingen: -quit, -q Quit zonder te wachten op een toetsdruk als het klaar is. -outdir=[dir] Sla Mp3's op in gespecificeerde directory. -quiet Het scherm uitvoer uit. -nocfg Haal geen instellingen ui configuratie file. -prio=[prio] Zet de taak prioriteit voor BladeEnc. Goede instellingen zijn HIGHEST, HIGHER, NORMAL, LOWER, LOWEST(standaard) en IDLE -refresh=[rate] Refresh rate voor de progress indicator. 1=snelst, 2=normaal. -progress=[0-8] Welke programma indicator gebruiken. 0=Uit, 1=Standaard. Input/output files kunnen worden verplaatst met STDIN en STDOUT.
Lame
LAME version 3.50 (www.sulaco.org/mp3) GPSYCHO: GPL psycho-acoustic model version 0.74. USAGE : lame [options] <infile> [outfile] <infile> and/or <outfile> can be "-", which means stdin/stdout. OPTIONS : -m mode (s)tereo, (j)oint, (f)orce of (m)ono (standaard j) force = force ms_stereo op alle frames. Snelst en gebruikt speciale Mid en Side masking schaal -b <bitrate> stel de bitrate in, default 128kbps (voor VBR, dit stelt de toegestaan minimale bitrate in) -s sfreq sampling frequency van input file(kHz) - standaard 44.1 --resample sfreq sampling frequency van output file(kHz)- standaard=input sfreq --mp3input input file is een MP3 file --voice expirimentele geluids mode. -v gebruik variabele bitrate (VBR) -V n qualiteits instelling voor VBR. standaard n=4 0=hoogste qualiteit,grotere files. 9=kleinere files -t schakel Xing VBR informatie tag uit --nohist schakel VBR histogram weergave uit -h gebruik (misschien) betere kwalatiet improvements -f snele mode (lage kwaliteit) -k schakel sfb=21 cutoff uit -d sta toe dat kanalen verschillende blocktypes hebben --athonly gebruik alleen de ATH voor masking -r input is raw pcm -x forceer byte-swapping van input -a downmix van stereo naar mono file voor mono encoderen -e emp de-emphasis n/5/c (verouderd) -p fout protectie. Voegt 16bit checksum toe aan elk frame (de checksum is goed berekend) -c markeer als copyright -o markeer als niet-origineel -S print geen vooruitgangs rapport, VBR histogrammen Een van deze opties meegeven zal een ID3 tag toevoegen --tt <titel> titel van het liedje (max 30 karakters) --ta <artiest> artiest die het liedje zingt (max 30 karakters) --tl <album> album waar het van komt (max 30 karakters) --ty <jaar> jaar waarin het liedje/album is gemaakt (max 4 karakters) --tc <commentaar>toegevoegde informatie (max 30 karakters) MPEG1 samplerates(kHz): 32 44.1 48 bitrates(kbs): 32 48 56 64 80 96 112 128 160 192 224 256 320 MPEG2 samplerates(kHz): 16 22.05 24 bitrates(kbs): 8 16 24 32 40 48 56 64 80 96 112 128 144 160
Gogo
GOGO-no-coda ver. 2.24 (Feb 12 2000) Copyright (C) 1999 PEN@MarineCat and shigeo Special thanks to Keiichi SAKAI, URURI, Noisyu and Kei This is based on LAME3.29beta and distributed under the LGPL usage gogo inputPCM [outputPCM] [options] inputPCM is input wav file if input.wav is `stdin' then stdin-mode outputPCM is output mp3 file (omissible) options -b kbps bitrate [kpbs] -br bps bitrate [ bps] -silent geef geen vooruitgangs rapport weer -off {3dn,mmx,kni(sse),e3dn} -v {0,..,9} VBR [0:hoge kwaliteit 9:hoge compresie] Je moet dit combineren met de -b optie alleen voor RAW-PCM input -offset bytes overslaan header grootte -8bit 8bit-PCM [dflt 16bit-PCM] -mono mono-PCM [dflt stereo-PCM] -bswap hoge, lage byte swapping voor 16bitPCM -s kHz freq van PCM [dflt 44.1kHz] -nopsy schakel psycho-acoustics uit -m {s,m,j} output formaat s:stereo, m:mono, j:j-stereo -d kHz verander sampling-rate van output MP3 -emh {n,c,5} de-emphasis -lpf {on,off} 16kHz filter [dflt use als <= 128kbps; niet gebruiken als >= 160kbps] -test benchmark mode -delete verwijder input file, na encoden
RipEnc doet de zelfde taak als de code bovenaan, maar het is geschreven in shell en is makkelijker te gebruiken :)
Hier is hoe het eruit ziet.
RipEnc version 0.7, Copyright (C) 1999 Michael J. Parmeley <mjparme@asde.com>, RipEnc comes with ABSOLUTELY NO WARRANTY There is currently NO encoding process running in the background Your encode.log file is 982607 bytes long. <Enter 'd' for details, 'v' to view the encode log, or 'del' to delete the encode log> 1) Verander de werk directory..................[/megajukebox/tmp] 2) kies encoder................................[lame] 3) Kies ripper.................................[cdparanoia] 4) Kies id3 tool...............................[none] 5) Zet CDDB benaming aan of handmatig..........[handmatig] 6) Setup XMCD_LIBDIR variabel voor CDA.........[/var/X11R6/lib/xmcd] 7) Hoe de naam van een liedje eruitziet........[artist-name_of_song.mp3] 8) Rip de hele CD?.............................[no] 9) Zet de kleine schijf optie aan..............[no] 10) Kies je Cd-Rom device......................[/dev/cdrom] 11) Stel de Bitrate in voor de encoded MP3's...[256] 12) Laat de file's zien in je werk directory 13) Start 14) About ?
GUI gebaseerde encoders hebben dezelfde functionaliteiten als console gebaseerde encoders, maar het is allemaal in een mooi en makkelijk te gebruiken interface gestopt. Grip en RipperX zijn hetzelfde in werking, ze bieden je beiden aan om enkele of alle tracks van een Cd te rippen en converteren. Ze hebben ook CDDB support wat je in staat stelt om de informatie van een album en zijn nummers te ontvangen van een server en bespaart je dat je informatie met de hand moet invoeren.
In de encodeer secties heb ik 3 verschillende encoders vermeld: bladeenc, lame en gogo. Het grote verschil zit in hun snelheid van encoderen (hoewel ze verschillende opties hebben die we eerder hebben laten zien).
Een klein voorbeeld. Ik heb een track van een Cd geript en deze geencodeerd met verschillende encoders. Alle encoders draaiden op hetzelfde systeem en produceerden allemaal stereo mp3's.
[dj@megajukebox]$ ls -l cdda.wav -rw-rw-r-- 1 dj dj 59823164 Feb 10 00:56 cdda.wav [dj@megajukebox]$ bladeenc cdda.wav -br 256 BladeEnc 0.91 (c) Tord Jansson Homepage: http://bladeenc.mp3.no =============================================================================== BladeEnc is free software, distributed under the Lesser General Public License. See the file COPYING, BladeEnc's homepage or www.fsf.org for more details. Files to encode: 1 Encoding: ../test.wav Input: 44.1 kHz, 16 bit, stereo. Output: 128 kBit, stereo. Completed. Encoding time: 00:05:58 (0.78X) All operations completed. Total encoding time: 00:05:58 -------------------------------------------------------------------------------- [dj@megajukebox]$ lame cdda.wav -b 256 LAME version 3.50 (www.sulaco.org/mp3) GPSYCHO: GPL psycho-acoustic model version 0.74. Encoding ../test.wav to ../test.wav.mp3 Encoding as 44.1 kHz 128 kbps j-stereo MPEG1 LayerIII file Frame | CPU/estimated | time/estimated | play/CPU | ETA 10756/ 10756(100%)| 0:02:28/ 0:02:28| 0:02:29/ 0:02:29| 1.9074| 0:00:00 -------------------------------------------------------------------------------- [dj@megajukebox]$ gogo cdda.wav -m s -b 256 GOGO-no-coda ver. 2.24 (Feb 12 2000) Copyright (C) 1999 PEN@MarineCat and shigeo Special thanks to Keiichi SAKAI, URURI, Noisyu and Kei MPEG 1, layer 3 stereo inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=256kbps inp sampling-freq=44.1kHz out sampling-freq=44.1kHz bitrate=128kbps input file `../test.wav' output file `../test.mp3' { 10751/ 10755} 100.0% ( 2.94x) re:[00:00:00.03] to:[00:01:35.42] End of encoding time= 95.430sec
Het ziet ernaar uit dat Gogo een meer geoptimaliseerd algoritme voor encoderen heeft dan Lame.