Streaming audio in tempo reale
Come codifcare l'audio in formato MP3 in tempo reale ed inviarlo sul WEB tramite un server Icecast in abbinamento ad una scheda TV.
In un altro articolo è stato descritto come sia possibile diffondere
programmi TV in rete. Ovviamente è possibile fruire i programmi
ricevuti dalla scheda TV da qualsiasi parte ci si connetta, ma lo
svantaggio deriva dall'impossibilità di trasmettere anche la
componente audio.
Se diffondete le immagini di una web-cam, il suono non è molto
importante, ma cos'è una trasmissione televisiva senza audio?
Lo streaming in tempo reale
Prima di tutto occorre avere a disposizione un server Icecast, la cui
installazione è descritta in diversi documenti disponibili sulla
Rete.
Per ottenere lo stream audio in tempo reale occorre un codificatore MP3
molto veloce (ad esempio Lame) e il programma LiveIce, che è
nella dotazione di pacchetti di Icecast. La versione più recente
è disponibile all'indirizzo:
http://star.arm.ac.uk/~spm/software/liveice.html.

LiveIce processa i segnali in ingresso sulla scheda audio e invia il
flusso a Lame che lo codifica in formato MP3. Quindi i dati codificato
sono inviati al server Icecast tramite LiveIce. Contemporaneamente il
segnale televisivo viene letto tramite bttvgrab e spedito al web server.
L'aspetto più interessante è che processi differenti
possono essere lanciati su calcolatori diversi configurati in maniera
opportuna ottimizzando ad esempio la connessione di rete, le regole di
filtraggio, il carico sulla CPU...) in modo che un servizio non
inibisca l'altro.

Non occorre un grande numero di calcolatori dotati di funzionalità audio/video, sono bastevoli anche due personal computer in rete locale sui quali lanciare tutti i task (la scheda TV, il server Icecast, il web server, eccetera).
Installazione
L'installazione di LiveIce è senza sorprese. Tuttavia, prima di
iniziare occorre installare un codificatore MP3. Raccomando l'uso di
Lame perchà lavora egregiamente assieme a LiveIce. Questo
programma è reperibile all'indirizzo: http://www.sulaco.org/mp3/.
Dopo averlo scompattato:
>> tar zxvf lame3.87beta.tar.gz -C /tmpoccorre compilare ed installare il pacchetto:
>> cd /tmp/lame3.87/ >> ./configure >> make >> make installSeguite la medesima procedura per LiveIce (che potete prelevare da: http://star.arm.ac.uk/~spm/software/liveice.html)
>> tar zxvf liveice.tar.gz -C /tmp >> cd /tmp/liveice >> ./configure >> make >> make installe copiate la directory (come root) in /usr/local
>> cp -a /tmp/liveice /usr/localLiveIce può essere configurato tramite un'apposita interfaccia, il file di configurazione si trova nella directory /usr/local/liveice
>> cd /usr/local/liveice >> ./liveiceconfigure.tkquindi impostate le seguenti opzioni:
- Server specifica il computer dove Icecast gira e al quale inviare l'audio. Nel caso sia il medesimo calcolatore dove fate lavorare il codificatore, scegliete localhost. Specificate anche la porta attraverso la quale il server ascolta il flusso dei dati;
- Impostate il formato PCM Audio a 32000Hz;
- Lo switch "Soundcard" deve essere selezionato. Se la vostra scheda audio supporta il full-duplex, cioè registra e manda in esecuzione contemporaneamente, attivate anche l'opzione omonima;
- Selezionate l'encoder, abbiamo detto LAME3 con un rateo di 32000 bit;
- poi impostate "Soundcard only";
- nel campo "Executables - Encoder" inserite lame;
Come passo successivo occorre avviare Icecast, aprite una finestra terminale e digitate:
>> icecastDovreste visualizzare il seguente output:
| Output: 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 [muse.local] 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]
->
|
>> ./liveicee dovreste visualizzare il seguente output:
| Output: 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.muse.local Description: LiveIce Press '+' to Finish Lvl: L: 5 R: 4 |
Il flusso dati viene spedito al server Icecast tramite LiveIce:
-> [21/Oct/2000:00:51:58] Accepted encoder on mountpoint /icy_0 from jpsi.ziegler.de. 1 sources connected ->
Selezionate la sorgente audio
Dopo avere lanciato un mixer (ad esempio kmix or gmix) sarete in grado di selezionare la sorgente sonora dalla quale catturare il flusso dati.

(SB Live! value - Karte)
Scegliendo il bottone Rec. sotto la parte di mixer che riguarda la sorgente
(CD, Line-In oppure microphone) che desiderate gestire.
Dal lato dell'ascoltatore occorre oltre al browser un qualsiasi riproduttore
MP3 che sia interfacciabile ad Icecast (per esempio xmms, freeamp, mpg123).
>> mpg123 http://my.server.de:8010E' molto importante specificare la porta di lavoro corretta. Adesso potrete ricevere il video proveniente dalla scheda TV ed il relativo audio ovunque voi siate semplicemente contattando il vostro server.
Utilizzo e problematiche
Un possibile impiego di questo sistema potrebbe essere come videotelefono tramite Internet, senza usare software particolari. Una web-cam connessa all'ingresso TV e un microfono connesso alla scheda sonora sono gli accessori che vi occorrono. Il vantaggio è che potete essere "visti" ed "ascoltati" da chiunque possieda un browser web e un riproduttore MP3 (anche su piattaforma Windows, ad esempio WinAMP). Ovviamente, per un funzionamento reale come video telefono occorrerebbe una scheda full-duplex ed installare i medesimi programmi anche sull'altro calcolatore dell'interlocutore. In ogni caso questa soluzione presenta qualche problema, principalmente dovuto ai disturbi sulla linea che sganciano il sincronismo tra audio e video. La codifica in tempo reale è più efficiente rispetto alla semplice riproduzione di un file MP3, che invece soffre il ritardo di riproduzione e quindi si avverte la mancanza di sincronia tra audio e video. Si può ovviare aumentando il numero di refresh ad almeno 20 per secondo, ma questo comporta un carico elevato di traffico sulla rete locale. Qualcuno quindi ripiega facendo partire in ritarto il segnale video, in modo da sincronizzarlo con il momento della riproduzione MP3, sebbene in questo giochi ancora un ruolo il riproduttore MP3 dal lato client.
Riferimenti: