Realtime Audio Streaming
Audio in realtime naar mp3 omzetten en via een Icecast server rond de
wereld te sturen klinkt leuk.Maar in combinatie met een TV kaart kun je on-ontdekte landen bereiken...
Een ander artikel beschreef hoe je het actuele TV programma over het
netwerk kunt streamen. Zo kon je overal plezier hebben van je TV kaart
met behulp van een webbrowser. Maar deze oplossing had een fataal nadeel.
Je kreeg geen geluid, alleen video.
Als je de afbeelding van een webcam streamt, is het geluid niet belangrijk,
maar een TV programma zonder audio?
Ik kon dit idee NIET van me afzetten, ook omdat Icecast realtime
audio streaming zou moeten ondersteunen.
Realtime Streaming
Je hebt tenminste een Icecast server nodig om op het netwerk te streamen. De installatie van deze server is beschreven in het artikel Je eigen radio station: icecast".
Als je audio in realtime (dus niet reeds-gecodeerde mp3 bestanden) wil
streamen, heb je een snelle mp3 encoder (Lame is een aanrader) en het
programma LiveIce, deze is onderdeel van het Icecast pakket.
De nieuwste versie kun je downloaden vanaf de homepage:
http://star.arm.ac.uk/~spm/software/liveice.html

LiveIce leest het line-in kanaal van je geluidskaart en stuurt de data
naar Lame die het signaal realtime in mp3 omzet.
De geconverteerde data wordt dan door de LiveIce naar de Icecast
verstuurd.
Tegelijkertijd wordt de TV uitgelezen door bttvgrab en
wordt de uitvoer naar de webserver verzonden (zie
Webcam zonder Webcam).
Een leuke bijkomstigheid is dat de verschillende processen op
verschillende computers kunnen worden uitgevoerd en elk kan ontworpen
worden om zijn belangrijkste taak uit te voeren (netwerk verbinding,
firewall regels, CPU ...) en de services bijten elkaar niet.

