Il Blog di Fabrizio Mondo

Come creare una web radio con Windows, Winamp e Icecast (guida avanzata)

maggio 10, 2007 11:04 am

Icecast Logo 2
Trentacinquesimo articolo dedicato alle web radio.

Continuiamo quanto prima iniziato su Icecast.

Se non ci sono stati intoppi (i commenti lo riveleranno) a quest’ora la radio funziona, ed ha come indirizzo il solito http://indirizzoip:numeroporta solo che stavolta, di default si crea un file example.ogg piuttosto che il conosciuto listen.pls

Vediamo adesso di Capire quali sono le impostazioni modificabili, a partire dal server.

Eravamo rimasti a questa immagine:

Icecast 002


Adesso clicchiamo sul tasto STOP SERVER quindi su Edit-> Configurations
Otterremo un file XML, che andiamo ad esaminare.

<limits>
<clients>100</clients>
<sources>2</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<!– If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. –>
<burst-on-connect>1</burst-on-connect>
<!– same as burst-on-connect, but this allows for being more
specific on how much to burst. Most people won’t need to
change from the default 64k. Applies to all mountpoints –>
<burst-size>65535</burst-size>
</limits>

Questaè la prima parte configurabile, rigurada i limiti che potete impostare per il vostro server:

CLIENTS: numero massimo di ascoltatori in contemporanea. Se sono impostati N ascoltatori, l’N+1esimo ascoltatore sarà avvisato della mancanza di posti disponibili.

SOURCES: numero di Sorgenti collegate al server Icecast, che, al contrario di Shoutcast permette di avere sorgenti multiple (commento personale: è una gran cosa)

THREADPOOL: Numero di Threads contemporanei aperti da Icecast. Maggiore è il flusso di ascoltatori, maggiore DOVREBBE essere il numero di thread simultanei da settare. Ricordiamo che ogni cosa ha un prezzo, quindi aumentando i Threads, maggiore sarà il peso di Icecast sulla macchina.

QUEUE-SIZE: Grandezza in byte del buffer disponibile ad ogni singolo ascoltatore, nel caso in cui non ci fosse possibilità di ascolto real time per problemi di congestione. Una volta superato questo limite il cliente viene disconnesso. (consiglio: inutile variarlo, questo valore va benissimo per qualsiasi bitrate)

CLIENT-TIMEOUT: come dice un ufficioso ma non ufficiale how-to questa opzione può essere ignorata in quanto non implementata.

HEADER-TIMEOUT: Massimo tempo di attesa da parte di un cliente per la ricezione iniziale del flusso.

SOURCE-TIMEOUT: Massimo tempo di attesa di dati da parte del server. Dopo avere atteso questo tempo, misurato in secondi, il server rimuove la sorgente.

BURST-ON-CONNECT: Questa opzione, disabilitata per default, se abilitata permette di creare un surplus di dati iniziale, utile per utenti che hanno forti buffer. Di contro, aumenta le latenze.

BURST-SIZE: Se attivato insieme a BURST ON CONNECT, indica quanti dati verranno inizialmente inviati di botto.

<authentication>
<!– Sources log in with username ‘source’ –>
<source-password>hackme</source-password>
<!– Relays log in username ‘relay’ –>
<relay-password>hackme</relay-password>

<!– Admin logs in with the username given below –>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>

SOURCE-PASSWORD: Password della sorgente

RELAY-PASSWORD: Password dei Relay

ADMIN-USER: Username dell’amministratore del server. (Consiglio: Lasciatelo cosi com’è)

ADMIN-PASSWORD: Password dell’amministratore del server.

<!– Uncomment this if you want directory listings –>
<!–
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
</directory>
–>

Queste opzioni servono per il listing nelle pagine gialle di Icecast, sono disabilitate per default.

YP-URL-TIMEOUT: Massimo tempo in secondi che il server può impiegare per inviare i dati al sito di listing.
YP-URL: Sito a cui inviare le informazioni inerenti la propria stazione.

<!– This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. –>
<hostname>localhost</hostname>

