Naprej Nazaj Kazalo

11. Oddajanje MP3 glasbe

Strežnik za oddajanje vam omogoča prenos glasbe po mreži TCP. To je lahko internet ali vaša lokalna mreža (intranet).

Načelo povezovanja je zelo podobno kot pri spletnih strežnikih, glasba se prenaša, ko se odjemalec (predvajalnik MP3) poveže s strežnikom.

Nastavljanje oddajnega strežnika je dokaj enostavno. Najprej se bomo osredotočili na Icecast, nato pa še na Fluid.

11.1 Icecast

Ko datoteko potegnemo na svoj računalnik in jo razpakiramo, si je koristno ogledati imenik /doc. Priročnik v formatu HTML je obsežen in zelo v pomoč.

Če ste si prenesli izvorno kodo, sledite navodilom za prevajanje na vašem sistemu.

Icecast ne bo deloval pravilno, dokler pravilno ne nastavite imena strežnika v konfiguracijski datoteki icecast.conf, ki se nahaja v imeniku /etc. Ime se mora natančno ujemati s tistim, ki pripada vašemu IP naslovu.

Če ob zagonu Icecasta zagledate naslednjo vrstico, ste nekaj naredili narobe:


-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!

Odprite datoteko icecast.conf, ki se nahaja v imeniku /etc, poiščite vrstico z vnosom za "server_name" in tja vnesite ime strežnika. Če niste prepričani, ga lahko izveste z ukazom hostname ali z ukazom cat /etc/hosts.

Ko ste naredili vse potrebne spremembe, boste morali ali skopirati datoteko conf v imenik bin ali pognati Icecast z možnostjo -c in določiti lokacijo, npr.


./icecast -c ../etc/icecast.conf

Če ste vse nastavili pravilno, bi morali videti nakaj podobnega sledečemu:


[dj@megajukebox bin]$ ./icecast -c ../etc/icecast.conf -d /home/dj/mp3/icecast/  
Icecast Version 1.3.0 Starting...
Icecast comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of Icecast under the terms of the
GNU General Public License.
For more information about these matters, see the file named COPYING.

[05/Jan/2000:18:36:30] Icecast Version 1.3.0 Starting..
[05/Jan/2000:18:36:30] Using stdin as icecast operator console
[05/Jan/2000:18:36:30] Tailing file to icecast operator console
[05/Jan/2000:18:36:30] Server started...
[05/Jan/2000:18:36:30] Listening on port 8000...
[05/Jan/2000:18:36:30] Using [megajukebox] as servername...
[05/Jan/2000:18:36:30] Max values: 1000 clients, 1000 clients per source, 10 sources, 5 admins
-> [05/Jan/2000:18:36:30] [Bandwidth: 0.000000MB/s] [Sources: 0] [Clients: 0] [Admins: 1] [Uptime: 0 seconds]

Možnost -d nastavi imenik za datoteke LOG in predloge.

Spodaj je preveden seznam z opisom vseh možnosti z ukazne vrstice:


        -c [filename] 

Razčleni kot konfiguracijsko datoteko. Prosimo upoštevajte, da vsak parameter
z ukazne vrstice, ki ga podate, 'povozi' ustrezne nastavitve v datoteki.
Upoštevajte tudi, da je icecast.conf v trenutnem imeniku že razčlenjen, ko 
podate to datoteko, tako da strežnik uporabi vse, kar v icecast.conf ni 
bilo 'povoženo'.

        -P [port] 

To je priključek za povezavo z odjemalci, virom in administratorjem.
Privzeto je nastavljen na 8000.

        -m [max clients] 

Dovoli samo določeno število povezav odjemalcev. Ko bo to število doseženo,
bodo vsi odjemalci zavrnjeni s sporočilom 'HTTP/1.0 504 Server Full'
(HTTP/1.0 504 Strežnik je prezaseden). 

        -p [encoder password] 

Določi geslo, ki ga mora kodirnik uporabiti, da lahko pošlje tok
na strežnik. Upoštevajte, da če ste prevedli strežnik s podporo crypt(),
mora biti ta argument zakodiran niz.

        -b 

Prestavi strežnik Icecast v ozadje (postane t.i. demon proces). Če želite sedaj
uporabljati ukaze za administriranje, se morate povezati na strežnik kot
administrator z uporabo kateregakoli odjemalca za telnet.

        -d [directory] 

Vse nadzorne (angl. log) datoteke, ki jih naredi Icecast, in vse predloge,
ki jih uporablja Icecast, naj bodo relativne na ta imenik.

Tako, strežnik smo pognali, sedaj moramo še povezati vir datotek MP3 s strežnikom.

Izbirate lahko med dvema aplikacijama, ki dostavljata podatke o datotekah MP3 strežniku: Shout in LiveIce.

Shout

Shout (dobite ga skupaj z Icecastom) podaja Icecastu statičen predvajalni seznam datotek MP3 za oddajanje.

Seznam datotek MP3, ki jih želite oddajati, naredite na naslednji način:


find [imenik_MP3] -name *.mp3 -print > playlist

Najbolj enostavno boste zagnali Shout, če vnesete naslednje:


[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist

Možnost -P določi geslo, ki je potrebno za dodajanje točk vpetja (angl. mount point) Icecastu. Trenutno je nastavljeno na hackme. Močno vam priporočamo, da ga spremenite, predno to stori kdo drug. Možnost -p določi lokacijo datoteke s predvajalnim seznamom. Sledi preveden seznam vseh možnosti z ukazne vrstice:


[dj@megajukebox bin]# ./shout
Upraba: shout <naslov_strežnika> [možnosti] [[-b <bitna_stopnja] datoteka.mp3]...
Možnosti:
        -B <directory>       - Uporabi imenik za vse Shoutove datoteke.
        -C <file>    - Uporabi datoteko file kot konfiguracijsko datoteko.
        -D <dj_file> - Poženi tole pred vsako skladbo (system()).
        -P <password>        - Uporabi podano geslo.
        -S              - Prikaži vse nastavitve in končaj.
        -V              - V izpisu naj bo več informacij.
        -X <desc>    - Uporabi podan opis.
        -a              - Vklopi avtomatsko popravljanje bitne stopnje (prenosa).
        -b <bitrate> - Prični uporabljati podano bitno stopnjo
        -d              - Aktiviraj dj.
        -e <port>    - Poveži se na priključek na strežniku.
        -f              - Izpusti datoteke, ki ne ustrezajo podani bitni stopnji.
        -g <genre>   - Uporabi podano zvrst
        -h              - Pokaže to besedilo (v angleščini).
        -i              - Uporabi stara zaglavja icy.
        -k              - Ne skrajšuj notranjega seznama za predvajanje (nadaljuj).
        -l              - Neskončna zanka
        -m <mount>   - Uporabi podano točko vpetja ('mount point')
        -n <name>    - Uporabi podano ime.
        -o              - Izklopi samodetekcijo bitne stopnje.
        -p <playlist>        - Uporabi podano datoteko kot seznam za predvajanje.
        -r              - Premešaj seznam za predvajanje (naključno predvajanje).
        -s              - (Skrivnost) Ne pošiljaj meta podatkov imeniškemu 
                          strežniku (angl. directory server).
        -u <url>     - Uporabi podan URL.
        -v              - Pokaži različico.
        -x              - Ne posodobi nakazane datoteke (prihrani procesorsko moč).
        -z              - Deluj v ozadju (način demon).
        -t              - Omogoči tok naslovov.

LiveIce

LiveIce lahko deluje v dveh načinih. Icecastu lahko poda seznam za predvajanje, lahko pa mu poda neposreden zvok iz zvočne kartice.

Ko odpakirate datoteke in preberete README, ki se nanaša prevajanje in postavljanje paketa, se prepričajte, da je Mpg123 nameščen in na voljo, ker ga LiveIce zahteva.

LiveIce lahko nastavite na dva načina: z urejanjem konfiguracijske datoteke s katerimkoli urejevalnikom (npr. VI ali Emacs) ali z uporabo na Tk temelječega orodja, kar je precej lepši način urejanja.

Najboljše mesto za opis vseh podrobnosti datoteke liveice.cfg lahko najdete na LiveIcovi domači strani, kjer je Scott razložil vse možnosti.

Sledi kopija avtorjeve konfiguracijske datoteke (s prevedenimi komentarji) z LiveIcom nastavljenim na mešalni način (angl. mixer mode), kar pomeni tok iz seznama datotek MP3.

OPOMBA: V datoteki so tudi komentarji. Če jo boste prenesli na svoj računalnik, pazite, da se deli komentarjev ne bodo prenesli v novo vrstico, ker LiveIce v takšnem primeru ne bo deloval.


# liveicova konfiguracijska datoteka
# Avtomatsko generirana

SERVER megajukebox              # Ime vašega strežnika * MORA BITI VELJAVNO IME, 
                                # KATEREMU SE DA DOLOČITI IP*
PORT 8000                       # Priključek na katerem teče Icecast

NAME Megajukebox                # Informacije o imenu vašega strežnika, 
                                # ki se pošlje odjemalcem in
                                # imeniškim strežnikom (angl. directory server)
                                # Npr.: 'Sarah FM' ali
                                # 'ThisTown: Loud and Heavy Jazz - Internet Radio 24/7' 

GENRE Live                      # Informacije o zvrsti. Npr.: 'Talk' ali 'Dance'

DESCRIPTION                     # Informacije o postaji, npr.:
                                # 'The best for reggae in the North'

URL http://megajukebox:8000     # URL in priključek strežnika

PUBLIC 0                        # Postavite na 1, če želite, da Icecast obvesti
                                # vašo postajo in prikaže seznam podrobnosti
                                # na imeniškem strežniku, sicer pustite 0

XAUDIOCAST_LOGIN                # Lahko je ICY_LOGIN ali X_AUDIOCAST_LOGIN.
                                # X_AUDIOCAST je boljši. 

MOUNTPOINT /techno              # Nastavi točko vpetja za Icecastov tok. Uporabi 
                                # se samo, kadar je uporabljen X_AUDIOCAST 
                                # sicer se privzame icy_0 

PASSWORD hackme                 # Icecastovo administratorsko geslo 

SAMPLE_RATE 44100               # Vzorčna frekvenca toka
STEREO                          # Lahko je MONO ali STEREO

NO_SOUNDCARD                    # Oglejte si spodaj

HALF_DUPLEX                     # Določi dvosmerni način zvočne kartice.
                                # Lahko je HALF_DUPLEX or FULL_DUPLEX
USE_GOGO                        # Določi uporabljen kodirnik.
                                # Poglejte README za seznam podprtih
BITRATE 128000                  # Določi bitno stopnjo toka (glejte spodaj)
VBR_QUALITY 1                   # Določi kvaliteto spremenljivega bitnega toka

MIXER                           # Glejte spodaj

PLAYLIST /megajukebox/playlist  # Lokacija seznama za predvajanje (glejte 
                                # podrobnosti ukaza find kasneje v poglavju) 

TRACK_LOGFILE track.log         # Ime datoteke in lokacija za izpis seznama
                                # pretočenih datotek MP3

Ko ste napisali konfiguracijsko datoteko, poženite LiveIce:
[dj@megajukebox liveice]$ ./liveice
/megajukebox/playlist
1
opening connection to megajukebox 8000
Attempting to Contact Server
connection successful: forking process
opening pipe!...
writing password
Setting up Interface
Soundcard Reopened For Encoding
Input Format: 16Bit 44100Hz Stereo
Output Format: 256000 Bps Mpeg Audio
IceCast Server: megajukebox:8000
Mountpoint: /techno
Name: megajukebox - this and that radio - broadcasting 24/7
Genre: Techno
Url: http://megajukebox
Description: a load of digital noise -> but i know you like it :)

 Press '+' to Finish
