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 bijna 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 bevindt in de etc directory 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 directory kopieëren 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 lijkt op:
[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 optie specificeert 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
LiveIce kan in 2 modes werken, het kan een playlist doorgeven aan Icecast of kan live audio van de geluidskaart doorgeven.
Na het untarren en lezen van de README betreffende het compileren van het pakket, zorg dan dat mpg123 is geinstalleerd en dat LiveIce het kan gebruiken als LiveIce het nodig heeft.
Er zijn twee manieren om LiveIce te configureren. De config file editten met vi/emacs/of wat dan ook of doormiddel van een TK gebaseerde configuratie tool, wat een mooie manier van editten is :)
De best plaats voor beschrijvingen over de internals van liveice.conf kan worden gevonden op de LiveIce homepage waar Scott alle opties beschrijft.
Dit is een kopie van mijn config file met LiveIce ingesteld in de mixer mode (streamen van een lijst MP3's)
NOTITIE: Ik heb commentaar toegevoegd aan de file, dus als je kopie en paste doet zorg dan dat er geen tekst op de volgende regel verschijnt anders werkt LiveIce niet :)
# liveice configuratie file # Automatisch gegenereerd SERVER megajukebox # Je server naam * MOET DE NAAM ZIJN HOE DE SERVER IS GENOEMD * PORT 8000 # De poort waar Icecast op draait. NAME Megajukebox # Informatie met betrekking to de server naam die wordt gezonden # naar de MP3 spelers en de directory servers. # Voorbeelden 'Sarah FM' of 'ThisTown: Loud and Heavy Jazz -Internet Radio 24/7' GENRE Live # Informatie over het genre. Bijvoorbeeld 'Talk' of 'Dance' DESCRIPTION # Informatie over het station. Voorbeeld 'The best for reggae in the North' URL http://megajukebox:8000 # De URL en poort van de serverThe URL and port of the server. PUBLIC 0 # Zet hier 1 als wilt dat Icecast je station lijst en details moet doorgeven. # laat het anders op 0 staan XAUDIOCAST_LOGIN # Kan ICY_LOGIN zijn of X_AUDIOCAST_LOGIN. X_AUDIOCAST is beter. MOUNTPOINT /techno # Stelt de naam van het mountpunt van de stream in voor Icecast. # Wordt alleen gebruikt als X_AUDIOCAST is gebruikt. De default is icy_0 PASSWORD hackme # Het admin paswoord van Icecast. SAMPLE_RATE 44100 # De sample rate van de stream STEREO # kan MONO of STEREO zijn NO_SOUNDCARD # Zie hieronder HALF_DUPLEX # Stelt de soundkaar duplex mode in. Kan HALF_DUPLEX of FULL_DUPLEX zijn USE_GOGO # Stelt de encoder in die moet worden gebruik. Kijk in de README voor een lijst BITRATE 128000 # Stelt de bit rate van de stream in (zie hieronder) VBR_QUALITY 1 # Stelt de variabele bit rate kwaliteit in. MIXER # Zie hieronder PLAYLIST /megajukebox/playlist # Lokatie van de playlist (zie details op het find commando later # in dit hoofdstuk) TRACK_LOGFILE track.log # Filenaam en lokatie om de lijst van MP3's te dumpen die gestreamt worden Als je de config file hebt start je LiveIce op deze manier: <code> [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
The last line is a peak meter.
Dit zijn de toetsenbord controls voor de mixer mode:
Actie Kanaal 1 toets Kanaal 2 toets ~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ Selecteer volgende track op kanaal 1 a Selecteer vorige track op kanaal q z Start/Stop kanaal 2 s Reset kanaal w x Verhoog volume op kanaal 3 d Verlaag volume op kanaal e c Verhoog snelheid op kanaal 4 f Verlaag snelheid op kanaal r v Sticky mode Aan/Random/Uit 5 g Preview kanaal t b Random Track u m
De bovenstaande liveice.cfg is voor mixermode. Om LiveIce in audio mode te gebruiken verander dan de regel met MIXER naar NOMIXER en maak NO_SOUNDCARD, SOUNDCARD en herstart LiveIce.
De correctie opties vergeten instellen kan lijden to enkele interesante waarschuwingen ;)
946:Error: Line In mode *en* geen soundkaart??????? Eeejit!
Als je alles goed hebt ingesteld en een externe bron hebt ingeplugd, moet je kunnen streame =:)
[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 sical Press '+' to Finish Lvl: L: 8704 R: 11776
De slim goed geoogedenn onder jullie heeft misschien gezien dat in liveice.cfg de eerste regel commentaar laten zien dat de file automatisch is gegenereerd. Als je de TK gebaseerde GUI liveiceconfigure.tk gebruikt en je hebt handmatige veranderingen gemaakt ben je die kwijt. Gebruik de GUI of leer vi/emacs :)
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 te maken 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 directory.
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 luisteraars 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, standaard 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 password, dit is standaard. Er is geen prompt voor het password dus wacht er niet op! Ik raad je aan dit te veranderen of je nodigt 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 betekent dat het in het zelfde formaat is als het find commando eerder.
Audio streamen kan ontzettend veel bandbreedte innemen 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 kwaliteits 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 overschreidt en sys admins willen weten waarom hun netwerk zo traag is :)
Ik denk dat het logisch is dat platenmaatschappijen 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 degene 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 fysiek op gebaseerd bent.
http://www.riaa.com/weblic/weblic.htm