<!– You can use these two if you only want a single listener –>
<!–<port>8000</port> –>
<!–<bind-address>127.0.0.1</bind-address>–>

<!– You may have multiple <listener> elements –>
<listen-socket>
<port>8000</port>
<!– <bind-address>127.0.0.1</bind-address> –>
</listen-socket>
<!–
<listen-socket>
<port>8001</port>
</listen-socket>
–>

HOSTNAME: Riferimento univoco al computer che ospita il server.Può essere mantenuto LOCALHOST perchè anche in questo caso, la radio sarà raggiungibile tramite il vostro ip pubblico.

PORT: Similarmente a Shoutcast, Icecast permette di settare la porta TCP che preferite per le vostre trasmissioni. Faccio in tal caso solo le raccomandazioni generiche, non usate con numero inferiore a 1024, perchè vincolate al Sistema operativo (…)

BIND-ADDRESS: Vincolo di un singolo IP all’ascolto.. utile per redirezioni.

LISTEN-SOCKET: Porta supplementare, di “riserva” utilizzata da Icecast. Può essere 8001, o the one you prefer.

<!–<master-server>127.0.0.1</master-server>–>
<!–<master-server-port>8001</master-server-port>–>
<!–<master-update-interval>120</master-update-interval>–>
<!–<master-password>hackme</master-password>–>

Queste opzioni, di default commentate, sono necessarie per chi vuole effettuare un relaying completo (ovvero di tutti i mountpoints) di un altro server.

Devono essere settate le opzioni nel seguente modo:

MASTER-SERVER: Indirizzo Ip del server da cui si fa relaying.

MASTER-SERVER-PORT: Porta utilizzata dal Server da cui si fa relaying.

MASTER-UPDATE-INTERVAL: Intervallo di tempo per le varie sincoronizzazioni tra i server.

MASTER-PASSWORD: Password del server da cui si fa relaying.

Ignoriamo i Relay on demand, e passiamo ai Relay singoli, che non comprendono TUTTI i Mountpoints, ma magari uno solo.

<!–
<relay>
<server>127.0.0.1</server>
<port>8001</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
–>

SERVER: Indirizzo Ip del server da cui si fa relaying.

PORT: Porta del server da cui si fa relaying.

MOUNT: Mountpoint da cui fare relaying.

LOCAL-MOUNT: Mountpoint locale in cui si fa il relaying.

ON DEMAND: Flag che identifica se il relay è o meno on demand, non interessa le web radio.

RELAY-SHOUTCAST-METADATA: Flag che indica se si sta facendo relay di un server Shoutcast, e se in tal caso si vuole fare relaying anche dei metadati.

<!– Only define a <mount> section if you want to use advanced options,
like alternative usernames or passwords
<mount>
<mount-name>/example-complex.ogg</mount-name>

<username>othersource</username>
<password>hackmemore</password>

<max-listeners>1</max-listeners>
<dump-file>/tmp/dump-example1.ogg</dump-file>
<burst-size>65536</burst-size>
<fallback-mount>/example2.ogg</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<intro>/example_intro.ogg</intro>
<hidden>1</hidden>
<no-yp>1</no-yp>
<authentication type=”htpasswd”>
<option name=”filename” value=”myauth”/>
<option name=”allow_duplicate_users” value=”0″/>
</authentication>
<on-connect>/home/icecast/bin/stream-start</on-connect>
<on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
</mount>

<mount>
<mount-name>/auth_example.ogg</mount-name>
<authentication type=”url”>
<option name=”mount_add” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”mount_remove” value=”http://myauthserver.net/notify_mount.php”/>
<option name=”listener_add” value=”http://myauthserver.net/notify_listener.php”/>
<option name=”listener_remove” value=”http://myauthserver.net/notify_listener.php”/>
</authentication>
</mount>

–>

MOUNT-NAME: Nome del MountPoint in cui verranno applicate le specifiche seguenti.

USERNAME: Nome utente di accesso al mountpoint

PASSWORD: Password del mountpoint

