Cómo montar tu propia estación de radio por Internet

Este "Cómo", explica cómo se puede montar una estación de radio por Internet, usando dos programas OpenSource, IceCast2 e Ices2, es conveniente tener presente que para poner este proyecto en práctica se necesita un abundante ancho de banda si pensamos atender a varios usuarios simultáneamente. Adicionalmente el tema legal sobre los derechos de las canciones no será tocado en este blog, para ello consulte con un abogado especializado en el tema.

Una limitación tanto de IceCast2, como de Ices2, es que sólo hacen streaming de archivos en formato ogg, por razones de copyright, y si sólo se dispone de archivos mp3, se puede usar el programa mp32ogg.

Asumiremos además de que se usara Debian 4.0 o Ubuntu, para nuestro server que hará streaming de audio. Para la instalación y configuración debemos de tener privilegios de root, para ello en Debian, debemos estar logueados cómo root, para Ubuntu debemos de anteponer el comando "sudo" a cada uno de los comandos que se muestran en este "Cómo".

Primero instalamos IceCast2:

apt-get install icecast2

Ahora debe editar el archivo /etc/icecast2/icecast.xml y cambiar los valores por defecto de:

  • source-password, este será el password que usara ices2 para conectarse al server.
  • relay-password, este password se usaría si desea conectar dos servers en cascada.
  • admin-user, cómo su nombre lo indica el usuario que será el administrador de IceCast2.
  • admin-password, el password del usuario con privilegios de administración de IceCast2.

Después de haber cambiado los valores por defecto por otros que le convengan, debe editar el archivo: /etc/default/icecast2 y cambiar el valor de la variable "ENABLE" a "true", cómo se muestra a continuación:

# Edit /etc/icecast2/icecast.xml and change at least the passwords.
# Change this to true when done to enable the init.d script
ENABLE=true

Eso es todo. Ahora podemos proceder a iniciar el servidor icecast2:

/etc/init.d/icecast2 start

Ahora Ud. puede acceder a la interface web de IceCast2, simplemente apuntando al IP del server con su navegador a través del puesto 8000, por ejemplo si el IP del server es 192.168.1.100, para poder acceder a la interface web de IceCast2 debemos apuntar nuestro navegador a http://192.168.1.100:8000, aquí lo que deben de obtener:

IceCast2_imagen_1

Ahora que ya tenemos el server que hará el streaming del audio, necesitamos instalar Ices2, que nos permitirá introducir el audio en el server desde en un playlist. Caso contrario deberíamos de introducir audio a través de la tarjeta de sonido, pero no es lo que haremos en este tutorial.

Instalar Ices2, es tan fácil como tipear este comando:

apt-get install ices2

Luego de que hayamos instalado Ices2, debemos crear los directorios donde pondremos los logs, los archivos de configuración y los archivos de música que transmitiremos.

mkdir /var/log/ices
mkdir /etc/ices2
mkdir /etc/ices2/music

El directorio /var/log/ices es para guardar los logs de Ices2, el directorio /etc/ices2 contendrá los archivos de configuración, y el archivo /etc/ices2/music contendrá los archivos de música en formato ogg que transmitiremos.

Ahora tenemos que crear el archivo /etc/ices2/ices-playlist.xml, para ello podemos usar un editor de texto como pico o vi, por ejemplo podemos hacerlo de esta forma:

pico /etc/ices2/ices-playlist.xml

Y dentro copiaremos esta configuración:

<?xml version="1.0"?>
<ices>
<!– run in background –>
<background>1</background>
<!– where logs, etc go. –>
<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<!– 1=error,2=warn,3=info,4=debug –>
<loglevel>4</loglevel>
<!– set this to 1 to log to the console instead of to the file above –>
<consolelog>0</consolelog>

<!– optional filename to write process id to –>
<!– <pidfile>/home/ices/ices.pid</pidfile> –>

<stream>
<!– metadata used for stream listing (not currently used) –>
<metadata>
<name>Example stream name</name>
<genre>Example genre</genre>
<description>A short description of your stream</description>
</metadata>

<!– input module

The module used here is the playlist module – it has
‘submodules’ for different types of playlist. There are
two currently implemented, ‘basic’, which is a simple
file-based playlist, and ‘script’ which invokes a command
to returns a filename to start playing. –>

<input>
<module>playlist</module>
<param name="type">basic</param>
<param name="file">/etc/ices2/playlist.txt</param>
<!– random play –>
<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>

<!– Stream instance
You may have one or more instances here. This allows you to
send the same input data to one or more servers (or to different
mountpoints on the same server). Each of them can have different
parameters. This is primarily useful for a) relaying to multiple
independent servers, and b) encoding/reencoding to multiple
bitrates.
If one instance fails (for example, the associated server goes
down, etc), the others will continue to function correctly.
This example defines two instances as two mountpoints on the
same server. –>
<instance>
<!– Server details:
You define hostname and port for the server here, along with
the source password and mountpoint. –>
<hostname>localhost</hostname>
<port>8000</port>
<password>source-password</password>
<mount>/example1.ogg</mount>

<!– Reconnect parameters:
When something goes wrong (e.g. the server crashes, or the
network drops) and ices disconnects from the server, these
control how often it tries to reconnect, and how many times
it tries to reconnect. Delay is in seconds.
If you set reconnectattempts to -1, it will continue
indefinately. Suggest setting reconnectdelay to a large value
if you do this.
–>
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>5</reconnectattempts>

<!– maxqueuelength:
This describes how long the internal data queues may be. This
basically lets you control how much data gets buffered before
ices decides it can’t send to the server fast enough, and
either shuts down or flushes the queue (dropping the data)
and continues.
For advanced users only.
–>
<maxqueuelength>80</maxqueuelength>

<!– Live encoding/reencoding:
Currrently, the parameters given here for encoding MUST
match the input data for channels and sample rate. That
restriction will be relaxed in the future.
–>
<encode>
<nominal-bitrate>64000</nominal-bitrate> <!– bps. e.g. 64000 for 64 kbps –>
<samplerate>44100</samplerate>
<channels>2</channels>
</encode>
</instance>

</stream>

</ices>

Lo único que debe de cambiar es lo que va entre los tags <password> … </password>, para ello lo hemos puesto en rojo para que se de cuenta, ese password es el que estableció para <source-password> en el archivo /etc/icecast2/icecast.xml

Luego de concluido lo anterior copie las canciones que desea hacer streaming en formato ogg en el directorio /etc/ices2/music

Finalmente para completar la configuración de Ices2, debemos de editar el archivo del playlist, donde pondremos en una línea cada canción que deseamos reproducir, recuerde que la ubicación del playlist es: /etc/ices2/playlist.txt

[…]
/etc/ices2/music/cancion_x.ogg
/etc/ices2/music/cancion_y.ogg
[…]

Con el paso anterior ya hemos finalizado la configuración de Ices2 y podemos iniciarlo, con este comando:

/usr/bin/ices2 /etc/ices2/playlist.txt

Para oír la música, pues simplemente volvemos con nuestro navegador a la página de IceCast2, http://192.168.1.100:8000 y podremos escuchar el streaming de audio simplemente haciendo click en el link "Click to Listen", aquí un screenshot de que deberíamos obtener:

IceCast2_4

Opcionalmente se puede conseguir el streaming de audio visitando directamente el URL

http://192.168.0.100:8000/example1.ogg.m3u

WinAmp debería de poder reproducir el sonido sin problemas, si sólo tiene Windows Media Player, este no incluye el codec del formato ogg, en el blog TechRecipies.com se explica cómo instalarlo en Windows Media Player. Aunque en lo personal les recomendaría a los usan Windows usar WinAmp en lugar del Windows Media Player. Para los que usan Linux, ogg esta soportado por defecto, sólo click y debería de comenzar a reproducir el audio.

Espero que este "Cómo", les haya sido de utilidad, espero sus comentarios.

Linux tiene mejor compatibilidad hacia atrás con aplicaciones windows que Vista.

Una de las razones de que Windows haya logrado su posición dominante en el mercado ha sido la política de backward compatibility (o compatibilidad hacia atrás), donde en teoría se podía ejecutar viejas aplicaciones de DOS sobre Windows, y cada nueva versión de Windows ha tratado de mantener compatibilidad a nivel de ejecutables con las anteriores versiones. Este atributo es especialmente valioso para aquellos que usan su PC para jugar.

