Een streaming server stelt je in staat om MP3 files over een Tcp gebaseerd netwerk te transporteren. dit kan het internet zijn of je lokale netwerk / intranet.
De connectie principes zijn erg gelijk aan die van een web server, files worden gestreamd als een client (de MP3 speler) verbinding maakt met de server.
Een streaming server instellen is erg simpel. Ik fokus eerst op Icecast en dan Fluid.
Na het downloaden en untarren, zou een goede kijk in de doc/ directorie geen kwaad kunnen, de HTML handleiding is erg handig en omvattend.
Als je de bron code hebt gedownload, volg dan de instructies voor het compileren die relevant zijn voor je systeem.
Icecast zal niet goed werken als je de servernaam in de configuratie file, icecast.conf, welke in de etc directory staat niet goed instelt. Het moet de naam zijn die je IP adres kan ophelderen.
Als je het volgende zie als Icecast opstart heb je problemen:
-> [05/Jan/2000:17:21:04] WARNING: Resolving the server name [your.server.name] does not work!
Edit de icecast.conf welke zich bevind in de etc directorie en zoek de regel die het woord "server_name" bevat en voer je server naam in. Als je onzeker bent kun je je hostname uitvissen met het hostname commando, of door een kijkje in /etc/hosts.
Als je de nodige veranderingen hebt gemaakt moet je of de conf file naar de bin directorie kopieeren of icecast starten met de -c optie en de locatie aangeven, zoals dit:
./icecast -c ../etc/icecast.conf
Als alles goed is geconfigureerd, zie je iets wat op dit lijkt:
[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]
De -d optie zet de directory voor log files en templates.
Hieronder is de lijst van command-line opties:
-c [filename] Geef een configuratie file door. Onthoud, dat elk command-line optie die je meegeeft de waarden in de configuratie file 'vervangt', dus alles in de icecast.conf wat niet is overschreven door de nieuwe file wordt gebruikt voor de server. -P [port] Dit is de poort gebruikt voor alle client, source en admin connecties. Standaard staat het op 8000. -m [max clients] Staat dit aantal client connecties toe. Als dit is berijk worden alle client connecties geweigerd met 'HTTP/1.0 504 Server Full'. -p [encoder password] Dit stelt het paswoord dat de encoder moet gebruiken om naar de server te streamen. Onthoud dat als je de server met crypt() hebt gecompileerd dat hier ook een versleutelde string moet staan. -b Dit zend de icecast server in de achtergrond (een deamon process). Om de admin commando's nu te gebruiken moet je connectie maken met de server als een admin, met een soort van telnet client. -d [directory] Zorg dat icecast alle logfiles die hij maakt en alle templates waar hij naar zoek in deze directorie.
Zo, de server is gestart, maar nu moeten we een MP3 bron er aan verbinden.
Shout voorziet Icecast van een statische playlist van MP3's om te streamen.
Je maakt een playlist van de MP3 files die je wilt streamen met het volgende commando:
find [MP3 directory] -name *.mp3 -print > playlist
Het is heel makkelijk om het shout service te starten, geef het volgende commando:
[dj@megajukebox bin]# ./shout megajukebox -P hackme -p playlist
De -P optie is het paswoord dat nodig is om een mount-punt toe tevoegen aan Icecast, dit is normaal ingestelt als hackme..... Ik raad je sterk aan dit te veranderen voordat een ander het doet :) De -p opties specificeerd de lokatie van de playlist file.
Hieronder is een lijst van alle command line opties:
[dj@megajukebox bin]# ./shout Usage: shout <host> [options] [[-b <bitrate] file.mp3]... Options: -B <directory> - Gebruik deze directory voor alle shout files -C <file> - Gebruik file als configuratie file -D <dj_file> - Draai dit voor elk liedje (system()) -P <password> - Gebruik als paswoord password -S - Geef alle instellingen weer en exit -V - Gebruik verbose uitvoer -X <desc> - Gebruik gespecificeerde beschrijving -a - schakel automatisch bitrate (transfer) correctie -b <bitrate> - Start met het gespicifeerde bitrate -d - Schakel de dj in. -e <port> - Verbind op poort met server. -f - Sla files over die niet de goed bitrate hebben -g <genre> - Gebruik een specifiek genre -h - Laat deze tekst zien -i - Gebruik oude icy headers -k - Vermink de interne playlist niet -l - Ga voor altijd door (loop) -m <mount> - Gebruik het gespecificeerde mount punt -n <name> - Gebruik de gespecificeerde naam -o - Schakel bitrate autodetectie uit -p <playlist> - Gebruik deze file als een playlist -r - Shuffle playlist (random play) -s - (Geheim) Zend geen meta data naar directory server -u <url> - Gebruik de gespecificeerde url -v - Laat versie zien -x - Update de cue file niet (spaart cpu) -z - Ga in de achtergrond (Daemon mode) -t - Schakel titel streaming in
Na het untarren van de bundel cd naar de directory, lees dan de README :)
Fluid heeft drie basis modes van operatie, verzenden, ontvangen en doorsturen. Ik focus alleen op verzenden.
De configuratie files die temaken hebben met transmit staan in config/MP3TX.cfg. Om de server met het volgende te testen zouden de standaard settings ok moet zijn:
java Fluid TX
Natuurlijk moet je een vorm Java eerst geinstalleerd hebben. Je kan de Blackdown port van JDK gebruiken verkrijgbaar op http://www.blackdown.org of als je Redhat gebruikt, Kaffe.
Fluid komt met een paar voorbeeld MP3 files, Dus als er iets werkt zou je iets als dit moeten zien (Ik heb de server in dit voorbeeld met Kaffe gestart, je kan het ook starten met java):
[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
Als je zo ver komt, ziet het er naar uit dat het werkt, maar ik weet zeker dat je meer wilt streamen dan alleen de demo files!
Je moet een playlist van MP3's die je wilt streamen compileren. Dit is een statische lijst, gebruikers kunnen geen aanvragen maken. Deze playlist is playlist.m3u en staat standaard in de root directorie.
Om een playlist van alle MP3's in een bepaalde directory (of disk) te compileren gebruik dan dit commando:
find [MP3 directory] -name *.mp3 -print > playlist.m3u
Standaard gebruikt de server poort 2711, dit is waar je lijsteraars verbinding mee maken, als je dit wilt veranderen kan dat in de configuratie file.
De server kan op afstand worden beheerd door te telnetten naar de admin poort, standaar poort 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
Het woord "jaguar" is het admin paswoord, dit is standaard. Er is geen prompt voor het paswood dus wacht er niet op! Ik raad je aan dit te veranderen of je nodigd een hacker uit! Het kan veranderd worden in de configuratie file, welke er zo uitziet:
[dj@megajukebox config]$ cat MP3TX.cfg 2711 2710 5 4096 32 1000 jaguar playlist.m3u current.txt # --- De regels zijn --- # 1. POORT nummer (welke de server gaat gebruiken) # 2. POORT nummer (voor het onderhouden van de server) # 3. Maximaal aantal connecties (voor de server) # 4 Packetgrootte bij het lezen/zenden (in bytes) # 5. Bitrate van de mp3s in kbit/s (alle mp3s moeten dezelfde bitrate hebben) # 6. Tijd tussen liedjes (in milliseconden) # 7. Paswoord voor op afstand beheren # 8. Playlist naam (lijst in .m3u formaat) # 9. Naam van de file om de song info naar toe te schrijven (van ID3-tag)
De opmerking op de playlist is dat deze in m3u formaat is wat betekend dat het in het zelfde formaat is als het find commando eerder.
Audio streamen kan ontzetten veel bandbreedte nemen als de bit-rate van de MP3 server te hoog staat.
Overweeg dit scenario. Een T1 link heeft een capaciteit van ongeveer 1.55 Mb/Sec. Als je je MP3' streamt op 128K/Bps stereo, zal elke speler 256K/Bps gebruiken, dus er kunnen maar 6 gebruikers verbinding maken met je MP3 server op elk tijdstip zonder problemen. En 256K/Bps, kunnen veel gebruikers niet door hun modem krijgen!
Dus je moet een beslising maken niet alleen in te stellen op wat de server kan, maar op wat een client kan. 24K/Bps geeft een redelijke qualiteits signaal waar 56K modem gebruikers naar kunnen connecten, en dezelfde T1 line kan nu 32 connecties aan.
Als je server op een Intranet draait, telt bandbreedte nog steeds mee vooral als je een 10M/Sec netwerk hebt.
Maar laat a.u.b je ISP of sys admin weten dat je gaat streamen anders zorg je voor opschudding. Sommige ISP's laten je betalen voor bandbreedte als je een limiet overschreid en sys admins willen weten waarom hun netwerk zo traag is :)
Ik denk dat het logisch is dat platen maatschappijen het niet leuk vinden als je hun materiaal zonder hun toestemming of betaling gaat streamen! Dus wat kun je streamen?
Dit is een gebied waar je je bewust moet zijn van legaliteit, omdat jij de gene bent die schuldig is.
Hieronder staan twee links, een van de Electronic Frontier Foundation welke advocaten zijn welke de beperkingen van de omliggende technologie vrijer willen maken. De andere link is naar de Recording Industry Association of America, welke artiesten beschermt tegen piraterij.
Ik raad je sterk aan beide sites te bezoeken, en andere waar je fisiek op gebaseerd bent.
http://www.riaa.com/weblic/weblic.htm