MAX-LISTENERS: Opzione che indica il numero massimo di Ascoltatori del mountpoint.

DUMP-FILE: Nome del file che fungerà da deposito del flusso attraverso questo mountpoint.

BURST-SIZE: Vedi sopra.

FALLBACK-MOUNT: Mountpoint che verrà utilizzato come ancora di salvataggio qualora si disconnettesse la sorgente.

Le altre opzioni riguardono sistemi Unix e non verranno trattate, ma solo richieste su commento. Saltiamo direttamente a LOGGING.

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<!– <playlistlog>playlist.log</playlistlog> –>
<loglevel>4</loglevel> <!– 4 Debug, 3 Info, 2 Warn, 1 Error –>
<logsize>10000</logsize> <!– Max size of a logfile –>
<!– If logarchive is enabled (1), then when logsize is reached
the logfile will be moved to [error|access|playlist].log.DATESTAMP,
otherwise it will be moved to [error|access|playlist].log.old.
Default is non-archive mode (i.e. overwrite)
–>
<!– <logarchive>1</logarchive> –>
</logging>

ACCESSLOG: File in cui verranno memorizzati gli accessi al server da parte dei clients

ERRORLOG: File in cui verranno memorizzati gli errori del server.

LOGLEVEL: I livelli del log possono essere i seguenti:

  1. Debug, Informazioni, Segnalazioni, Errori
  2. Informazioni, Segnalazioni, Errori
  3. Segnalazioni, Errori
  4. Errori

LOGSIZE: Grandezza massima dei files di log.

E per il server con Windows abbiamo finito. Altre opzioni ci sono nella versione Per *nix. Adesso ci occuperemo del Plug-in Oddcast.

Questa è la schermata del plug-in Oddcast per Winamp, clicchiamo su config.

OddCast 01

Otterremo quest’altra immagine:

OddCast 02

Esaminiamo ogni singola opzione di ogni singolo TAB.

BITRATE: E’ possibile settare un bitrate minimo, medio e massimo. Il Bitrate medio sarà quello utilizzato in caso di Codec CBR, mentre i valori di minimo e massimo saranno i limiti dei codec VBR (prometto di trattare meglio l’argomento codec)

SAMPLE RATE: Frequenza di campionamento. E’ settata a 44100 Hz. Va bene cosi, se volete qualità migliori o peggiori settatela diversamente.

CHANNELS: Uno o due canali? Ovvero, STEREO o MONO? Se avete settato 44100 Hz consiglio di settare 2 canali (che del resto è l’opzione di default)

ENCODER TYPE: Tipologia di Encoder. Icecast da questo punto di vista è molto flessibile. Permette di scegliere tra OGG, LAME, WMA, AAC.

ARCHIVE DIRECTORY: Potete scegliere dove salvare i vostri Flussi in locale.

LOG LEVEL & LOG FILE: Come precedentemente descritto, potete scegliere la precisione di Logging e il posto in cui verrà salvato.

Cambiamo TAB e andiamo qui:

OddCast 03

Qui ci sono le opzioni di Encoding. In base all’encoder che avete scelto potete settare:

1) Per LAME: Potete settare Il VBR, le modalità di VBR e la qualità (per ora non mi addentro nell’argomento, ma lo farò)

2) Per OGG: Potete settare un encoding orientato alla qualità o al bitrate.

3) Per WMA: Settate la porta di ascolto (socket) e il numero di Clients possibili.

4) Per AAC: E’ settabile la Frequenza di taglio e il livello qualitativo.

Last but not least:

OddCast 04

SERVERTYPE: Tipo di server, in questo caso ICECAST2.

SERVER: Nome del computer che ospita il server, nel caso di home radio, localhost

RECONNECT SECS: Tempo di riconnessione

PORT: Porta da cui il server effettuerà lo streaming.

LIVEREC SAMPLERATE: Frequenza di campionamento di segnali live, non diretamente provenienti da Winamp, come le regie.

ENCODER PASSWORD: Password del Server, che deve matchare ovviamente con quella dell’encoder.

