Page cover

🚧Icecast - música, vídeo, RSS en streaming

Icecastarrow-up-right es un servidor de streaming multimedia de código abierto desarrollado y mantenido por la Fundación Xiph.org, publicado bajo licencia GNU GPLv2 y disponible de forma totalmente gratuita. Fue creado en 1998 con el objetivo de ofrecer una alternativa libre a los servidores de radio por internet comerciales de la época.

¿Qué hace exactamente?

Icecast actúa como intermediario entre el emisor y los oyentes/espectadores: recibe un flujo de audio o vídeo de una fuente (llamada source) y lo redistribuye simultáneamente a todos los clientes conectados. La analogía más directa es una emisora de radio: hay una cabina de emisión (la fuente) y miles de radios que reciben la señal (los clientes), pero ningún cliente habla directamente con otro.​

Sus características principales son:​

  • Soporta múltiples formatos: MP3, OGG Vorbis, Opus, OGG Theora, WebM, AAC

  • Permite tener varios mountpoints simultáneos (varios canales en el mismo servidor)

  • Incluye un panel de administración web accesible desde el navegador (puerto 8000)

  • Puede autenticar usuarios tanto emisores como receptores

  • Es compatible con reproductores estándar como VLC, Winamp, navegadores web

La arquitectura de Icecast es la siguiente:

[Fuente/Emisor] ──push──▶ [Servidor Icecast2] ──stream──▶ [Cliente 1]
   (FFMPEG, Ices2)          puerto 8000                    [Cliente 2]
                                                           [Cliente N]

Por otro lado está FFmpeg que, como hemos visto, es una colección de herramientas y bibliotecas de código abierto que permite grabar, convertir (transcodificar) y hacer streaming de prácticamente cualquier formato de audio y vídeo que existe.

Implementación de servidor Multimedia con Icecast2 + FFMPEG

Escenario del laboratorio

Simularéis una plataforma de streaming corporativa de la empresa empresa.local. El esquema de máquinas es el siguiente, con una red NAT o interna:

Máquina
SO
Rol
IP ejemplo

servidor

Ubuntu Server 24.04

Icecast2 (audio + vídeo)

192.168.1.10

cliente1

Ubuntu Desktop 24.04

VLC + navegador (receptor)

192.168.1.20

cliente2

Ubuntu Desktop 24.04

FFMPEG (emisor/fuente)

192.168.1.21

circle-info

La idea pedagógica es que el servidor es solo el distribuidor (Icecast2), y los clientes pueden ser tanto emisores (con FFMPEG) como receptores (con VLC o navegador), cubriendo así el ciclo completo de RA7 y RA8.

PARTE 1 — Instalación y configuración de Icecast2

Vamos con el servidor ubuntu, donde instalaremos este servidor de streaming:

Paso 1: Instalar Icecast2

Durante la instalación aparece un asistente de configuración. Selecciona y rellena:

  • Hostname: servidor.empresa.local

  • Source password: source123 (la usará FFMPEG para publicar)

  • Relay password: relay123

  • Admin password: admin123

Si quieres saltarte el asistente y configurar manualmente después:

Paso 2: Configurar /etc/icecast2/icecast.xml

Este archivo es

Ajusta o verifica estas secciones clave:

Paso 3: Activar y arrancar Icecast2

Abre el firewall:

Verifica desde el navegador del cliente que el panel de control de Icecast es accesible:

Deberías ver la página de estado de Icecast2 con los mountpoints vacíos todavía.


PARTE 2 — Instalar FFMPEG en los clientes

En Ubuntu Desktop (cliente1 y cliente2):

Verifica la instalación:


PARTE 3 — Streaming de Audio 📻

🎵 Emitir un stream de audio con FFMPEG

Desde el cliente2 (el emisor), usamos un fichero de audio como fuente.

Puedes crear o descarga un fichero de prueba:

Y ahora emitir el stream hacia Icecast2:

Explicación:

  • -re = reproduce en tiempo real (como si fuera una radio)

  • -i input.mp3 = archivo de entrada

  • -c:a libmp3lame = codifica en MP3

  • -b:a 128k = bitrate del audio

  • -f mp3 = formato del stream

De la cadena de conexión, cambia:

  • source123 → tu contraseña de source en icecast.xml

  • IP→ IP local o pública de tu servidor

  • /radio.mp3 → el mount point definido

O bien pudieras enviar toda una carpeta en loop:

circle-info

Esto tomará una canción al azar en bucle infinito (puedes combinarlo con scripts para rotación aleatoria).

También, para emitir en formato OGG/Vorbis (libre y sin patentes):

Para revisar el stream ves a la seccción más abajo.

chevron-rightScript para crear una "radio casera"hashtag

Aquí tienes un script Bash listo para lanzar automáticamente un stream de audio a Icecast usando FFmpeg, ideal para una radio casera o personal:

A estas alturas deberias saber usar el script pero por si acaso:

  1. Guarda el script:

    (Pega el contenido y guarda con Ctrl+O, Enter, Ctrl+X)

  2. Hazlo ejecutable:

  3. Ejecuta el script:

  4. 🎧 Abre en tu móvil o navegador:

Algunos extras que puedes añadir:

  • Auto-stop tras X canciones o tiempo.

  • Logs de reproducción.

  • Añadir jingles entre canciones.

  • Transiciones suaves con ffmpeg (fundido cruzado).


🎙️Streaming de audio en vivo (micrófono)

Para el streaming en vivo (también tipo radio) pero que se puede usar para captar audios en directo puedes realizarlo con ALSA o bien a través de Pulse Audio.

Si es con ALSA, primero, encuentra tu dispositivo con:

Ejemplo para usar el dispositivo por defecto:

Ahora bien, con PulseAudio seria:

También puedes hacer streaming de lo que esté saliendo por tus altavoces con pulse usando el monitor de tu tarjeta:

circle-info

Tip Extra: Metadata y título

Puedes añadir información del stream con el parámetro -metadata por ejemplo:


Escuchar el stream de audio

Para escuchar los streamings anteriores puedes hacerlo desde varias aplicaciones:

  • Desde VLC (cliente1):

  • Desde el navegador (Firefox/Chromium en cliente1) — navega a:

  • Desde el panel de Icecast para ver los mountpoints activos:


PARTE 4 — Streaming de Vídeo 📹

Paso 6: Preparar un fichero de vídeo de prueba

Si no tienes un vídeo, genera uno con FFMPEG:

Paso 7: Emitir el stream de vídeo con FFMPEG (RA8.2)

Para emitir en WebM (compatible con más navegadores modernos):

Paso 8: Reproducir el stream de vídeo

De nuevo para reproducir el stream de video lo hariamos desde:

  • Desde VLC (cliente1):

  • Desde el navegador (Firefox soporta OGG Theora nativamente):


PARTE 5 — Sindicación RSS/Atom 📰

Ya por último podemos montar un servicio de RSS, RSS (Really Simple Syndication) es un formato basado en XML que permite distribuir y suscribirse a contenidos de sitios web de forma automática, sin necesidad de visitar la página manualmente cada vez.​

Cómo funciona técnicamente

El servidor publica un fichero de texto en formato XML (el feed o fuente), que contiene una lista estructurada de los últimos contenidos disponibles: título, descripción, fecha y enlace. El cliente usa un programa llamado lector RSS o agregador que consulta ese fichero periódicamente y muestra las novedades al usuario.

Paso 9: Crear un feed RSS para el stream

Crea manualmente un fichero XML de sindicación en el servidor que los clientes pueden suscribir:

Con el siguiente contenido:

El feed queda accesible en:

Los alumnos pueden suscribirse desde VLC (Medios → Servicios de internet → Podcasts) o desde cualquier lector RSS como Thunderbird (que ya tienen instalado de la práctica anterior).

Última actualización