Naprej Nazaj Kazalo

10. Kodiranje s CD plošče

Podobno kot pri kodiranju analognega zvoka je tudi kodiranje s CD plošče dvodelni proces. Najprej izvlečemo zvočne podatke s CD plošče in jih pretvorimo v datoteko WAV. Potem to datoteko pretvorimo v format MP3.

V osnovi obstajata dva tipa kodirnikov: tisti za konzolo in tisti za okolje X Window. Oboji opravljajo enako nalogo, vendar je tiste za okolje X Window lažje uporabljati (in izgledajo prijaznejši).

Tudi tokrat se morate pred začetkom kodiranja prepričati, da imate dovolj prostora na disku.

10.1 Kodiranje z ukazne vrstice

Avtor je napisal preprost skript za Perl, ki bo zajel in kodiral skladbe s CD plošče:


#!/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 "Uporaba: cdripper [število skladb] [ciljni_imenik]\n\n";
}

Prosimo upoštevajte, da je zgornji skript zelo osnoven in ne vsebuje nobenih dodatnih funkcij, kot je npr. preverjanje napak ali iskanje po CDDB. Dopolnite ga lahko v skladu s svojimi potrebami.

Najpomembnejše zanimive vrstice so:


$cdcap = system("cdparanoia", $count, "/mp3/cdda.wav");

Ta vrstica pokliče zajemovalnik Cdparanoia, ki pretvori zvok s CD pčošče v format WAV.

V tem primeru je omenjena Cdparanoia, če pa želite uporabiti CDDA2WAV, morate vrstico popraviti v:


$cdcap = system("cdda2wav", $count, "/mp3/cdda.wav");

Uporabljeni možnosti sta $count, ki pomeni število skladb za zajem, in pot do izhodne datoteke WAV. V tem primeru gre za začasni imenik na disku SCSI.

Datoteko WAV nato pretvorimo v format MP3 z uporabo programa BladeEnc.

Ta script je bil napisan, da ne bi bilo potrebno zajeti s CD plošče in kodirati vsake skladbe posebej in da ne bi bilo potrebno uporabiti paketnega načina Cdparanoie. Tako zmanjšamo velikost potrebnega prostora na disku, ker paketni način Cdparanoie obdela celotno CD ploščo in porabi vse do 600 MB.

Če želite uporabiti Lame ali Gogo, nadomestite kodirnik z:


$enc = system("lame  /mp3/cdda.wav $track -b 256");

ali
$enc = system("gogo  /mp3/cdda.wav $track -b 256");

Sledi še preveden seznam možnosti za vsak kodirnik.

Bladeenc


BladeEnc 0.91    (c) Tord Jansson          Domača stran: http://bladeenc.mp3.no
===============================================================================
BladeEnc je prosta programska oprema, distribuira se pod licenco LGPL.
Oglejte si datoteko COPYING, BladeEncovo domačo stran ali www.fsf.org
za več podrobnosti.

Uporaba: bladeenc [globalna_stikala] vh_dat1 [izh_dat1 [stikala]] vh_dat2 ...

Splošna stikala:
  -[kbit], -br [kbit]  Nastavi MP3 bitno stopnjo. Privzeto je 128 (64 za mono).
  -crc                 Datoteki MP3 vključi podatke o kontrolni vsoti.
  -delete, -del        Zbriši vzorec po uspešnem kodiranju.
  -private, -p         V izhodni datoteki nastavi zastavico 'private-flag'.
  -copyright, -c       V izhodni datoteki nastavi zastavico 'copyright-flag'.
  -copy                V izhodni datoteki zbriše zastavico 'original-flag'.
  -mono, -dm           Naredi mono MP3 datoteke s kombiniranjem stereo kanalov.
  -leftmono, -lm       Naredi mono MP3 datoteke samo iz levega stereo kanala.
  -rightmono, -rm      Naredi mono MP3 datoteke samo iz desnega stereo kanala.
  -swap                Zamenjaj levi in desni stereo kanal.
  -rawfreq=[freq]      Določi frekvenco vzorcev. Privzeto je 44100.
  -rawbits=[bits]      Določi število bitov na kanal za vzorce. Privzeto je 16.
  -rawmono             Določi, da so vzorci v načinu mono, ne stereo.
  -rawstereo           Določi, da so vzorci v načinu stereo (privzeto).
  -rawsigned           Določi, da so vzorci predznačeni (privzeto).
  -rawunsigned         Določi, da so vzorci nepredznačeni (nenegativna števila).
  -rawbyteorder=[order]Določi vrstni red bitov v vzorcu: LITTLE ali BIG.
  -rawchannels=[1/2]   Določi število kanalov za vzorec. Naredi isto kot
                       -rawmono oz. -rawstereo.
 