PUBLIC SERVER: Volete il server pubblico? Spuntate la casella.

RECONNECT: Potete abilitare o disabilitare la riconnessione automatica in caso di caduta della sorgente.

GENRE: Genere che trasmettete.

MOUNTPOINT: Come precedentemente descritto, settate il mountpoint che utilizzate.

STREAM URL: Scrivete qui il vostro sito

SERVER DESC: Scrivete una breve descrizione.

E cosi ce l’abbiamo fatta a portare la pannocchia a casa ;)

22 Responses to “Come creare una web radio con Windows, Winamp e Icecast (guida avanzata)”

fabio wrote a comment on novembre 27, 2007

Ciao Fabrizio!
Volevo porti alcune domande
Ultimamente mi è stata data la possibilità di suonare live per una webradio (olandese)
chi mi ha assistito mi ha fatto scaricare winamp + oddcastv3; mi ha dato i dati del server (indirizzo ip, porta, password ecc.) ma la cosa strana è che non si connette o meglio io non riesco “a emettere suoni”. Lui dice che il problema è dovuto al fatto che io utilizzo una connessione wireless oppure dal mio utilizzo di virtualdj.
Volevo chiederti una tua opinione al riguardo e perchè se, con listen2myradio e utilizzando le stesse caratteristiche, riesco a fare streaming?
Grazie e complimenti
Ciao Fabio

Fabrizio Mondo wrote a comment on novembre 27, 2007

Ciao Fabio,

Lui dice che il problema è dovuto al fatto che io utilizzo una connessione wireless oppure dal mio utilizzo di virtualdj.

La connessione wireless non è tanto diversa dalle altre.. io con il wireless gestisco due server di streaming e un server web, e sono tutti accessibili ovviamente.. senza contare che mi sono collegato come sorgente a mille radio con molti tipi diversi di plugin dsp, oddcast compreso.

Il virtual DJ se non occupa contremporaneamente la stessa porta non influenza la trasmissione.

Puoi dirmi come effettui la trasmissione, ovvero quali strumenti utilizzi, più precisamente?

Cosi vedrò di tentare una diagnosi più accurata.

Fabio wrote a comment on novembre 28, 2007

Ciao Fabrizio, grazie per l’interessamento.
Io utilizzo come mixer un controller mp3 bcd2000 dove attacco anche i cd player. gli mp3 li gestisco con virtual dj.
Quando suono con listen2myradio carico direttamente dalle impostazioni del virtualdj indirizzo ip e porta con relativa psw e va alla grande, nessun problema di buffering, insomma niente.
Quando, invece, ho tentato di fare stream con lui, mi ha fatto configurare il plugin oddcast con i suoi parametri e poi dove appaiono i peakmeters mi ha fatto spuntare la voce line in ma il risultato è stato un silenzio assoluto dall’altra parte…
provo a spiegarmi meglio: quando clicco su connect lui si connette ma non spedisce niente…

Per quanto riguarda le caratteristiche del pc è un sistema windows xp sp2 con 1gb di ram.

La connessione è in upload solitamente con una media di 600kbs un download a 3800kbs.

Questo è quanto… spero di aver capito la domanda e che tu possa farci arrivare ad una soluzione.

Ciao e ancora grazie mille.

FAbio

Fabrizio Mondo wrote a comment on novembre 28, 2007

@Fabio: Facciamo una prova noi, contattami in privato tramite la pagina contatti, perchè mi interessa approfondire la questione oddcastv3. Non potrei darti una spiegazione al riguardo senza vedere con mano, perchè la procedura che esegui è giusta. Il fatto che la connessione è attiva, ma che non arriva il sonoro è sintomo di un problema di mixer tuo locale. Occorreràsettare qualche opzione particolare, ma se hai già detto che il line in con listen2myradio ti funziona (listen2myradio usa shoutcast) allora mi stranizzo perchè icecast lavora allo stesso modo.

walter wrote a comment on febbraio 17, 2008

fabry scusa,ho istallato icecast tutto funziona ma il nome della mia radio non la leggo nella lista directory di icecast ……come o cosa devo fare ciao e grazie walter Ps ho una connessione internet box vodafone umts

Fabrizio Mondo wrote a comment on febbraio 17, 2008

@Walter:

Il fatto che usi umts mi preoccupa, bisogna controllare l’eventuale chiusura di socket tcp in ascolto…

La tua radio è ascoltabile dall’esterno?

CDJ wrote a comment on aprile 12, 2008

sottopongo alla tua attenzione questo dilemma:

Ho creato una radio (anche grazie alle tue guide non nego) con questi componenti:

server dedicato in un’azienda dove lavora un mio amico con banda in upload sopra i 50 mb (ben al di sopra quindi delle nostre necessità)

sul server sono installati winamp, il plugin oddcast e icecast2

il server fa quindi solitamente da source client e da server per i client che ascoltano, mentre se facciamo una trasmissione live mi collego a tale server.

Il problema è che la radio funziona, ma il client puntualmente si interrompe per bufferizzare.
Non capisco: la banda in upload del server è ampia, i client con cui proviamo a connetterci dispongono di sufficiente banda in download (trasmettiamo a 64 kb e radio virgin per esempio la ascoltiamo benissimo)
Il curioso è che durante le trasmissioni live (ovvero quando trasmetto da remoto) ciò non accade.
Cosa significa? che il problema avviene tra winamp e il server?

pardon per la logorrea… per la precisione…

Fabrizio Mondo wrote a comment on aprile 13, 2008

@CDJ:

Le informazioni purtroppo non sono sufficienti a dare una risposta univoca. Dovresti dirmi se capita con TUTTI i client connessi. Molto potrebbe dipendere dal momento attuale di congestione della rete.

CDJ wrote a comment on aprile 13, 2008

si capita con tutti i client connessi

ma come fa a essere lo stato di congestione della rete se trasmettendo la sorgente dal mio pc non succede? i client si connettono comunque allo stesso server

non può essere un problema di Ram? sparo…

Fabrizio Mondo wrote a comment on aprile 14, 2008

@CDJ:

ma come fa a essere lo stato di congestione della rete se trasmettendo la sorgente dal mio pc non succede? i client si connettono comunque allo stesso server

E io come dovevo saperlo che capitava a tutti i client, predizione divina o telepatia?

Adesso posso dirti che il problema dipende dalla sorgente. Prova a reinstallare gli applicativi, o verifica che non ci siano problemi hardware legati all’hard disk e alla ram.

CDJ wrote a comment on aprile 14, 2008

non mi permettevo di fare ironia… come ho specificato nel primo post non mi davo pace per il motivo appunto che trasmettendo da casa sul server andava benissimo, mentre trasmettendo in locale sul server saltasse… tra l’altro non ti paga nessuno per ascoltare le nostre problematiche per cui grazie a priori…

ho visto le caratteristiche del server ed ha 2 Gb di Ram ma è un Intel pentium III 927 Gh
Può essere il processore?

Può essere il processore? ho visto inoltre che gira sql server 2005 sebbene non venga utilizzato

salut

Fabrizio Mondo wrote a comment on aprile 14, 2008

@CDJ:

Prova a reinstallare il sistema operativo, se il problema persiste, è un problema hardware.

Cesare wrote a comment on giugno 13, 2008

Ciao!

è possibile con Icecast configurare l’input da una sorgente diversa da winamp?

Fabrizio Mondo wrote a comment on giugno 13, 2008

@Cesare:

Certamente. Regie come Mb Studio o Sam Broadcaster permettono di usare Icecast come server di streaming.

alessandro wrote a comment on giugno 22, 2008

