servicios:radio-por-wifi

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
servicios:radio-por-wifi [2017/07/23 20:54] – completando tutorial strysgservicios:radio-por-wifi [2018/10/28 11:30] (actual) – configuración ezstream strysg
Línea 1: Línea 1:
 Lo que nosotros llamamos radio por wifi es en realidad un servicio de [[https://es.wikipedia.org/wiki/Streaming|streaming de audio]], este es un pequeño tutorial basado en experiencias al montar nodos. Lo que nosotros llamamos radio por wifi es en realidad un servicio de [[https://es.wikipedia.org/wiki/Streaming|streaming de audio]], este es un pequeño tutorial basado en experiencias al montar nodos.
  
-Primero vamos a usar el servidor [[http://icecast.org/|icecast2]] que se encarga retransmitir //streams// multimedia (en este caso Ogg, opus o mp3) a los clientes o usuarios que se conecten al servicio.+Primero vamos a usar el servidor [[http://icecast.org/|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 audioicecast lo llama cliente y ese programa cliente es [[http://icecast.org/ices/|ices]] que se encarga de generar los //streams// de audio a partir de archivos de música.+Sin embargo, icecast2 **no** es el programa que reproduce el audio, sólo se encarga de redistribuirlo. Existen programas que reproducen las pistas de audio y en icecast se llaman programas cliente. Uno de estos programas es [[http://icecast.org/ezstream/|ezstream]] y el otro [[http://icecast.org/ices/|ices]]. Ambos se encargan de generar los //streams// de audio a partir de archivos de música.
  
-También existe [[http://icecast.org/ezstream/|ezstream]] FIXME (agregar uso de ezstream)+Se puede usar cualquiera de los dos aunque ezstream está más actualizado, veremos como configurar la radio por wifi con ambos.
  
-==== Instalando y configurando icecast2 ====+==== Instalando y configurando icecast2 =====
  
 Siguiendo la guía http://www.icecast.org/docs/icecast-trunk/basic_setup/ podemos resumir en: Siguiendo la guía http://www.icecast.org/docs/icecast-trunk/basic_setup/ podemos resumir en:
Línea 24: Línea 24:
  
 </code> </code>
 +
 +:!: 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**.
 +
 +Para confirmar los cambios se reinicia el servicio con ''sudo service icecast2 restart'', posteriormente para comprobar el funcionamiento se puede ingresar al panel de administración desde un navegador web para nuestro caso; ''http://localhost:8299/admin''
 +
 Con esas opciones modificadas se ha terminado con icecast2. Con esas opciones modificadas se ha terminado con icecast2.
  
-==== Instalando y configurando ices ====+==== Usando ezstream como cliente === 
 + 
 +La ventaja de mantener ezstream (o ices) y icecast2 separados es que icecast2 puede distribuir a los clientes varios streams ejecutándose en esta u otra computadora. 
 + 
 +Para instalar ezstream en sistemas debian bastaría con instalarlo desde el repositorio oficial: 
 +<code> 
 +sudo apt install ezstream 
 +</code> 
 + 
 +Luego es necesario crear un archivo de configuración para que ezstream genere los //streams// de audio y se los pase a icecast2. Una vez que se instala ezstream, el paquete incluye ejemplos de configuración en ''/usr/share/doc/ezstream/examples/''. En nuestro caso configuraremos para que se genere un flujo mp3 desde una lista de archivos y se reproduzcan de aleatoriamente. 
 + 
 +Creamos un archivo xml con las configuraciones, en este caso lo llamaremos ''stream_mp3_configs.xml'': 
 + 
 +<code xml> 
 +<ezstream> 
 +    <url>http://localhost:8299/mp3</url> 
 +    <sourcepassword>password-para-programas-clientes</sourcepassword> 
 +    <format>MP3</format> 
 +    <filename>/home/alguien/musica/playlist.mp3.txt</filename> 
 +    <!-- random order --> 
 +    <shuffle>1</shuffle> 
 +    <!-- Info adicional del stream (opcional) --> 
 +    <svrinfoname>Super Radio</svrinfoname> 
 +    <svrinfogenre>Varios géneros de música</svrinfogenre> 
 +    <!-- configuración del stream de audio --> 
 +    <svrinfobitrate>128</svrinfobitrate> 
 +    <svrinfochannels>2</svrinfochannels> 
 +    <svrinfosamplerate>44100</svrinfosamplerate> 
 +     
 +    <svrinfopublic>0</svrinfopublic> 
 +</ezstream> 
 +</code> 
 + 
 +En la configuración se hace referencia a un archivo ''playlist.mp3.txt'' que debería contener la lista de archivos de audio mp3 a reproducir, suponiendo que tenemos los archivos en una carpeta ''/home/alguien/musica/'' se puede generar la lista con: 
 +<code bash> 
 +find /home/alguien/musica/ -name *.ogg > /home/alguien/musica/playlist.mp3.txt 
 +</code> 
 + 
 +Una vez hecho, se puede probar ejecutando ezstream usando el archivo de configuración que creamos: 
 +<code bash> 
 +ezstream -c stream_mp3_configs.xml 
 +</code> 
 + 
 +Y comprobamos que se está transmitiendo el //stream// accediendo desde un navegador o programa de reproducción de música como vlc a ''http://localhost:8299/mp3''. Ezstream también puede generar streams para archivos ogg vorbis y otros formatos. ([[https://github.com/xiph/ezstream|más información]])
  
-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.+==== Usando ices como cliente ====
  
-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/''+Si se opta por ices en lugar de ezstream el procedimiento es el siguiente. 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 ices''+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'' 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''
Línea 73: Línea 121:
 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. 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.
  
-==== Automatizando el inicio ====+<WRAP center round info 70%> 
 +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'' 
 +</WRAP>
  
-=== Usando systemd ===+ 
 +===== Automatizando el inicio ===== 
 + 
 +Esto para hacer que se ejecute automáticamente la reproducción de //streams// de audio ya sea con ices2 o ezstream. 
 + 
 +=== Usando systemd (para ices2) ===
  
 Creando por ejemplo: /etc/systemd/system/ices2.service Creando por ejemplo: /etc/systemd/system/ices2.service
Línea 89: Línea 144:
 Group=www-data Group=www-data
 WorkingDirectory=/usr/bin/ices2 WorkingDirectory=/usr/bin/ices2
-ExecStart=ices2 /home/alguien/musica/ices-playlist.xml+ExecStart=ices2 "/home/alguien/musica/ices-playlist.xml"
  
 [Install] [Install]
Línea 101: Línea 156:
 # si funciona se habilita el servicio para que se ejecute al inicio del sistema con # si funciona se habilita el servicio para que se ejecute al inicio del sistema con
 sudo systemctl enable ices2.service sudo systemctl enable ices2.service
 +</code>
 +
 +=== Usando systemd (para ezstream) ===
 +
 +Creando por ejemplo: /etc/systemd/system/ezstream.service
 +
 +<code>
 +[Unit]
 +Description=ezstream deamon
 +# la siguiente linea asegura que primero se inicie icecast2
 +After=icecast2.service
 +
 +[Service]
 +User=pi
 +Group=pi
 +WorkingDirectory=/home/alguien/musica
 +ExecStart=ezstream -c "/home/alguien/musica/ezstream_mp3.xml"
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +Luego probarlo con:
 +<code bash>
 +sudo systemctl daemon-reload
 +sudo systemctl start ezstream.service
 +# si funciona se habilita el servicio para que se ejecute al inicio del sistema con
 +sudo systemctl enable ezstream.service
 </code> </code>
  
Línea 128: Línea 211:
 Luego de probarlo, se debe agregar como script de inicio. Luego de probarlo, se debe agregar como script de inicio.
  
-=== Más referencias ===+==== Más referencias ====
  
-* http://www.icecast.org/docs/icecast-trunk/basic_setup/ +  * http://www.icecast.org/docs/icecast-trunk/basic_setup/ 
-* https://lavidaestux.wordpress.com/2012/02/13/transmitir-radio-en-vivo-con-icecast2-desde-linux-ubuntu/+  * https://lavidaestux.wordpress.com/2012/02/13/transmitir-radio-en-vivo-con-icecast2-desde-linux-ubuntu/
  • servicios/radio-por-wifi.1500857676.txt.gz
  • Última modificación: 2017/07/23 20:54
  • por strysg