adding /megajukebox/demotunes/track_1.mp3
adding /megajukebox/demotunes/track_2.mp3
adding /megajukebox/demotunes/track_3.mp3
adding /megajukebox/demotunes/track_4.mp3
/megajukebox/demotunes/track_4.mp3
Adding New Channel 1
Adding New Channel 2
Channel 1 selecting 
 /megajukebox/demotunes/track_1.mp3
Channel 2 selecting 
 /megajukebox/demotunes/track_1.mp3
Playing track_1.mp3
searching for Id3v2
searching for Id3v1
copying the data
fixing the nulls
adding the url
closing input file
Using log track.log

Zadnja vrstica je merilnik konic.

Sledijo tipke za upravljanje mešalnega načina:


Učinek                                   Tipka za kanal 1   Tipka za kanal 2
~~~~~~                                   ~~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~
Izbira naslednje skladbe na kanalu       1                  a
Izbira prejšnje skladbe na kanalu        q                  z
Poženi/ustavi kanal                      2                  s
Ponastavi (angl. reset) kanal            w                  x
Povečaj jakost na kanalu                 3                  d
Zmanjšaj jakost na kanalu                e                  c
Povečaj hitrost kanala                   4                  f
Zmanjšaj hitrost kanala                  r                  v
Lepljiv način vključi/naključen/izključi 5                  g
Predogled kanala                         t                  b
Naključna skladba                        u                  m

Zgornja datoteka liveice.cfg velja za mešalni način. Za uporabo LiveIca v načinu avdio (angl. audio mode), spremenite vrstico, ki se nananša na MIXER, v NOMIXER, spremenite NO_SOUNDCARD v SOUNDCARD in še enkrat poženite LiveIce.

