Verder Terug Inhoud

11. MP3's streamen.

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.

11.1 Icecast

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

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

11.2 Fluid

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.

11.3 Bandbreedte afwegingen

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 :)

11.4 Copyright onderwerpen

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.eff.org/cafe/

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


Verder Terug Inhoud