Zolang je niet enkele duizenden computers wilt voorzien van audio/video maar slechts een of twee in je lokale netwerk, kun je alle taken op enkele machine plaatsen (een enkele PC met een TV- en een geluidskaart, geïnstalleerde web- en Icecast-server).
Installatie
De installatie van LiveIce is weinig verassend. Maar voordat je LiveIce
installeert, zou je eerst een mp3encoder moeten installeren. Wij raden
de encoder lame aan omdat deze goed werkt in combinatie met
LiveIce. Deze encoder kun je downloaden op
http://www.sulaco.org/mp3/.
Na het uitpakken met:
>> tar zxvf lame3.87beta.tar.gz -C /tmpkun je het pakket compileren en installeren:
>> cd /tmp/lame3.87/ >> ./configure >> make >> make installDezelfde procedure geldt voor LiveIce (te vinden op http://star.arm.ac.uk/~spm/software/liveice.html)
>> tar zxvf liveice.tar.gz -C /tmp >> cd /tmp/liveice >> ./configure >> make >> make installen kopieer de directory (als root) naar /usr/local:
>> cp -a /tmp/liveice /usr/localLiveIce kun je configureren via een frontend. Het configuratie bestand bevindt zich in dezelfde directory als waar je het programma start, dus ga je eerst naar /usr/local/liveice
>> cd /usr/local/liveice >> ./liveiceconfigure.tken zet je de volgende opties:

- Bij Server geef je op op welke computer de Icecast server draait en waar de audio naartoe moet worden gestuurd. Als je Icecast op dezelfde computer als de encoder draait, volstaat localhost.
- Achter Server geef je de poort op waar Icecast op luistert voor de data.
- Achter Password geef je de wachtwoordstring voor Icecast op.
- PCM Audio Format stel je in op 32000Hz.
- Soundcard dient enabled te zijn. Als je kaart Full-Duplex (tegelijkertijd opnemen en afspelen) ondersteund, kun je deze optie ook activeren.
- Als Encoder kies je LAME3 met een bitrate van 32000.
- Kies Soundcard only.
- In het veld Executables - Encoder type je lame
Vervolgens start je de Icecast server (als die nog niet actief was) in een nieuwe terminal met
>> icecastJe krijgt de volgende uitvoer:
| Uitvoer: 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.
[21/Oct/2000:00:47:33] Icecast Version 1.3.0 Starting..
[21/Oct/2000:00:47:33] Using stdin as icecast operator console
[21/Oct/2000:00:47:33] Tailing file to icecast operator console
[21/Oct/2000:00:47:33] Server started...
[21/Oct/2000:00:47:33] Listening on port 8010...
[21/Oct/2000:00:47:33] Using [ronny.ziegler.de] as servername...
[21/Oct/2000:00:47:33] Max values: 20 clients, 10 clients per
source, 10 sources, 5 admins
-> [21/Oct/2000:00:47:34] [Bandwidth: 0.000000MB/s] [Sources: 0]
[Clients: 0] [Admins: 1] [Uptime: 1 seconds]
->
|
Icecast wacht nu op een client om de data naartoe te sturen.
Nu start je LiveIce
>> ./liveiceen zou je de volgende uitvoer moeten krijgen:
| Uitvoer: liveice |
playlist 0 Initialising Soundcard 16Bit 32000Hz Stereo opening connection to 192.168.1.13 8010 Attempting to Contact Server connection successful: forking process opening pipe!... writing password Setting up Interface Soundcard Reopened For Encoding Input Format: 16Bit 32000Hz Stereo Output Format: 32000 Bps Mpeg Audio IceCast Server: 192.168.1.13:8010 Mountpoint: liveice Name: LiveIce Radio Genre: Live Url: http://www.linuxnetmag.de Description: LiveIce Press '+' to Finish Lvl: L: 5 R: 4 |
De data wordt door LiveIce naar de Icecast server verzonden. Je krijgt deze informatie op een nieuwe regel uitvoer van Icecast:
-> [21/Oct/2000:00:51:58] Accepted encoder on mountpoint /icy_0 from jpsi.ziegler.de. 1 sources connected ->
Kies de bron
Als je een mixer (kmix of gmix) start, kun je de opname-bron van je geluidskaart kiezen (voorzover deze Full-Duplex ondersteund):
(SB Live! value - Kaart)
Op de onderste regel selecteer je de Rec. knop om de gewenste bron (CD, Line-In of microfoon) te kiezen.
Naast een webbrowser heeft de ontvanger een mp3 speler nodig. Deze mp3 speler moet kunnen verbinden met de Icecast server (bijvoorbeeld xmms, freeamp, mpg123).
>> mpg123 http://my.server.de:8010Het is belangrijk om hier het juiste poortnummer van de Icecast server op te geven.
Nu kun je TV video en audio ontvangen, waar je je ook bevindt.
Gebruik en problemen
Behalve voor TV-beeld en geluid kan deze methode ook worden gebruikt voor telefoongesprekken via Internet zonder speciale software. Een webcam, verbonden met de TV kaart, een geluidskaart met een aangesloten microfoon vormen een echte video-telefoon.
Het voordeel zou zijn dat iedereen met een webbrowser een mp3 speler die mp3 streaming ondersteund (voor M$Win WinAMP bijvoorbeeld), tegelijk video en audio kan krijgen. Deze oplossing werkt zelfs met Linux en hoef je niet langer naar M$Win te gaan voor diens NetMeeting.
Voor een echte video telefoon hebben beide zijden een Full-Duplex geluidskaart nodig, zodat je de TV en audio server op beide kunt installeren.
Uiteraard heeft deze oplossing wel enige problemen. Het meest storende is het ontbreken van synchronisatie van video en audio.
De realtime encoding en het afspelen van de mp3 stream (door de buffering)
vertragen de audio uitvoer. Zo is de audio altijd vertraagd ten opzichte
van de video.
Als de video iedere paar seconden wordt ververst is dit effect niet zo
ernstig, maar als je video streaming met 20 afbeeldingen per seconden
bekijkt in je lokale netwerk, is de vertraging verschrikkelijk.
Iemand (misschien jij) zou dit kunnen oplossen door het video signaal
gelijk te vertragen. De vertraging is afhankelijk van de gebruikte mp3
speler en moet ook op de client worden geregeld, niet op de server.
Een Java applet die het video signaal vertraagd met een bepaalde tijd zou
een oplossing zijn, maar dat zou te ver uitweiden voor dit artikel.
Als iemand iets weet met deze functie (en/of een Java mp3 speler) kan hij
contact met ons opnemen.
Links:
| Je eigen radio station: icecast | Installatie en Configuratie van een Icecast server |
| Webcam zonder Webcam | Hoe je een TV-programma over het netwerk streamt? Dat kun je hier lezen! |
| http://www.sulaco.org/mp3/ | Homepage van de MP3 encoder Lame |
| http://star.arm.ac.uk/~spm/software/liveice.html | Homepage van LiveIce |
| http://www.icecast.org/ | Homepage van Icecast |