¡Esta es una revisión vieja del documento!
Lo que nosotros llamamos radio por wifi es en realidad un servicio de streaming de audio, este es un pequeño tutorial basado en experiencias al montar nodos.
Primero vamos a usar el servidor icecast2 que se encarga retransmitir streams multimedia (en este caso Ogg) a los clientes o usuarios que se conecten al servicio.
Sin embargo, icecast2 no es el programa que reproduce el audio, sólo se encarga de redistribuirlo. El programa que reproduce el audio, icecast lo llama cliente y ese programa cliente es ices que se encarga de generar los streams de audio a partir de archivos de música.
También existe ezstream (agregar uso de ezstream)
Instalando y configurando icecast2
Siguiendo la guía http://www.icecast.org/docs/icecast-trunk/basic_setup/ podemos resumir en:
1. Instalar icecast2, que en una distribución basada en debian bastará con: sudo apt install icecast2
.
2. En el archivo /etc/icecast2/icecast.xml
existen varias secciones pero para una configuración básica bastará con modificar:
<hostname>localhost</hostname> <source-password>password-para-programas-clientes</source-password> <admin-passwrod>Password-para-el-administrador-web-de-icecast2</admin-password> <listen-socket> <port>8299</port> </listen-socket>
En versiones nuevas de icecast2 además de editar el archivo
icecast2.xml
, se debe editar el archivo /etc/default/icecast2
y cambiar la línea ENABLE=true.
Con esas opciones modificadas se ha terminado con icecast2.
Instalando y configurando ices
Ahora queda instalar y preparar el programa ices, la ventaja de mantener ices y icecast2 separados es que icecast2 puede distribuir a los clientes varios streams ejecutándose en esta u otra computadora.
Para mantener las cosas ordenadas podemos primero seleccionar los archivos .ogg de música de audio que se escucharán en nuestra radio por wifi, para este ejemplo usaremos la carpeta /home/alguien/musica/
1. Instalar ices en una distribución basada en debian basta con sudo apt install ices2
2. Debemos crear un archivo de configuración, podemos copiar un ejemplo con: cp /usr/share/doc/ices2/examples/ices-playlist.xml /home/alguien/musica
3. Modificamos el archivo /home/alguien/alguien/musica/ices-playlist.xml
modificando:
<!-- el archivo playlist.txt deberia contener la lista de archivos a reproducir --> <param name="file">playlist.txt</param> <!-- Esto hara que las canciones toquen en orden aleatorio, 0 para desactivarlo --> <param name="random">1</param> <!-- reiniciar la reproduccion cuando se termine los archivos en la lista --> <param name="restart-after-reread">1</param> <Server> <!-- Host donde esta el servidor icecast2 --> <Hostname>localhost</Hostname> <!-- Este es el mismo puerto que se ha configurado para icecast2 --> <Port>8299 </Port> <!-- El password especificado para acceder a icecast2 --> <Password>password-para-programas-clientes</Password> </Server> <!-- Punto de montaje o la direccion desde la cual se podra acceder al stream --> <Mountpoint>/super_radio</Mountpoint>
4. Ahora debemos crear el archivo playlist.txt
que debería contener la lista de archivos .ogg a reproducir, se puede crear con:
find /home/alguien/musica/ | grep ".ogg" > playlist.txt
5. Probar la conexión entre icecast2 y ices2:
sudo service icecast2 restart sudo ices2 /home/alguien/musica/ices-playlist.xml
Con esto, si ingresamos desde un navegador web a http://localhost:8299/super_radio
deberíamos poder escuchar una canción. Pero es probable que el servicio se detenga y para evitarlo tendremos que seguir el siguiente paso.
Si queremos integrar el servicio de radio por wifi en una página web, bastaría poner un enlace hacia el host:puerto/punto_de_montaje. Por ejemplo si nuestro nodo se llamaría “tantawawa” sería http://radio.tantawawa.lor:8299/super_radio
Automatizando el inicio
Usando systemd
Creando por ejemplo: /etc/systemd/system/ices2.service
[Unit] Description=ices2 deamon # la siguiente linea asegura que primero se inicie icecast2 After=icecast2.service [Service] User=www-data Group=www-data WorkingDirectory=/usr/bin/ices2 ExecStart=ices2 /home/alguien/musica/ices-playlist.xml [Install] WantedBy=multi-user.target
Luego probarlo con:
sudo systemctl daemon-reload sudo systemctl start ices2.service # si funciona se habilita el servicio para que se ejecute al inicio del sistema con sudo systemctl enable ices2.service
Usando script de inicio
Primero seguramente deberíamos modificar el archivo /home/alguien/musica/ices-playlist.xml
en la línea:
<Execution> <Background>1</Background> </Execution>
Luego el script por ejemplo en /etc/init.d/ices2.sh
cd /home/alguien/musica # comprobando que se haya iniciado el servicio icecast2 while ! ps -axu | grep icecast2 | grep -v "grep" do sleep 1 done ices2 ices-playlist.xml exit 0
Luego de probarlo, se debe agregar como script de inicio.