Pero yo ya había notado que tanto los emuladores de Windows/DOS, como las soluciones tipo capa de compatibilidad cómo Wine, no lo hacían tan mal. Pero al parecer incluso ya han superado a sus contrapartes Windows Vista. En un artículo en el blog "Wating time with Mike and Dari", hay un extenso artículo donde se detalla los problemas de compatibilidad encontrados para ejecutas juegos antiguos en Windows Vista, incluso un juego en particular llamado "Blackthorne", puede ser ejecutado normalmente desde el emulador DOSBox, pero puede hacer colapsar a un sistema Windows Vista.

El blog es claro y dice que el campeón de los juegos sigue siendo Windows XP, pero Linux es de hecho una mucho mejor alternativa que Windows Vista. Recordemos que la intensión de Microsoft es forzar a todos los usuarios a migrar a Vista en los próximos dos años, así que para los fanáticos de los juegos Linux sería una mucho mejor alternativa.

Programa open source de conversión de formatos audio/video para Windows

Mi amigo Rafael, siempre me acusa de que este blog esta muy sesgado a lo que es Linux, sólo para demostrarle que OpenSource no significa Linux, les comentaré sobre MediaCoder, un programa OpenSource que permite convertir entre diferentes formatos (codecs) audio/video, por ejemplo puede convertir entre mp3/ogg, o entre avi/mpg, si acaso el no más necesario flv/avi, tan necesario cuando descargamos un video de Youtube en dicho formato (flv) y deseamos enviarlo a alguien que no tiene un flvplayer, o si deseamos quemar un VCD (VideoCD) o un DVD con los videos descargados de Youtube. Las posibilidades son infinitas.

Además de la clásica conversión entre formatos, tambien podemos cambiar el tamaño del frame. Pero tal vez lo mejor de todo es que este programa es gratuito y tenemos acceso a su código fuente, con lo que podemos mirar de cerca cómo es que funcionan los algoritmos de compresión/codificación de video o audio.

MediaCoder

Ahora para todos aquellos que usan Linux cómo yo, les recomiendo ffmpeg, un utilitario que hace lo mismo que MediCoder. Una ventaja de ffmpeg es que viene con ffserver un programa que permite hacer streaming de audio/video en vivo o desde archivos, con lo que es posible hacer nuesta propia estación de radio o TV en Internet. Sobre cómo hacer dicha configuración tratará un futuro post, no se lo pierdan.

Jonathan Schwartz comenta detalles sobre la adquisición de MySQL

El CEO de Sun Microsystem, Jonathan Schwartz, comenta en su blog, sobre el cómo fue la adquisición de MySQL AB, las razones que motivaron ha Sun a invertir $1,000 millones en una empresa que regala sus productos, y cómo esta adquisición no afectará su relación con otras bases de datos, cómo PostgreSQL y Oracle.

Schwartz, es muy claro y anuncia que no habra cambios en la licencia de MySQL, que la popular pila de aplicativos LAMP seguirá siento (Linux Apache MySQL y PHP), no hay intenciones de amarrar MySQL a Solaris u OpenSolaris, aunque hay la intención de explotar las sinergias de los productos de Sun con MySQL, específicamente comenta sobre el hecho de poder usar MySQL sobre el sistema de archivos ZFS, y una mejor integración con glassfish.

Les recomiendo que le den una lectura al blog de Schwartz, porque pone calma a los temores que aparecieron últimamente sobre la posibilidad de que la compra de MySQL por parte de Sun, pudiera llevar a un cambio en las políticas de licencia de dicha base de datos.

Nokia compra Trolltech

Al parecer está de moda de compra de compañías que producen tecnología OpenSource, primero fue Sun Microsystem comprando MySQL, ahora es Nokia comprando TrollTech la empresa que esta detrás de las librerías Qt, que son el corazón del entorno gráfico KDE.

La noticia apareció hoy lunes 28 de enero, en un comunicado en el website de TrollTech. La adquisición de TrollTech permitirá a Nokia acelerar su  estrategia de desarrollo de software de plataforma cruzada PC/Celulares, y el desarrollo de aplicaciones de negocio sobre la plataforma Internet. Al parecer tener un proyecto OpenSource es una buena forma de hacer dinero, ya que Nokia ha aceptado pagar 150 millones de dólares por TrollTech.

Yo me pregunto ¿cuándo los medios de comunicación tradicionales comenzaran a comprar blogs?, dado la tendencia actual de que negocios establecidos adquieran proyectos exitosos llevados a cabo por pequeñas organizaciones e incluso individuos aislados.