🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • 🎙️ 5. Streaming de audio en vivo (micrófono)
  • 📺 6. Ver el resultado
  • ✅ Tip Extra: Metadata y título
  • 🧪 Para pruebas rápidas:
  • 📜 Script: stream_radio.sh
  • 🛠️ Instrucciones de uso
  • 🧠 Extras que puedes añadir:
  1. Servicios
  2. Multimedia services

Icecast - música en streaming

Vamos a probar icecast con ffmpeg


En Debian/Ubuntu empezaremos por instalar el servicio:

sudo apt install ffmpeg

Con FFmpeg puedes tomar un archivo de audio o una fuente en vivo y enviarlo a Icecast en tiempo real usando una línea de comando como el siguiente:

ffmpeg -re -i input.mp3 \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg \
  -f mp3 \
  icecast://source:hackme@localhost:8000/stream.mp3

🔍 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

  • icecast://source:PASSWORD@HOST:PORT/MOUNT = URL para emitir

Cambia:

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

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

  • /stream.mp3 → el mount point definido

O bien pudieras enviar toda una carpeta en loop:

ffmpeg -re -stream_loop -1 -i "$(find ~/Music -type f -name '*.mp3' | shuf -n 1)" \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg \
  -f mp3 \
  icecast://source:hackme@localhost:8000/stream.mp3

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


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

🔹 En Linux con ALSA:

Encuentra tu dispositivo:

arecord -l

Ejemplo para usar el dispositivo por defecto:

ffmpeg -f alsa -i default \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg \
  -f mp3 \
  icecast://source:hackme@localhost:8000/stream.mp3

🔹 Con PulseAudio:

ffmpeg -f pulse -i default \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg \
  -f mp3 \
  icecast://source:hackme@localhost:8000/stream.mp3

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

ffmpeg -f pulse -i "alsa_output.pci-0000_00_1f.3.analog-stereo.monitor" ...

📺 6. Ver el resultado

Abre en el navegador o VLC:

http://localhost:8000/stream.mp3

Si estás desde otro dispositivo, cambia localhost por tu IP local o pública.


✅ Tip Extra: Metadata y título

Puedes añadir información del stream con:

ffmpeg -re -i input.mp3 \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg \
  -f mp3 \
  -metadata title="Mi Radio FFMPEG" \
  icecast://source:hackme@localhost:8000/stream.mp3

🧪 Para pruebas rápidas:

ffmpeg -f lavfi -i sine=frequency=440:duration=60 \
  -c:a libmp3lame -b:a 128k \
  -content_type audio/mpeg -f mp3 \
  icecast://source:hackme@localhost:8000/test.mp3

(Esto transmite un tono de prueba 🎶)

Vamos a ver un script Bash listo para lanzar automáticamente un stream de audio a Icecast usando FFmpeg, ideal para una radio casera o personal 🔥🎙️


📜 Script: stream_radio.sh

#!/bin/bash

# CONFIGURACIÓN DEL STREAM
ICECAST_HOST="localhost"
ICECAST_PORT="8000"
ICECAST_PASSWORD="hackme"
ICECAST_MOUNT="/stream.mp3"

# CONFIGURACIÓN DE AUDIO
BITRATE="128k"
CODEC="libmp3lame"
CONTENT_TYPE="audio/mpeg"
FORMAT="mp3"

# DIRECTORIO CON MÚSICA
MUSIC_DIR="$HOME/Music"

# LOGO
echo "🎵 Iniciando stream de radio con FFmpeg..."

# COMPROBAR FFmpeg
if ! command -v ffmpeg &> /dev/null; then
    echo "❌ FFmpeg no está instalado."
    exit 1
fi

# COMPROBAR QUE HAY MÚSICA
if [ ! -d "$MUSIC_DIR" ]; then
    echo "❌ No se encontró el directorio de música: $MUSIC_DIR"
    exit 1
fi

# INICIAR EL STREAM (loop aleatorio)
while true; do
    echo "🔁 Reproduciendo nuevo archivo..."
    FILE=$(find "$MUSIC_DIR" -type f \( -iname "*.mp3" -o -iname "*.ogg" \) | shuf -n 1)
    
    if [ -z "$FILE" ]; then
        echo "⚠️ No se encontraron archivos de audio."
        sleep 10
        continue
    fi

    echo "🎧 Reproduciendo: $FILE"
    
    ffmpeg -re -i "$FILE" \
        -c:a $CODEC -b:a $BITRATE \
        -content_type $CONTENT_TYPE \
        -f $FORMAT \
        icecast://source:$ICECAST_PASSWORD@$ICECAST_HOST:$ICECAST_PORT$ICECAST_MOUNT

    echo "🛑 FFmpeg se detuvo. Reiniciando en 5 segundos..."
    sleep 5
done

🛠️ Instrucciones de uso

  1. Guarda el script:

    nano stream_radio.sh

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

  2. Hazlo ejecutable:

    chmod +x stream_radio.sh
  3. Ejecuta el script:

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

    http://<tu_ip_local>:8000/stream.mp3

🧠 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).

AnteriorReproductores de música en CLISiguienteRTMP-HLS server

Última actualización hace 1 mes

🗃️
🏗️
🚧