norfipc.com
Artículos   Mapa del sitio   Informatica

Como crear una estación de radio en mi computadora en Windows


Actualizado: 13 de febrero del 2024
Por: Norfi Carrodeguas
Crear una emisora de radio local con Icecast y Liquidsoap, para transmitir música y canciones en una red local con amigos o incluso online en internet.
Como crear una estación de radio en mi computadora en Windows
En este artículo, actualizado en saludo al Día Mundial de la Radio, comparto cómo crear una estación de radio en casa, en una computadora o laptop con Windows.
Las canciones se cargan automáticamente desde carpetas locales, se mezclan y se pueden agregar anuncios e intermedios, incluso crear listas para diferentes horarios.
En este caso el objetivo es transmitir música mediante Wi-fi, para escuchar familiares y amigos cercanos que se conectan a mi red local.
De forma similar se puede crear la estación online, para transmitir en internet, solo necesitando un servicio de alojamiento.


Crear una estación de radio en casa, requisitos


Cualquier aficionado puede crear una estación de radio en la computadora en un rato libre de su tiempo.
Es necesario lo siguiente:
- Una computadora de escritorio o Laptop con Windows 10 o Windows 11.
- Los siguientes programas gratis:
• Icecast. Programa que funciona como un servidor de transmisión de medios (audio/video).
• Liquidsoap. Programa que crea el stream de audio y que en este caso lo envía a Icecast para su distribución.
- Archivos de configuración y de inicio, los cuales se deben crear por el lector, copiando el código que comparto.
Detallo a continuación todos los pasos.


Instalar y configurar el servidor Icecast


Icecast es un servidor local que se ocupa de distribuir el stream de audio creado por Liquidsoap, a los diferentes dispositivos conectados a la red.
Descarga Icecast desde: https://icecast.org/download/. Para Windows hay disponible un archivo binario.
Recomiendo instalar el programa en otra unidad que no sea C.
Icecast funciona mediante la línea de comandos. Se inicia ejecutando el archivo "icecast.bat" incluido en el directorio de la aplicación.
La ventana negra de la consola no la cierres, solo minimízala.
Es opcional introducir en el navegador web la dirección: http://localhost:8000/ para ver el estado del servidor.
Después de comprobar que funciona, es necesario configurar el archivo de configuración llamado: "icecast.xml".
Para editarlo lo ideal es tener el software Notepad+, aunque también se puede hacer con el sencillo Bloc de notas.


Configurar el archivo icecast.xml

Edita el archivo "icecast.xml" y sustituye las siguientes líneas:
<listen-socket>   
   <port>8000</port>			
	<bind-address>127.0.0.1</bind-address> 
       <shoutcast-mount>/smp3</shoutcast-mount>
	<shoutcast-mount>/saac</shoutcast-mount>	
</listen-socket> 
<listen-socket>
    <port>8080</port>
</listen-socket>
Los valores anteriores son para establecer la dirección de enlace, los puertos de escucha y los mount point, que identifican cada stream generado.
Otros valores como location, admin, hostname y admin-password, es opcional modificarlos.
El resto no se deben tocar.


Instalar y configurar Liquidsoap


Descarga la versión para Windows de Liquidsoap desde: https://github.com/savonet/liquidsoap
La versión instalada en este ejemplo es la 1.4.4
No es un instalador. Mueve el archivo descargado a otra unidad que no sea la del sistema operativo y descomprímelo.
En mi caso situé los archivos de la aplicación en D:\APPS\liquidsoap
El archivo de configuración de Liquidsoap se llama "test.liq" y está situado en la carpeta de la aplicación.
Contiene algunos ejemplos. Cada línea que comience con la almohadilla esta comentada.


Crear un stream de audio con Liquidsoap


Da un clic derecho en el Escritorio y selecciona: Nuevo > Documento de texto.
Abrelo y copia y pega el siguiente código:
set("log.stdout",true) 

music = crossfade(playlist("D:/ruta a la musica")) 