Samo globalna stikala:
  -quit, -q          Po koncu zaključi program brez čakanja na pritisnjeno tipko.
  -outdir=[dir]      Shrani MP3 datoteke v določen imenik.
  -quiet             Onemogoči pisanje na zaslon 
  -nocfg             Ne upošteva nastavitev iz konfiguracijske datoteke
  -prio=[prio]       Določi BladeEncovo prioriteto. Veljavne nastavitve so
                     HIGHEST, HIGHER, NORMAL, LOWER, LOWEST (privzeta) in IDLE.
  -refresh=[rate]    Stopnja osveževanja za prikaz napredka.
                     1=najhitrejša, 2=privzeta. 
  -progress=[0-8]    Kateri kazalec napredka naj se uporablja.
                     0=izklopljeno, 1=privzeto.

Vhodne/izhodne datoteke se lahko ustrezno nadomestijo s STDIN in STDOUT.

Lame


LAME različica 3.50 (www.sulaco.org/mp3) 
GPSYCHO: GPL psycho-acoustic model različica 0.74. 

UPORABA   :  lame [možnosti] <vhodna_datoteka> [izhodna_datoteka]

<vhodna_datoteka> in/ali <izhodna_datoteka> je lahko "-", kar pomeni stdin/stdout.

MOŽNOSTI :
    -m mode         (s)tereo, (j)oint, (f)orce ali (m)ono (privzeto je j)
                    force = prisili ms_stereo vsem okvirjem. Je hitreje
                    in uporablja posebne Mid & Size maskirne pragove
    -b <bitrate>    nastavi bitno stopnjo, privzeto 128 kBit/s
                    (pri VBR to nastavi najmanjšo dovoljeno bitno stopnjo)
    -s sdreq        vzorčna frekvenca vhodne datoteke v kHz - privzeto 44.1
  --resample sfreq  vzorčna frekvenca izhodne datoteke v kHz
                    Privzeto je enaka sfreq vhodne datoteke
  --mp3input        vhodna datoteka je v formatu MP3
  --voice           poskusni glasovni način
 
    -v              uporabi spremenljivo bitno stopnjo (VBR)
    -V n            nastavitev kvalitete VBR. privzeto n=4
                    0=visoka kvaliteta, daljše datoteke. 9=krajše datoteke
    -t              onemogoči Xing VBR informacijske oznake
    --nohist        onemogoči prikaz VBR histograma
    
    -h              uporabi (možne) izboljšave kvalitete
    -f              hiter način (slaba kvaliteta)
    -k              onemogoči rezanje pri frekvenci sfb=21
    -d              kanala imata lahko različna tipa blokov
  --athonly         uporabi samo ATH za maskiranje

    -r              vhod je v formatu pcm
    -x              prisili menjanje zlogov na vhodu
    -a              pretvori iz sterea v mono datoteko za kodiranje mono
    -e emp          ne-poudari n/5/c (zastarelo)
    -p              zaščita pred napakami. vsakemu okvirju doda 16 bitno 
                    kontrolno vsoto (ki se izračuna pravilno)
    -c              označi kot avtorsko zaščiteno (copyright)
    -o              označi kot neizvirno (non-original)
    -S              ne izpisuj poročila o napredku in VBR histogramov
    
  Določitev katerekoli izmed naslednjih možnosti bo dodala oznako ID3
     --tt <title>     naslov skladbe (največ 30 znakov)
     --ta <artist>    izvajalec skladbe /največ 30 znakov)
     --tl <album>     album, od koder skladba izhaja (največ 30 znakov)
     --ty <year>      letnica izdaje (največ 4 znaki)    
     --tc <comment>   dodatne informacije (največ 30 znakov)


MPEG1 vzorčne frekvence (kHz): 32 44.1 48 
bitne stonje(kBit/s): 32 48 56 64 80 96 112 128 160 192 224 256 320 

MPEG2 vzorčne frekvence (kHz): 16 22.05 24 
bitne stopnje (kBit/s): 8 16 24 32 40 48 56 64 80 96 112 128 144 160

Gogo


GOGO-no-coda razl. 2.24 (12. Feb 2000)
Copyright (C) 1999 PEN@MarineCat and shigeo
          Posebna zahvala Keiichi SAKAI, URURI, Noisyu in Kei
