home   articles   forum   masthead  
Pubblicato il 29.10.2000
Autore: Ronny Ziegler
Tradotto da: Calogero Bonasia
Languages: en de nl
Support Us!
 

Streaming audio in tempo reale

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.

Services

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.

Server

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 /tmp
  
occorre compilare ed installare il pacchetto:
  >> cd /tmp/lame3.87/
  >> ./configure
  >> make
  >> make install
  
Seguite 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 install
  
e copiate la directory (come root) in /usr/local
  >> cp -a /tmp/liveice /usr/local
  
LiveIce può essere configurato tramite un'apposita interfaccia, il file di configurazione si trova nella directory /usr/local/liveice
  >> cd /usr/local/liveice
  >> ./liveiceconfigure.tk 
  
quindi impostate le seguenti opzioni:
LiveIce Konfiguration
Queste impostazioni sono obbligatorie:
  • 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;
Quindi salvate la configurazione nel file liveice.cfg ed uscite dal pannello di configurazione.

Come passo successivo occorre avviare Icecast, aprite una finestra terminale e digitate:

  >> icecast
  
Dovreste 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]
  -> 
  


Icecast è in attesa di ricevere il flusso dati. Adesso lanciate LiveIce:
  >> ./liveice
  
e 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.

gmix Screenshot
(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:8010
  
E' 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: