SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

Usare darkice come encoder mp3 per icecast su Lenny

Ho illustrato qualche post fa, come creare una webradio con ices e icecast. Come ho scritto nel post, è possibile configurare ices per utilizzare una playlist, oppure direttamente il device di input audio. L’unica “limitazione” di ices è che nel formato pacchettizzato permette solo l’encoding in formato ogg vorbis e quindi non tutti i player saranno in grado di utilizzare il flusso streaming. E’ possibile però utilizzare un altro encoder, altrettanto semplice da installare e configurare, che utilizza il solo canale di input della scheda audio e può modulare il flusso in formato mp3.
Stiamo parlando di darkice che nel repository debian non è nella versione completa (ergo non codifica in formato mp3 per motivi di licenza), ma che è disponibile in formato pacchettizzato e con tutti i moludi precompilati su www.debian-multimedia.org. Tutta la parte di configurazione di icecast ed altre annotazioni sono disponibili nel precedente post.
A questo punto iniziamo.
Prima di tutto va aggiunto in /etc/apt/sources.list il repository di debian-multimedia.org, inserendo la riga:

deb http://www.debian-multimedia.org lenny main

a questo punto lanciamo il classico:

apt-get update

e poi installiamo la chiave del repository:

apt-get install debian-multimedia-keyring 

Passiamo ora ad installare darkice con:

apt-get install darkice-full

Ora possiamo configurare darkice. Il file di configurazione si trova in /etc/darkice.cfg. Possiamo farne una copia e poi modificarlo in modo che contenga:

[general]
duration        = 0        # duration of encoding, in seconds. 0 means forever
bufferSecs      = 5         # size of internal slip buffer, in seconds
reconnect       = yes       # reconnect to the server(s) if disconnected
[input]
device          = /dev/dsp  # OSS DSP soundcard device for the audio input
sampleRate      = 22050     # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16        # bits per sample. try 16
channel         = 2         # channels. 1 = mono, 2 = stereo
[icecast2-0]
bitrateMode     = cbr
format          = mp3    # format of the stream: ogg vorbis
bitrate         = 32        # bitrate of the stream sent to the server
quality         = 0.8
server          = localhost
                            # host name of the server
port            = 8000      # port of the IceCast2 server, usually 8000
password        = pwd_icecast        # source password to the IceCast2 server
mountPoint      = live  # mount point of this stream on the IceCast2 server
name            = NomeRadio
                            # name of the stream
description     = Descrizione Radio
                            # description of the stream
url             = http://www.urlradio.ext
                            # URL related to the stream
genre           = pop    # genre of the stream
public          = yes       # advertise this stream?

Alcuni parametri sono ovviamente da configurare (es. server, port, password, mountPoint, etc), altri possono essere lasciati così.
Fatto questo, potete avviare l’encoder con:

darkice -c /etc/darkice.cfg &

e poi ascoltare finalmente la radio con il player preferito.


Nota: Ho trovato un player in flash da inserire nella propria pagina web (ce ne sono tanti disponibili online) gratuito e semplice da configurare. Ve lo segnalo :flash-mp3-player

Webradio con icecast su Debian

La creazione di una webradio con Gnu/Linux è abbastanza semplice; se utilizzate Debian è ancora più facile, dato che molti pacchetti sono precompilati e quindi installabili tramite il comodo apt-get.
I pacchetti che servono sono: icecast2, ices2.

Breve nota sui moduli audio:

In alcuni casi la scheda audio non viene correttamente riconosciuta da Debian. Spesso si può risolvere caricando i necessari moduli:

modprobe snd-pcm-oss
modprobe snd-mixer-oss
modprobe snd-seq-oss

ed aggiungerli in /etc/modules

echo snd_pcm_oss >> /etc/modules
echo snd-mixer-oss >> /etc/modules
echo snd-seq-oss >> /etc/modules

In alcuni casi sarà anche necessario installare il pacchetto:

apt-get install esound

Iniziamo con l’installazione

Per installare icecast, da shell digitiamo:

apt-get install icecast2

Installato icecast, passiamo alla relativa configurazione modificando il file /etc/icecast2/icecast.xml . In particolare va modificata la sezione dove sono presenti i dati di autenticazione:

<authentication>
    <!-- Sources log in with username 'source' -->
    <source-password>SourcePassword</source-password>
    <!-- Relays log in username 'relay' -->
    <relay-password>RelayPassword</relay-password>
    <!-- Admin logs in with the username given below -->
    <admin-user>admin</admin-user>
    <admin-password>AdminPassword</admin-password>
</authentication>

A questo punto abilitiamo icecast, modificando il file /etc/default/icecast2 ed in particolare  la riga:

ENABLE=true

Fatto questo, l’avvio di icecast va fatta con il classico:

/etc/init.d/icecast2 start

Bene, ora passiamo all’installazione di ices, che si occuperà di inviare l’audio al server di streaming icecast, che a sua volta lo invierà ai client che ne faranno richiesta. L’installazione di ices viene fatto con il classico:

apt-get install ices2

ices consente di inviare sia musica da una playlist che musica “live” da un ingresso audio.

Vediamo come configurare ices per l’uso di una playlist.

Possiamo prendere come esempio per la nostra playlist il file /usr/share/doc/ices2/examples/ices-playlist.xml. Facciamo una copia di tale file ed iniziamo a modificarlo:

mkdir /etc/ices
cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices/ices-config.xml

Del nuovo file /etc/ices/ices-config.xml, modifichiamo la sezione relativa al salvataggio del log:

<background>1</background>
<logpath>/var/log/</logpath>
<logfile>ices.log</logfile>

poi la sezione relativa al nome della radio:

<stream>
    <metadata>
        <name>Nome dello stream</name>
        <genre>Genere dello stream</genre>
        <<description>Una breve descrizione dello stream</description>
    </metadata>

modifichiamo poi la configurazione relativa alla playlist ed alla modalità di riproduzione

 <input>
    <module>playlist</module>
    <param name="type">basic</param>
    <param name="file">/etc/ices/play.lst</param>
    <param name="random">0</param>
    <!-- if the playlist get updated that start at the beginning -->
    <param name="restart-after-reread">0</param>
    <!-- if set to 1 , plays once through, then exits. -->
    <param name="once">0</param>
</input>

modifichiamo infine la parte di “connessione” verso il server icecast:

<instance>
    <hostname><strong>localhost</strong></hostname>
    <port><strong>8000</strong></port>
    <password><strong>SourcePassword</strong></password>
    <mount><strong>/playlist.ogg</strong></mount>
</instance>

dove andrà chiaramente inserito l’IP del server icecast e la password per la pubblicazione del nuovo stream.

Ora passiamo ai file che vogliamo riprodurre; vanno convertiti in formato ogg (ci sono tanti software per farlo, da ffmpeg a soundconverter) e messi in una cartella:

mkdir -p /tmp/ices/musics
mv ./*.ogg /tmp/ices/musics
ls /tmp/ices/musics/*.ogg > /etc/ices/play.lst

Infine dovviamo istruire ices per lavorare la playlist, con:

ices2 /etc/ices/ices-config.xml

e finalmente potremo collegarci al nostro server di streaming per ascoltare la musica; l’indirizzo sarà:

http://localhost:8000/playlist.ogg

per visionare le statistiche di icecast, basterà invece richiamare:

http://localhost:8000/admin/stats.xsl

Per inviare invece audio direttamente dalla scheda audio:

Possiamo prendere come esempio per la nostra playlist il file /usr/share/doc/ices2/examples/ices-playlist.xml. Facciamo una copia di tale file ed iniziamo a modificarlo:

mkdir /etc/ices
cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices/ices-config.xml

In questo caso nel file di configurazione di ices /etc/ices/ices-playlist.xml, va inserito:

<input>
    <module>oss</module>
    <param name='device'>/dev/dsp</param>
    <param name='rate'>44100</param>
    <param name='channels'>2</param>
</input>

dove /dev/dsp è chiaramente il device della scheda audio.
Va poi modificato il path dei log ed in particolare, nel file /etc/ices/ices-playlist.xml, la direttiva :

<logpath>/var/log/ices</logpath>

diventa

<logpath>/var/log/</logpath>

Modifichiamo infine la parte di “connessione” verso il server icecast:

<instance>
    <hostname><strong>localhost</strong></hostname>
    <port><strong>8000</strong></port>
    <password><strong>SourcePassword</strong></password>
    <mount><strong>/playlist.ogg</strong></mount>
</instance>

dove andrà chiaramente inserito l’IP del server icecast e la password per la pubblicazione del nuovo stream.

Infine dovviamo istruire ices per iniziare l’encode, con:

ices2 /etc/ices/ices-config.xml

(da inserire poi in un file di init per l’avvio automatico al boot) e finalmente potremo collegarci al nostro server di streaming per ascoltare la musica; l’indirizzo sarà:

http://localhost:8000/live

per visionare le statistiche di icecast, basterà invece richiamare:

http://localhost:8000/admin/stats.xsl

Per la scelta del canale di input (es mic o line in) e per la gestione del volume, è possibile utilizzare il semplice aumix:

apt-get install aumix

da eseguire con:

aumix

Per la scelta del canale, basta posizionarsi sopra lo stesso con i tasti cursore e poi premere la barra spazio (appare una R all’inizio della riga del canale) e poi salvare tutto con il tasto S

Dettagli streaming banda/qualità

QualitySamplerateChannelsBitrate
Low-Quality Talk Radio011127120Kbps
Medium-Quality Talk Radio211127130Kbps
Low-Quality Music044100256Kbps
Medium-Quality Music244100284Kbps
High-Quality Music4.5441002132Kbps

Page optimized by WP Minify WordPress Plugin