Če pozabite nastaviti pravilne parametre, boste dobili zanimiva opozorila:


   946:Error: Line In mode *and* no soundcard??????? Eeejit!

Ko vam je uspelo vse pravilno nastaviti in priključiti na zunanji vir, bi vam oddajanje moralo delovati:


[dj@megajukebox liveice]$ ./liveice
/megajukebox/playlist
0
Initialising Soundcard
16Bit 22050Hz Stereo Full Duplex 
opening connection to megajukebox 8000
Attempting to Contact Server
connection successful: forking process
opening pipe!...
writing password
Setting up Interface
Soundcard Reopened For Encoding
Input Format: 16Bit 22050Hz Stereo
Output Format: 32000 Bps Mpeg Audio
IceCast Server: megajukebox:8000
Mountpoint: /daves_band_live_at_the_club
Name: megajukebox - Dave and the Dynamite - Live at the Roxy  
Genre: Live/Rock
Url: http://megajukebox
Description: megajukebox::Louder than a frog in a trashcan..... and almost as musical

 Press '+' to Finish
Lvl: L:   8704 R:  11776 

Zadnja vrstica je merilnik stopnje signala. Če je stopnja vhodnega signala previsoka, se bo prikazalo opozorilo *clip*. Če pride do tega, zmanjšajte ojačenje vhodnega vira.

Pozornejši med vami boste morda opazili, da prve vrstice s komentarji v datoteki liveice.cfg nakazujejo, da je bila datoteka narejena avtomatsko. Če uporabljate na Tk temelječ grafični uporabniški vmesnik liveiceconfigure.tk in izvedete ročne spremembe, boste le te izgubili ob shranjevanju. Ali uporabljajte samo grafični uporabniški vmesnik ali pa se naučite uporabljati Vi oz. Emacs.

11.2 Fluid

Ko razpakirate distribucijo programa v imenik, najprej preberite datoteko README.

Fluid ima tri načine delovanja: prenosni (angl. transmit), povezovalni (angl. relay) in posredovalni (angl. forward). Osredotočili se bomo na prenosni način (transmit).

Konfiguracijske datoteke za ta način se nahajajo v imeniku config/MP3TX.cfg. Preizkus strežnika lahko naredite z naslednjim ukazom, kar bi moralo delovati tudi s privzetimi nastavitvami:

java Fluid TX

