Naprej Nazaj Kazalo

10. Kodiranje s plošče CD

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

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 so videti prijaznejši).

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

10.1 Kodiranje iz ukazne vrstice

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


#!/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 vrstice so:


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

Ta pokliče zajemalnik Cdparanoia, ki pretvori zvok s plošče CD v zapis WAV.

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


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

Uporabljeni izbiri sta $count, ki označuje š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 zapis MP3 s programom BladeEnc.

Ta script je napisan, da ne bi bilo potrebno vsake skladbe posebej zajeti s plošče CD in je kodirati 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 ploščo CD in porabi vse do 600 MB.

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


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

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

Sledi še prevedeni seznam izbir za vsak kodirnik.

Bladeenc


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

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

Splošna stikala:
  -[kbit], -br [kbit]  Nastavi bitno hitrost MP3. Privzeto je 128 (64 za mono).
  -crc                 Datoteka MP3 vključuje podatke o kontrolni vsoti.
  -delete, -del        Zbriši zapis po uspešnem kodiranju.
  -private, -p         V izhodni datoteki nastavi 'private-flag'.
  -copyright, -c       V izhodni datoteki nastavi 'copyright-flag'.
  -copy                V izhodni datoteki zbriši 'original-flag'.
  -mono, -dm           Naredi datoteke mono MP3 s kombiniranjem kanalov stereo.
  -leftmono, -lm       Naredi datoteke mono MP3 samo iz levega kanala stereo.
  -rightmono, -rm      Naredi datoteke mono MP3 samo iz desnega kanala stereo.
  -swap                Zamenjaj levi in desni kanal stereo.
  -rawfreq=[freq]      Določi frekvenco vzorčenja. 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 zapisani predznačeneno (privzeto).
  -rawunsigned         Določi, da so vzorci zapisani nepredznačeno (nenegativna števila).
  -rawbyteorder=[order]Določi vrstni red zlogov 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 konfiguracijske datoteke
  -prio=[prio]       Določi BladeEncovo prioriteto. Veljavne nastavitve so
                     HIGHEST, HIGHER, NORMAL, LOWER, LOWEST (privzeta) in IDLE.
  -refresh=[rate]    Hitrost 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 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 [izbire] <vhodna_datoteka> [izhodna_datoteka]

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

IZBIRE :
    -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 maskirne pragove Mid & Size
    -b <bitrate>    nastavi bitno hitrost, privzeto 128 kBit/s
                    (pri VBR to nastavi najmanjšo dovoljeno bitno hitrost)
    -s sdreq        frekvenca vzorčenja vhodne datoteke v kHz - privzeto 44.1
  --resample sfreq  frekvenca vzorčenja izhodne datoteke v kHz
                    Privzeto je enaka sfreq vhodne datoteke
  --mp3input        vhodna datoteka je v zapisu MP3
  --voice           poskusni glasovni način
 
    -v              uporabi spremenljivo bitno hitrost (VBR)
    -V n            nastavitev kvalitete VBR. privzeto n=4
                    0=visoka kvaliteta, daljše datoteke. 9=krajše datoteke
    -t              onemogoči informacijske oznake Xing VBR
    --nohist        onemogoči prikaz histograma VBR
    
    -h              uporabi (možne) izboljšave kakovosti
    -f              hiter način (slaba kakovost)
    -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 zapisu PCM
    -x              prisili menjanje zlogov na vhodu
    -a              pretvori iz sterea v datoteko mono 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 histogramov VBR
    
  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)


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

