Verder Terug Inhoud

10. Encoderen van CD-ROM.

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.

10.1 Command Line encoderen

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");

of
$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

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
?

10.2 GUI gebaseerde encoders

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.

10.3 Encoder snelheid

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.


Verder Terug Inhoud