output.ao(fallible=true,music)
Guarda los cambios y renombra el documento de texto a "radio.liq".
El archivo así creado de ejemplo, hace que Liquidsoap lea de forma aleatoria las canciones situadas en la carpeta indicada, las mezcla usando el efecto crossfade y el stream así creado lo reproduce en la tarjeta de audio de la computadora.
Para iniciar Liquidsoap arrastra el archivo con el cursor del ratón y suéltalo encima de liquidsoap.exe
Se inicia otra instancia de la consola de CMD, con información del funcionamiento de la aplicación.
Es solo una prueba.


Crear un stream de audio con Liquidsoap y enviarlo a Icecast


Sustituye el código anterior por este a continuación, un poco más complejo.
set("log.stdout",true)  

music = crossfade(playlist("D:/musica"))

output.icecast(%mp3.vbr, id="ice", fallible = true, host = "localhost", port = 8000, password = "hackme", mount = "smp3", name="Mi estacion de radio", description="Escuchar musica en mp3 random con crossfade", music)
En este caso el stream de audio se envia a Icecast, con los datos para comunicarse con el servidor, como son el host, el puerto, la contraseña, establecidos previamente en el archivo de configuración "icecast.xml".
Además, se incluyen en el stream del audio datos como el nombre de la emisora y una corta descripción.


Escuchar o reproducir la estación de radio


Para escuchar la estación de radio creada, necesitamos conectar un reproductor al servidor Icecast.
Podemos hacerlo de varias formas.
1- Desde una aplicación en la misma computadora, puede ser el navegador web, Winamp, Aimp o cualquier aplicación que permita la reproducción de audio.
Usa las direcciones: http://localhost:8000/smp3 o http://localhost:8080/smp3
2- Desde otra computadora o dispositivo conectado a la red local.
Usa: http://IP:8080/smp3
Donde IP es la dirección IP asignada a la computadora, por ejemplo: http://192.168.1.106:8080/smp3
¿Cómo saber la dirección IP de la computadora?
- El método más fácil. Abre el Administrador de taras (Control + Shift + Escape), en la pestaña Rendimiento, en la conexión de red activa, busca Dirección IPV4.
- En el Símbolo del sistema introduce IPCONFIG y presiona Enter.
- En la página de configuración del Router, en la sección LAN también aparece reflejada.


Crear dos stream de audio, uno en MP3 y otro en AAC


En la configuración anterior el stream de audio está en formato MP3, pero se puede cambiar por AAC, mas optimizado para la red o incluso trasmitir en los dos formatos simultáneamente, cada uno en un canal (mount).
Con el siguiente código creamos uno adicional en formato AAC, usando el mount "saac"
set("log.stdout",true)  

music = crossfade(playlist("D:/musica")) 

def outputs(music) = output.icecast = output.icecast(fallible = true, host = "localhost", port = 8000, password = "hackme")  

output.icecast(%mp3.vbr, id="ice", mount = "smp3", name="Norfi Station", description="Escuchar musica de #los 70 y 80 random con crossfade", music)

output.icecast(%fdkaac(bitrate=32), id="ice", mount="saac", name="Norfi Station2", description="Escuchar musica de #los 70 y 80 random con crossfade en AAC", music)
end
outputs(music)
Prueba el stream en formato AAC usando por ejemplo: http://localhost:8080/saac
Liquidsoap admite también el formato de audio OGG.
En Liquidsoap superior a 1.4.4 para mp3 encoder se debe emplear: %ffmpeg(format="mp3", %audio(codec="libmp3lame"))


Más opciones avanzadas para la estación de radio


Reproducir música de acuerdo a la hora

De acuerdo a la hora podemos definir que música se reproduce, organizándola en diferentes directorios.
Agrega las siguientes instrucciones al comienzo de tu archivo radio.liq y sustituye la ubicación de las carpetas con la música a reproducir.
   default = single("default/intro.mp3")
m06_09 = crossfade(playlist("D:/MUSICA/01LISTEN/POP6070"))
m09_10 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL08"))
m10_11 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL06"))
m11_12 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL07"))
m12_14 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL01"))
m14_15 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL02"))
m15_16 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL03"))
m16_18 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL04"))
m18_20 = crossfade(playlist("D:/MUSICA/01LISTEN/SEL05"))
m20_21 = crossfade(playlist("D:/MUSICA/01LISTEN/ROCK90"))
m21_22 = crossfade(playlist("D:/MUSICA/01LISTEN/ROCK7090"))
m22_23 = crossfade(playlist("D:/MUSICA/01LISTEN/ROCK3"))
m23_06 = crossfade(playlist("D:/MUSICA/01LISTEN/ROCK3"))

