Egy MP3 folyamot szolgáltatni képes kiszolgáló segítségével MP3 fájlokat küldhetünk át egy TCP alapú hálózaton. Ez a hálózat lehet maga az Internet, vagy egy helyi hálózat.
A kapcsolódás elve nagyon hasonló a webszerverhez, a fájlok küldése megindul, amikor a kliensprogram (MP3-lejátszó) a kiszolgálóhoz kapcsolódik.
Egy ilyen kiszolgáló telepítése és konfigurálása viszonylag egyszerű. Először az Icecast-ról írok, aztán rátérek a Fluid bemutatására.
Letöltés és kicsomagolás után nem árt, ha vetünk egy pillantást a doc/ könyvtárra. A HTML kézikönyv nagyon jól használható, és mindenre kitér.
A forrás letöltése után le kell fordítani a programot, a rendszerspecifikus fordítási utasítások alapján.
Az Icecast nem fog jól működni, ha nem az a gépnév van beállítva az etc/icecast.conf fájlban, ami a saját gépnevünk.
Ha az Icecast indításakor ezt a hibaüzenetet látjuk, akkor baj van:
-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!
Nyissuk meg az etc/icecast.conf fájlt, és keressük meg a ``server_name'' bejegyzést. Írjuk be a gépünk nevét. Ha nem vagyunk biztosak a gépnévben, a hostname parancs segít, vagy nézzük meg at /etc/hosts fájl tartalmát.
Ha kész vagyunk a változatatásokkal, akkor vagy másoljuk a bin könyvtárba a konfigurációs fájlt, vagy indítsuk el az icecast-ot a -c kapcsolóval, és adjuk meg az elérési utat:
./icecast -c ../etc/icecast.conf
Ha mindent sikerült jól beállítani, akkor valami ilyesmit láthatunk:
[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]
A -d kapcsoló után lehet megadni azt a könyvtárat, ahol a naplófájlokat és a sablonokat tartja a program.
A parancssori kapcsolók listája:
-c [fájlnév] A fájlt konfigurációs fájlként fogja értelmezni. Jegyezzük meg, hogy minden ezután megadott paraméter felülbírálja a fájl tartalmát. Ne feledjük továbbá, hogy az aktuális könyvtárban levő icecast.conf fájlt már beolvasta a program, mire ehhez a paraméterhez ért, tehát ha valamelyik beállítást nem bíráljuk itt felül, akkor az eredeti beállítás érvényesül. -P [port] Ezt a protot használja minden kapcsolatra (kliens, forrás, adminisztrátor). Az alapértelmezett érték 8000. -m [max kliens] Maximum ennyi klienst enged csatlakozni a kiszolgálóhoz. A maximális szám elérése után a klienst visszautasítja 'HTTP/1.0 504 Server Full' üzenettel. -p [jelszó] Ezzel állíthatjuk be azt a jelszót, amelyet a kódolóprogramnak használnia kell, ha egy folyamot akar a kiszolgálóra küldeni. Ha a kiszolgálót crypt() támogatással fordították, akkor ez az argumentum egy kódolt karakterlánc kell legyen. -b Ennek a kapcsolónak a használatával a háttérbe tehetjük az icecast kiszolgálót (démon processz lesz). Az adminisztrátor a szervert egy telnet kliensen keresztül érheti el. -d [könyvtár] Ebbe a könyvtárba teszi az icecast a naplófájlokat, és minden sablont itt keres.
Eljutottunk odáig, hogy elindult a kiszolgáló, most meg kell adni neki az MP3 forrását.
A Shout biztosítja az Icecastnak a lejátszandó MP3 fájlok listáját.
A listát könnyen előállíthajtjuk a következő paranccsal:
find [MP3 könyvtár] -name *.mp3 -print > playlist
A legegyszerűbben úgy indíthatjuk el a shout folyamatot, hogy kiadjuk a következő parancsot:
[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist
A -P kapcsoló után kell megadni azt a jelszót, amely az Icecasthoz való hozzáféréshez szükséges. Ennek az alapbeállítása a hackme. Ezt ajánlatos sürgősen megváltoztatni, mielőtt más teszi meg helyettünk :) A -p kapcsoló után kell megadni a lejátszandó fájlok listáját.
Az összes parancssori kapcsoló listája:
[dj@megajukebox bin]# ./shout Usage: shout <host> [options] [[-b <bitrate] file.mp3]... Options: -B <directory> - Use directory for all shout's files. -C <file> - Use file as configuration file -D <dj_file> - Run this before every song (system()) -P <password> - Use specified password -S - Display all settings and exit -V - Use verbose output -X <desc> - Use specified description. -a - Turn on automatic bitrate (transfer) correction -b <bitrate> - Start using specified bitrate -d - Activate the dj. -e <port> - Connect to port on server. -f - Skip files that don't match the specified bitrate -g <genre> - Use specified genre -h - Show this text -i - Use old icy headers -k - Don't truncate the internal playlist (continue) -l - Go on forever (loop) -m <mount> - Use specified mount point -n <name> - Use specified name -o - Turn of the bitrate autodetection. -p <playlist> - Use specified file as a playlist -r - Shuffle playlist (random play) -s - (Secret) Don't send meta data to the directory server -u <url> - Use specified url -v - Show version -x - Don't update the cue file (saves cpu) -z - Go into the background (Daemon mode) -t - Enable title streaming
A tar fájl kicsomagolása után olvassuk el a README-t.
A Fluidnak háromalapvető üzemmódja van, az átvitel, a közvetítés és a továbbítás. Az átvitelt fogom bővebben kifejteni.
Az átvitellel kapcsolatos beállítások a config/MP3TX.cfg konfigurációs fájlban vannak. A kiszolgáló teszteléséhez az alapbeállítások megfelelnek, adjuk ki tehát a következő parancsot:
java Fluid TX
Természetesen a Java-nak valamilyen formában telepítve kell lennie a rendszerünkön. Használhatjuk a JDK Blackdown portját, amely letölthető a http://www.blackdown.org webhelyről, vagy ha Redhat disztribúciót használunk, akkor ott a Kaffe.
A Fluid csomag néhány MP3 fájlt is tartalmaz, tehát ha minden jól megy, valami hasonlót kell látnod. (Ebben a példában én a Kaffe-t használtam, más rendszereken esetleg a java-t kell használni):
[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
Ha már idáig eljutottunk, akkor a lényeg már megvan, de biztosan mást is szeretnénk sugározni a demofájlokon kívül.
Össze kell állítanunk egy listát a lejátszandó MP3 fájlokról. Ezt a listát a felhasználók nem képesek megváltoztatni. A lista neve playlist.m3u, és alapértelmezésben a program gyökérkönyvtárában van a helye.
A lista összeállításához használhatjuk a következő parancsot, ez az összes MP3 fájlt berakja a listára, amely egy adott könyvtárban (lemezen) megtalálható:
find [MP3 könyvtár] -name *.mp3 -print > playlist.m3u
Alapértelmezés szerint a kiszolgáló a 2711-es portot használja, a hallgatóknak erre kell csatlakozniuk. Ha ezt meg kell változtatni, akkor a konfigurációs fájlt kell módosítani.
A kiszolgáló távolról adminisztrálható az adminisztrációs porton keresztül, amelyre telnettel kapcsolódhatunk. Az alapértelmezett portszám 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
A "jaguar" az alapértelmezett adminisztrátori jelszó. Nem jelenik meg prompt a jelszó beírására, tehát ne várjunk feleslegesen erre! Javasolt az alapértelmezett jelszót megváltoztatni, mert különben egy biztonsági lyukat hagyunk a rendszerünkön. Ezt is konfigurációs fájl módosításával tehetjük meg, amely így néz ki:
[dj@megajukebox config]$ cat MP3TX.cfg 2711 2710 5 4096 32 1000 jaguar playlist.m3u current.txt # --- Az egyes sorok jelentése --- # 1. portszám (amit a kiszolgáló használ) # 2. portszám (a kiszolgáló távoli karbantartásához) # 3. a maximális csatlakozások száma (amit a kiszolgáló elfogad) # 4 csomagméret küldés/fogadás esetén (bájtban) # 5. az mp3-ak bitrátája kbit/s-ban (csak azonos bitrátájú mp3-ak lehetnek) # 6. szünet a számok között (ezredmásodpercben) # 7. a távoli adminisztráció jelszava # 8. lista neve (a lista .m3u formátumban kell) # 9. ebbe fájlba írja az aktuális dal ID3 info-ját
Az .m3u formátum megegyezik azzal, amit a fent megadott find paranccsal létrehozhatunk.
A hangfolyamok rengeteg sávszélességet foglalhatnak el, ha az MP3 kiszolgálók bitrátájat túl magasra állítjuk.
Gondoljuk meg a következő esetet. A T1 kapcsolat kapacitása kb. 1,55 Mb/Sec. Ha az MP3 folyamokat sztereóban 128kbps-al sugáruzzuk, akkor minden csatlakozó lejátszó 256kbps sávszélességet használ, tehát hat felhasználó kapcsolódhat egyidőben problémamentesen a kiszolgálónkhoz. Mellesleg nem sok modemes felhasználóra számíthatunk 256kbps sebességen.
Döntést kell hozni tehát, nemcsak abból a szempontból, hogy mit bír el az internetes vonalunk, hanem gondolni kell a potenciális felhasználókra is. Például a 24kbps sztereó jel már elég jó minőségű, és az 56K modemek felhasználói már képesek csatlakozni, azonkívül ugyanaz a T1 vonal ebben az esetben 32 egyidejű kapcsolatot képes kiszolgálni.
Akkor is meg kell vizsgálni a sávszélesség kérdését, ha a kiszolgáló intraneten fut, különösen ha 10 Mb/Sec hálózatról van szó.
Mindenképp értesítsük internetszolgáltatónkat vagy rendszergazdánkat arról, hogy médiafolyamokat fogunk sugározni, különben kínos meglepetések érhetnek. Néhány internetszolgáltatónál fizetni kell azért, ha túllépünk egy bizonyos határt a sávszélesség kihasználásában, a rendszergazdákat pedig mindig érdekli, hogy mitől lassult le a hálózat :)
Nem tévedünk nagyot, ha feltételezzük, hogy a lemezkiadóknak nem fog tetszeni, ha MP3 zenét sugározunk, és nem kérünk erre engedélyt, vagy valamiképpen nem fizetünk ezért. Mit sugározhatunk tehát?
Ez az a terület, ahol nagyon tisztában kell lenni a jogi finomságokkal, mert a műsort sugárzó személy felelősségre vonható.
Két webhelyet érdemes meglátogani a témában. Az egyik az Electronic Frontier Foundation honlapja, amely azért küzd, hogy enyhítsenek a technológiát fojtogató szigorú szabályozásokon. A masik link a Recording Industry Association of America honlapjára vezet el, ők a művészek érdekeit szeretnék megvédeni a médiakalózoktól.
Melegen ajánlom ezeknek a honlapoknak a meglátogatását, valamint azoknak a honlapoknak és egyéb irományoknak a tanulmányozását, amelyek magyarországi szabályozással foglalkoznak.
http://www.riaa.com/weblic/weblic.htm