Gogo temelji na LAME3.29beta in se distribuira pod LGPL
uporaba
gogo vhodniPCM [izhodniPCM] [možnosti]

 vhodniPCM is vhodna datoteka WAV
če je input.wav enak `stdin', deluje v načinu stdin
izhodniPCM je izhodna datoteka MP3 (lahko se izpusti)

možnosti
-b  kbps     bitna stopnja [kBit/s]
-br bps      bitna stopnja [Bit/s]
-silent      ne izpisuj poročil o napredku
-off         {3dn,mmx,kni(sse),e3dn}
-v {0,..,9}  VBR [0:visoka kvaliteta 9: visoka kompresija]
             Ta možnost naj bi se kombinirala z možnostjo -b
samo za vhod v formatu surovi PCM (RAW-PCM)
-offset bytes preskoči zaglavje določene velikosti
  -8bit       8 bitni PCM [privzet je 16 bitni PCM]
  -mono       mono PCM [privzet je stereo PCM]
  -bswap      izmenjava nižjega in višjega zloga pri 16bitPCM
  -s kHz      frekvenca PCM [privzeto 44,1kHz]
-nopsy       onemogoči način 'psycho-acoustics'
-m  {s,m,j}  izhodni format s:stereo, m:mono, j:j-stereo
-d  kHz      spremeni vzorčno frekvenco MP3 izhoda
-emh {n,c,5} ne-poudari
-lpf {on,off} 16kHz filter [privzeto se uporabi če <= 128kbps; 
              se ne uporabi če >= 160kbps]
-test        način 'benchmark'
-delete      po kodiranju zbriši vhodno datoteko

RipEnc

RipEnc naredi enako kot zgornji primeri, le da je lupinski skript in ga je lažje uporabljati.

Preveden pa izgleda takole:


RipEnc različica 0.7, Copyright (C) 1999  Michael J. Parmeley
<mjparme@asde.com>, za RipEnc ni NOBENE GARANCIJE

Trenutno v ozadju ne poteka NOBENO kodiranje.
Vaša datoteka encode.log je dolga 982607 zlogov. 

<Vnesite 'd' za podrobnosti, 'v' za gledanje encode log, ali 'del' 
za brisanje encode log>


1) Spremeni delovni imenik.......................[/megajukebox/tmp]
2) Izberi kodirnik...............................[lame]
3) Izberi zajemovalnik...........................[cdparanoia]
4) Izberi ordoje za id3..........................[nobeno]
5) Preklopi med ročnim in CDDB poimenovanjem.....[ročno]
6) Nastavi spremenljivko XMCD_LIBDIR za CDA .....[/var/X11R6/lib/xmcd]
7) Nastavi priljubljeno konvencijo poimenovanja..[izvajalec-ime_skladbe.mp3]
8) Zajamem celotno CD ploščo?....................[ne]
9) Nastavim možnost za majhne diske?.............[ne]
10) Izberi CDROM.................................[/dev/cdrom]
11) Nastavi bitno stopnjo kodiranih datotek MP3..[256]
12) Seznam datotek v delovnem imeniku
13) Začetek
14) O programu
15) Izhod
?

10.2 Kodirniki z grafičnim uporabniškim vmesnikom

Kodirniki z grafičnim uporabniškim vmesnikom ponujajo vso funkcionalnost kodiranja z ukazne vrstice, le da vse skupaj skrijejo za prijazen in enostaven grafični vmesnik. Grip in RipperX delujeta na podoben način, oba omogočata izbiranje med eno, več ali kar vsemi skladbami na CD plošči in njihovo pretvorbo. Podpirata tudi CDDB, ki lahko poišče vse podatke o albumu in skladbah kar na strežniku, na ta način si lahko prihranite nekaj dela z ročnim vnašanjem podatkov.

10.3 Zmožnosti kodirnikov

V razdelkih o kodirnikih smo omenili tri različne kodirnike: BladeEnc, Lame in Gogo. Glavna razlika je njihova zmožnost kodiranja (čeprav se razlikujejo tudi v ponujenih možnostih).

Oglejmo si primerček, kjer smo najprej zajeli skladbo s CD plošče in jo zatem kodirali z različnimi kodirniki. Vsi kodirniki so bili pognani v enakih sistemskih pogojih in vsi so naredili datoteko MP3 v stereu.


[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

Kot kaže, ima Gogo precej bolje optimiziran algoritem za kodiranje kot BladeEnc in Lame.


Naprej Nazaj Kazalo