frekvence vzorčenja MPEG2 (kHz): 16 22.05 24 
bitne hitrosti (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 razširja z dovoljenjem LGPL
uporaba
gogo vhodniPCM [izhodniPCM] [izbire]

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

izbire
-b  kbps     bitna hitrost [kBit/s]
-br bps      bitna hitrost [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 izbiro -b
samo za vhod v formatu surovi PCM (RAW-PCM)
-offset bytes preskoči zaglavje podane velikosti
  -8bit       8 bitni PCM [privzet je 16 bitni PCM]
  -mono       mono PCM [privzet je stereo PCM]
  -bswap      zamenjava 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 frekvenco vzorčenja izhoda MP3
-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 se uporablja enako kot zgornje zglede, 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 NE VELJAJO ZAGOTOVILA

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

<Vnesite 'd' za pojasnila, 'v' za sledenje dnevniških zapiskov, ali 'del' 
za njihovo brisanje>


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

CD2MP3

Cd2mp3 je enokoračni zapisovalnik glasbe s plošč CD v zapis MP3 brez vmesne izdelave datoteke v zapisu WAV.

Njegovo delovanje je prevedeno videti takole:


[dj@megajukebox]$ cd2mp3 options ALL
Jezik: 1 - angleščina.
Prevajalec: Gustavo Sverzut Barbieri(k-s) <gsbarbieri@hotmail.com>

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cd2Mp3 1.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Avtor: Gustavo Sverzut Barbieri (k-s) <gsbarbieri@hotmail.com.br>
*** pogon za CDROM: -D/dev/cdrom        tip: -Icooked_ioctl
*** zvočna kartica: /dev/dsp
*** prednastavitev: trak
*** avtorka zaščita: Da
*** avtor: 
*** album: 

zapisujem: '1' kot 'track-1.mp3'        (čakaj)
        V redu! (zapisano)
zapisujem: '2' kot 'track-2.mp3'        (čakaj)

Seveda lahko v ukazni vrstici podate tudi ostale izbire. Njihov preveden seznam je:


dj@megajukebox]$ cd2mp3 --help

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Cd2Mp3 1.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Avtor: Gustavo Sverzut Barbieri (k-s) <gsbarbieri@hotmail.com.br>
Uporaba:
  cd2mp3 izbire <številka_skladbe>="<ime_skladbe>" ... <številka_skladbe>="<ime_skladbe>"
ali: cd2mp3 izbire ALL  (za zapis vseh skladb)
ali: cd2mp3 izbire LIST=<pot_do_seznama_skladb>  (v obliki dvojic: <številka_skladbe>="<ime_skladbe>" v datoteki)
ali: cd2mp3 izbire PLAY=<številka_skladbe> VOL=[0..100] (samo predvajanje skladbe)

Izbire:
  DEV=<pogon_za_CDROM> (privzeto: /dev/cdrom)
  DEV_TYPE=[generic_scsi|cooked_ioctl] (privzeto: cooked_ioctl)
  AUDIO_DEV=<zvočna_kartica>  (privzeto:/dev/dsp)
  LANGUAGE=<številka_jezika> (LANGUAGE=help za seznam podprtih jezikov)
  COPYRIGHT=[YES|NO]
  PRESET=[phone|voice|fm|tape|hifi|cd|studio] (PRESET=help za več informacij)
  ALBUM="<naslov_albuma>"
  AUTHOR="<avtorjevo_ime>"

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 skrijejo za prijazen in preprost grafični vmesnik. Grip in RipperX delujeta na podobno, oba omogočata izbiranje med eno, več ali kar vsemi skladbami na plošči CD in njihovo pretvorbo. Podpirata tudi CDDB, ki lahko poišče vse podatke o plošči 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 kodirnike: BladeEnc, Lame in Gogo. Glavna razlika med njimi je njihova zmožnost kodiranja (čeprav se razlikujejo tudi v ponujenih izbirah).

Oglejmo si zgled, pri katerem smo najprej zajeli skladbo s plošče CD in jo zatem kodirali z različnimi kodirniki. Vsi kodirniki so bili pognani pod enakimi pogoji in vsi so ustvarili datoteko MP3 stereo.


[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 optimaliziran algoritem za kodiranje kot BladeEnc in Lame.


Naprej Nazaj Kazalo