Seveda morate najprej imeti nameščeno Javo v katerikoli obliki. Uporabite lahko Blackdown (različica JDK za Linux, na voljo na http://www.blackdown.org), če pa uporabljate Redhat, lahko uporabite tudi Kaffe.

Poleg Fluida dobite tudi nekaj vzorčnih datotek MP3. Če vse deluje pravilno, bi se moralo prikazati nekaj podobnega sledečemu, pri čemer dodajmo še, da je v tem primeru uporabljen Kaffe, lahko pa ga poženete tudi z uporabo Jave:


[dj@megajukebox Fluid-Beta2J]$ kaffe Fluid tx
------- Fluid Streaming Server Beta 2 ------- 
This program is ShareWare(tm) and it will not 
be crippled in any way because of it. However 
if you do like the program and will use it    
commercial purposes, we ask of you to contact 
us at the address below for pricing info:     
                                              
 Eldean AB                  E-mail:           
 Sjoangsvagen 7             fluid@subside.com 
 S-192 72 Sollentuna                          
 SWEDEN                                       
                                              
   Fluid is Copyright Subside (C) 1998        
       written by Lars Samuelsson             
         http://www.subside.com               
--------------------------------------------- 

* Transmission mode *
Reading config from: config/MP3TX.cfg
Reading playlist: playlist.m3u
Server started on port: 2711
Accepting administrator login on port: 2710
P| Dr. Nick - Hello Everybody

Če ste prišli tako daleč, kaže, da vse deluje, zagotovo pa želite oddajati še kaj več kot demonstracijske datoteke!

Prevesti boste morali seznam za datotek, katere želite oddajati. To bo statičen seznam, uporabniki ga ne bodo mogli spreminjati ali pošiljati zahtev. Ta seznam se imenuje playlist.m3u in se nahaja na v korenskem imeniku.

Za prevajanje seznama vseh datotek MP3 v določenem imeniku (ali disku), izvedite naslednji ukaz:


find [MP3_imenik] -name *.mp3 -print > playlist.m3u

Strežnik privzeto uporablja priključek 2711, kamor se bodo povezovali poslušalci. Če želite to sprementi, morate to storiti v konfiguracijski datoteki.

Strežnik lahko administrirate na daljavo tako, da se preko telneta povežete na administratorski priključek, privzeto je to 2710:


[dj@megajukebox Fluid-Beta2J]$ telnet localhost 2710
Trying 127.0.0.1..megajukebox
Connected to localhost.localdomain.
Escape character is '^]'.
jaguar
You are connected to the -Fluid- Streaming Server
Type "help" for a command reference
help
The following commands are available:
 help conn curr exit
curr
Information about the currently broadcasted song:
Title:   Beer Talk
Artist:  Homer Simpson
Album:   The Simpsons
Year:    1996
Comment: Borrowed this as an example
Genre:   Comedy

"jaguar" je privzeto administratorsko geslo. Ne pojavi se noben poziv za vnos gesla, zato ne čakajte nanj! Predlagamo, da geslo spremenite, sicer tvegate možnost vdora! Spremenite ga lahko v konfiguracijski datoteki, ki prevedena izgleda takole:
[dj@megajukebox config]$ cat MP3TX.cfg 
2711
2710
5
4096
32
1000
jaguar
playlist.m3u
current.txt

# --- Vrstice pomenijo ---
# 1. Številka priključka (ki jo uporablja strežnik)
# 2. Številka priključka (za vzdrževanje strežnika na daljavo)
# 3. Največje število povezav (ki jih strežnik sprejme)
# 4  Velikost paketa pri branju/pošiljanju (v zlogih)
# 5. Bitna stopnja datotek MP3 v kBit/s (Vse datoteke morajo imeti enako stopnjo)
# 6. Razmik med skladbami (v milisekundah)
# 7. Geslo za administriranje na daljavo
# 8. Ime seznama skladb za oddajanje (seznam v formatu .m3u)
# 9. Ime datoteke, kamor se izpišejo podatki o skladbi (iz oznake ID3)

Referenca seznamu v formatu m3u pomeni, da gre za isti format, kot je bil narejen s prej omenjenim ukazom find.

11.3 Upoštevanje pasovne širine

Oddajanje zvoka lahko porabi precej pasovne širine, če je bitna stopnja (angl. bit rate) MP3 strežnikov nastavljena previsoko.

Upoštevajte tale scenarij. Povezava T1 ima kapaciteto pribl. 1,55 Mb/s. Če oddajate stereo zvok pri 128 kBit/s, bo vsak povezan predvajalnik porabil 256 kBit/s, kar pomeni, da se bo lahko kadarkoli brez problemov povezalo samo 6 uporabnikov. In pri 256 kbit/s se k vam ne bo priključevalo kaj veliko uporabnikov z modemi!

Zatorej se morate pri nastavitvi hitrosti oddajanja odločiti ne samo, kako hitra je vaša povezava v internet, temveč tudi kakšni uporabniki se bodo povezovali. 24kBit/s da razumno kvaliteto signala, dovolj hitro tudi za modeme s 56 kbit/s, enak priključek T1 pa bo omogočal pribl. 32 hkratnih povezav.

Če bo strežnik tekel na intranetu, bo še vedno potrebno upoštevati pasovno širino, še posebej če je hitrost na mreži 10Mbit/s.

Prosimo, da obvestite vašega ponudnika internetnih storitev ali sistemskega administratorja o vaših namerah glede postavitve MP3 strežnika, da ne boste kasneje doživeli šoka. Nekateri ponudniki internetnih storitev bodo zaračunali uporabo pasovne širine čez določeno omejitev in sistemske administratorje bo zanimalo, zakaj mreža deluje počasneje.

11.4 Še nekaj besed o avtorskih pravicah

Mislimo, da je razumno predpostaviti, da založbe ne bodo navdušene nad oddajanjem glasbe brez njihovega dovoljenja ali kakršnegakoli plačila. Torej: kaj lahko oddajate?

To je področje, kjer se boste morali zavedati vseh posledic, saj boste odgovorni vi.

Spodaj sta dodani še dve povezavi: ena kaže na Electronic Frontier Foundation, ki se zavzema za sprostitev omejitev, ki obkrožajo to tehnologijo, druga pa kaže na Recording Industry Association of America, ki poskuša avtorje zaščititi pred nedovoljenim kopiranjem (piratstvom).

Močno priporočamo obisk obeh spletnih strani, obiščite pa še strani, ki se kakorkoli nanašajo na vašo fizično lokacijo (npr. Sazas za Slovenijo, op. pr.)

http://www.eff.org/cafe/

http://www.riaa.com/weblic/weblic.htm


Naprej Nazaj Kazalo