music = fallback([ request.queue(id="request"),
                    switch([({ 06h-09h }, m06_09),
				         	({ 09h-10h }, m09_10),
					        ({ 10h-11h }, m10_11),
					        ({ 11h-12h }, m11_12),
						    ({ 12h-14h }, m12_14),
						    ({ 14h-15h }, m14_15),
						    ({ 15h-16h }, m15_16),
						    ({ 16h-18h }, m16_18),
						    ({ 18h-20h }, m18_20),
						    ({ 20h-21h }, m20_21),
						    ({ 21h-22h }, m21_22),
							({ 21h-22h }, m22_23),
                            ({ 22h-06h }, m23_06)]),
                    default])
También se puede personalizar los intervalos horarios que están en formato de 24 horas.
El archivo "intro.mp3" situado en el directorio default se trata de un audio corto de presentación de la emisora.

Mostrar en la consola el título de la canción y nombre del artista

Agrega en el archivo radio.liq a continuación de las instrucciones anteriores las siguientes líneas, para extraer de los metadatos de los archivos el título y nombre del artista.
def apply_metadata(m) =
  title = m["title"]
  artist = m["artist"]
  print("Ahora reproduciendo: #{title} by #{artist}")
end
music = on_metadata(apply_metadata,music)

Script para saltar canciones

Liquidsoap no proporciona la opción de cambiar a la siguiente canción durante la reproducción. Para eso es necesario usar el comando telnet.
Al comienzo del archivo radio.liq agrega las siguientes líneas:
set("server.telnet.bind_addr", "127.0.0.1")
set("server.telnet.port", 1234)
set("server.telnet", true)
Crea un nuevo documento de texto, copia las siguientes instrucciones y guárdalo con el nombre: saltar.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "telnet.exe localhost 1234"
WshShell.AppActivate "Telnet"
WScript.Sleep 1500
WshShell.SendKeys "ice.skip"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1500
WshShell.SendKeys "quit"
WshShell.SendKeys("{Enter}")
WScript.Sleep 1000 
WshShell.SendKeys "{ENTER}" 
if err.number <> 0 then 
else
end if

Todas las opciones adicionales de Liquidsoap están documentadas en los archivos de ayuda del programa, disponible en: https://www.liquidsoap.info/

Crear archivo batch para iniciar la estación de radio

Para iniciar Icecast, Liquidsoap y Winamp que me sirve como monitor de la música que se reproduce, uso un sencillo archivo batch.
Se puede crear usando el siguiente código.
@echo off
pushd "D:\APPS\Icecast"
start  /min icecast.bat 

pushd "D:\APPS\liquidsoap"
start /min liquidsoap radio.liq 

timeout /nobreak 03
start winamp http://192.168.1.106:8080/smp3
Lo explico.
El comando START con el parámetro /min, inicia las dos ventanas de Icecast, Liquidsoap minimizadas, suponiendo que ambos estén en el directorio D:\APPS\
timeout /nobreak 03 retrasa por 3 segundos el inicio del reproductor, para dar tiempo a las aplicaciones anteriores.
Winamp carga el stream en MP3.
Todos los valores se deben sustituir por los necesarios.

La estación de radio en Windows 11


Después de escribir este artículo hice una instalación nueva de Windows 11, pero conservando los archivos de Icecast y liquidsoap en la unidad D.
No fue necesario ningún cambio, solo ejecutar el archivo batch para iniciar la estación de radio, que funciona correctamente.
Solo resta actualizar los dos programas cuando esté disponible alguna actualización relevante.

Páginas relacionadas



Comparta esta página
Facebook
Twitter

Sígueme en las redes sociales


Norfipc en Facebook Norfipc en Twitter Canales RSS con las últimas publicaciones

 
Inicio | Mapa del sitio | Buscar | Sobre mí