Todos tenemos unas canciones favoritas. Seguramente tus gustos musicales no sean los mismos que los míos, pero eso no quiere decir que no compartas gustos musicales con otra gente. Y si quieres que mucha gente disfrute con la música que te gusta o con la tuya propia, y tienes una Raspberry Pi, vas a poder crear una emisora de radio en YouTube u otros servicios de streaming en un par de minutos.
La idea de este proyecto es bien sencilla. Con dos scripts de la terminal iniciamos por un lado un reproductor de música, y por otro enviamos esa música con un vídeo en bucle a YouTube o donde queramos, como en el caso de LoFi hip hop beats, pero con nuestra música y nuestra Raspberry Pi.
Antes de empezar con todo esto, tenemos que tener en cuenta unas cuantas cosas, como asegurarnos de que podemos emitir en el servidor que hemos elegido para esto, y que no haya problemas con la música que vamos a emitir. Ya sabemos que cualquier cosa que tenga copyright puede darnos problemas con nuestros canales, por lo que tenemos que andar con cuidado a la hora de hacer esto, ya que podríamos perder nuestro canal de la plataforma en la que enviamos el contenido.
El proyecto ahora mismo está en una etapa muy básica, pero lo he subido a GitHub para que si alguien encuentra algún problema o quiere colaborar lo haga, mejorándolo hasta conseguir algo realmente interesante. Pero vamos a lo que nos interesa, que es montar nuestra propia emisora de radio online.
Montando nuestra propia emisora de radio online en Youtube con una Raspberry Pi
Si ya estamos dispuestos y tenemos seleccionadas nuestras canciones favoritas, ahora solo nos queda preparar nuestra Raspberry Pi para que funcionen los scripts de la terminal y empezar a emitir.
Lo primero es actualizar Raspbian y la Raspberry Pi e instalar los paquetes necesarios, lo cual haremos con el siguientes comandos de la terminal.
sudo apt update && sudo apt install git ffmpeg mplayer vlc python3-pip libimage-exiftool-perl jq nkf pavucontrol -y
Con este comando actualizaremos el listado de paquetes de repositorios de Raspbian y pondremos todos los programas que nos hacen falta para crear nuestra emisora de streaming en YouTube. Usaremos FFmpeg para codificar y enviar el vídeo a YouTube, Mplayer para reproducir la música, Exiftool para obtener información de los mp3, Python para un par de utilidades más y PulseAudio para sacar el audio de la tarjeta de sonido y mandarlo con el vídeo.
Ahora tenemos que descargarnos los Scripts. Que lo haremos con el siguiente comando en la terminal.
git clone https://github.com/alpargataman/RPi2RTPMserver.git
Aquí encontraremos un vídeo en bucle y 3 canciones para poder empezar a probar con nuestra radio prácticamente después de descargarla. Aun así, vamos a completar esto con un par de programas más.
Primero instalaremos una aplicación en Python para buscar las caratulas de las canciones en caso de no llevarlas el propio mp3 llamada sacad. Que lo haremos con el siguiente comando en la terminal, una vez hayamos instalado todas las cosas necesarias.
sudo pip3 install sacad
Y, para terminar la faena, podemos instalar un script para poder tuitear lo que estamos reproduciendo en nuestra cuenta de Twitter de forma automática llamado tweet.sh. Esto lo haremos con el siguiente comando de la terminal.
git clone https://github.com/piroor/tweet.sh
Una vez hemos clonado el repositorio, copiaremos los archivos tweet.sh y tweet.client.key a la carpeta donde hemos instalado los scripts del proyecto. Después, tendremos que conseguir credenciales para que tweet.sh pueda conectarse a Twitter y enviar los tuits automáticamente. Las credenciales las podemos conseguir en https://developer.twitter.com/.
Hemos instalado los controladores de PulseAudio ya que los de ALSA dan problemas a la hora de coger el sonido de la tarjeta de sonido, pero los tenemos que configurar para obtener un mejor rendimiento, como vimos en este tutorial para grabar el escritorio de tu Raspberry Pi.
Lo primero que aremos será abrir el archivo de configuración de PulseAudio para poder editarlo. Esto lo haremos poniendo este comando en la terminal.
sudo nano /etc/pulse/default.pa
Una vez lo tenemos abierto, hay que encontrar las siguientes líneas y añadir tsched=0 al final. Buscaremos esto.
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
Y lo dejaremos así.
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect tsched=0
Ahora reiniciamos la Raspberry Pi y ya estará funcionando con PulseAudio en vez de con ALSA.
Y ahora que ya lo tenemos todo, solo nos entrar en el panel de YouTube, indicarle que vamos a iniciar un streaming, conseguir la clave y ponerla en el archivo stream.sh. Podemos editarlo con el siguiente comando, cuando estemos en la carpeta del proyecto en la terminal, que si no la hemos cambiado será RPi2RTPMserver.
nano stream.sh
Ahora introduciremos en la línea que pone KEY la clave que nos da YouTube para poder conectarnos a su servidor para emitir. Después guardamos con Ctrl + S y salimos de nano con Ctrl + X.
Para terminar, nos queda abrir el reproductor de música y el programa para enviar el vídeo al servidor de YouTube y darle al botón de Empezar transmisión en la web de YouTube una vez que veamos que todo funciona correctamente para tener nuestra radio funcionando.
Abriremos el reproductor de música en una terminal con este comando.
./play_audio.sh
Y el emisor en otra terminal con este otro comando.
./stream.sh
Si todo va bien, llagará un momento en el que veremos una pantalla como esta.
Configuración y funcionamiento de los scripts
La librería FFmpeg se encarga de capturar todo el sonido que sale por la tarjeta de sonido de la Raspberry Pi y enviarlo al servidor que le indiquemos, por lo que hay varias cosas que tenemos que saber antes de dejar nuestra emisora funcionando las 24 horas del día.
Dependiendo de la calidad con la que queramos emitir, nuestra Raspberry Pi será capaz de emitir sin problemas o no. Hay que fijarnos en los FPS que nos dice la terminal de stream.sh para ver si son los mismos que hemos configurado en el archivo. Si son menos, tendremos que reducir la calidad o los frames por segundo para asegurarnos una emisión correcta del audio. También podemos aumentar la cantidad de hilos que se usan para codificar el vídeo hasta 4, pero esto hará que nuestra Raspberry Pi se caliente mucho, debido al excesivo trabajo que es codificar vídeos para enviarlos a YouTube.
Al coger el audio de la tarjeta de sonido directamente, si suena algo más además de la música que estamos emitiendo, esto se colará en la emisión y lo escucharán nuestros oyentes.
Si queremos añadir más canciones, podemos hacerlo copiándolas en la carpeta mp3 en formato mp3. Cada vez que empieza una canción, el reproductor busca la siguiente en la carpeta para tenerla lista para reproducir lo antes posible la siguiente canción. Si añadimos una canción nueva a esa carpeta, no tendremos que cerrar el reproductor de música, ya que busca entre todas las canciones del directorio cada vez que va a reproducir una canción nueva.
El nombre de la canción y la caratula se lee del mp3. Si el mp3 no tiene caratula, se buscará una con sacad. En caso de no encontrar ninguna, se usará el archivo image.png como carátula.
Los datos de la canción se leen del mp3 y luego se guardan en el archivo livetext.txt, para luego mostrarlos en el vídeo. Este archivo se crea o actualiza con cada canción automáticamente.
Si queremos configurar más cosas, podemos editar el archivo stream.sh. En este archivo veremos algunas variables que podemos editar para cambiar la calidad del stream, la resolución del mismo, o el número de grupos. Todas las variables vienen con un comentario que explica para que sirve cada cosa.
Y para terminar, hay un archivo llamado marquee.txt donde podemos poner el texto que queramos, el cual aparecerá en la parte de arriba del vídeo de nuestra emisora de radio. Este texto cambiará cada vez que modifiquemos ese archivo de texto.
Y ahora que ya sabemos como funciona todo, solo nos queda poner en marcha nuestra emisora y disfrutar de nuestra música favorita.
[themoneytizer id=»32486-28″]