ciao fabrizio sono nuovo di tutto :D sarei interessato a fare una radio web ho scaricato winamp il plug in per winamp e shoutcast server fatto tutti i settaggi del plug in come da guida si attiva la radio ma mi da l errore che tu gia hai menzionato in una tua guida cioe questo : [ yp_add] yp.shoutcaST.COM gave error [nak] ….. etc. il resto nn lo scrivo per fare prima ma gia lo sai …. nn so proprio come fare il fatto e che uso vodafon box huawey e220 e mi viene il dubbio che sia quindi impossibile risolvere l errore vorrei da te una conferma o smentita riguardo al mio dubbio ti ringrazio in anticipo saluti da alessandro p.s chiedo a te perche a quanto ho capito sei molto pratico di queste cose

Fabrizio Mondo wrote a comment on giugno 23, 2008

@Alessandr: E’ un problema di port forwarding. Ricommenta eventualmente nella guida all’utilizzo di winamo e shoutcast.

luca siroti wrote a comment on agosto 31, 2008

Ciao Fabrizio sono Luca, Ho aperto una web radio con Icecast2 e Winamp e funziona , ma per trasmettere anche con un microfono come posso fare???

fabrymondo wrote a comment on agosto 31, 2008

@Luca Siroti:

Nelle configurazioni troverai un pulsante con la possibilità di registrare anche dall’ingresso della scheda audio, ovvero dai microfoni. Settando contemporaneamente il mixer di windows dovresti essere in grado di codificare anche il flusso audio proveniente dal microfono.

Kalos wrote a comment on settembre 12, 2008

ciao fabri!allora ho da porti qualke domanda:
1.l’indirizzo preciso x far ascoltare la mia radio è quello ke trovo su oddcast: vale a dire destination dove trovo scritto localhost?

2.x farla ascoltare dal mio url, gli altri devono avere un player ke legga gli url cioè tipo winamp stesso o vlc o cosaltro…oppure è possibile ascoltarla anke mettendo il link su un motore di ricerca?

3.la velocità ke mi da è di 60 kbps!cm ti sembra?bassa?se si cm potrei cambiarla?

ultima domanda e poi ti lascio in pace e ti ringrazio in anticipo…anke x la pazienza ke hai nel leggere sto commento

4.creare un radio con winamp è gratuito?ma soprattutto quello ke mi interessa di più è, se è gratis pure x ki la ascolta?(forse quest’ultima domanda è stupida, ma rispondi lo stesso)
grazie

fabrymondo wrote a comment on settembre 12, 2008

@Kalos:

1) Se hai settato localhost, l’indirizzo che mi chiedi tu è il tuo ip pubblico. Puoi vederlo in siti come http://www.whatismyip.com

2) Per ascoltare una web radio occorre un player. Tale player può essere EMBEDDED, ovvero incorporato in una pagina web, oppure STAND ALONE, come winamp, vlc e quanti altri player lo permettono. Tramite motore di ricerca non puoi fare nulla.

3) 60 kbps non è una velocità alta in generale, mentre è anche troppo alta per server locali, come nel tuo caso. Rischi di non poterti fare ascoltare che da un 4/5 persone massimo. Per i settaggi leggi tutte le guide inerenti icecast all’interno del blog.

4)Si, è gratuito sia crearla che ascoltare le varie web radio. Però attenzione, c’è molto altro sotto.

Pippo wrote a comment on ottobre 7, 2009

Ciao, non so se sono nella sezione giusta ma non ho trovato il modo di scriverti, devo fare i complimenti alle tue guide sono molto utili.
Avrei un problema con icecast2, praticamente ho installato tutto lo faccio funzionare con winamp e edcast, configurato tutto alla perfezione ma al momento che riavvio il pc avviando winamp con edcast non si aggancia con icecast2 nel source level stats non mi appare + niente, eppure prima di riavviare la stringa /stream.mp3 la trovo e dopo il riavvio non ce verso, dove sbaglio?
Spero mi puoi aiutare è molto importante per me, grazie!!!

p.s. prima ho sbagliato, ho postato in un’altra sezione, sorry!!!

fabrymondo wrote a comment on ottobre 14, 2009

@Pippo:

Il server icecast è in locale? Se è in locale verifica di averlo riaperto una volta riavviato il computer!

Care to comment?