- Estréllate y Arde - https://www.estrellateyarde.org -

Servidores de streaming en directo por Internet en Linux

El streaming (fujo de datos) permite reproducir (escuchar o visualizar) contenidos multimedia procedentes de la red sin tener que esperar a que el archivo se haya descargado por completo, ya que la secuencia de audio/vídeo se reproduce mientras se descarga.

En el streaming en directo por Internet el contenido multimedia es reproducido a iniciativa del servidor y la señal se retransmite y se visualiza en tiempo real. Intervienen tres componentes, gráficamente:

Fuente multimedia -> Servidor streaming -> Cliente streaming
  1. Fuente multimedia: mezcla varias entradas (micrófono, webcam, archivos .mp3, CD,etc.), transforma la señal a un formato que entienda el servidor (.ogg o .mp3), empaqueta la señal y la convierte en un flujo de datos.
  2. Servidor streaming: recibe el flujo de datos (stream) y lo envía a la red.
  3. Cliente streaming: visualiza la secuencia de audio/vídeo mientras la descarga.

Hay varios servidores de streaming para Linux, pero el más utilizado es IceCast (icecast.org, paquete icecast2).

Equivalencias en Windows: ShoutCast, MS-Media Server.

IceCast

  • Puede manejar varios streams diferentes a la vez, cada uno con una URL.
  • La fuente del stream y el servidor IceCast pueden estar en la distintas máquinas, cosa que puede venir bien si donde está la fuente no hay una conexión con suficiente subida para soportar muchos clientes.
  • Si queremos poner un enlace en nuestra web a una fuente IceCast la URL será (por ejemplo):

    http://nuestro_dominio:8000/freej.ogg.m3u

  • Arranca con el script de inicio /etc/init.d/icecast2 y se configura editando /etc/icecast2/icecast.xml. Veamos algunas de las directivas:
    • número máximo de clientes:
      <clients>200</clients>

      ¿Qué ancho de banda consume el stream transmitiendo a 32 Kbps con 200 clientes?

      32 Kbps/cliente x 200 clientes = 6400 Kbps / 1024 M/K = 6.25 Mbps

    • número de sources (mounts):
      <sources>2</sources>
    • contraseña que solicitará a la fuente:
      <source-password>hackme</source-password>
    • contraseña que solicitará si retransmitimos la señal de otro servidor (relay):
      <relay-password>hackme</relay-password>
    • usuario y contraseña para administrar el servidor:
      <admin-user>admin</admin-user>
      <admin-password>hackme</admin-password>
    • puerto estándar de Icecast (ShoutCast usa el 8001):
      <port>8000</port>
    • IP o dominio:
      <hostname>localhost</hostname>

Veamos qué podemos hacer con IceCast:

  1. montar una radio en directo

    Equivalencias en Windows: Traktor.

    • IDJC (Internet DJ Console, onlymeok.nildram.co.uk, paquete idjc): fuente de audio para IceCast. Permite mezclar dos listas de reproducción, señal de micrófono, entradas JACK y llamadas Skype. Genera stream .ogg o .mp3, y puede grabar la emisión. Necesita el servidor de sonido JACK.

      IDJC

    • MuSE (Multiple Streaming Engine, muse.dyne.org, los mismos de DyneBolic, paquete muse-streamer): fuente de audio para IceCast. Puede mezclar listas de reproducción y micrófono, y grabar la salida (.ogg). Lo lanzaremos con el comando:
      $ muse-streamer

      MuSE

    • Mixxx (mixxx.sourceforge.net, paquete mixxx): aplicación DJ que permite mezclar dos listas de reproducción. Trabaja con JACK, ALSA y OSS y envía la salida a la tajeta de sonido, de manera que para montar una radio en directo con Mixxx lo que haremos será utilizar DarkIce (por ejemplo) para capturar el audio de la tarjeta de sonido y reenviarlo a IceCast.

      Mixxx

    • DJPlay (djplay.sourceforge.net, paquete djplay): aplicación para DJs programada en Qt, utiliza el servidor de sonido JACK.

      DJPlay

    • DarkIce (darkice.tyrell.hu, paquete darkice): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido). Tiene un frontal gráfico, DarkSnow (darksnow.radiolivre.org, paquete darksnow).

      DJPlay

    • IceS (icecast.org/ices.php, paquete ices2): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido). Tiene un pluging para Xmms2 (paquete xmms2-plugin-ices).
    • LiveIce (star.arm.ac.uk/~spm/software/liveice.html, paquete liveice): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido), dispone de un GUI en TK para configurarlo. Tiene un pluging para Xmms (paquete xmms-liveice).
  2. transmitir vídeo

    Equivalencias en Windows: WinAmp, MS-Media Encoder.

    • FreeJ (freej.dyne.org, los mismos de la distro Dynebolic, paquete freej): fuente de vídeo Ogg para IceCast, pensado para webcam y retransmisiones en vivo, ya que el sonido procede del micrófono (si hacemos stream con un .mpg no transmite el audio). Admite varias fuentes y trata cada una como una capa, pudiendo aplicarles efectos (transparencias, rotaciones, diferencias, etc.). La señal retransmitida (incluido el audio) la guarda en el archivo freej.ogg. Lo lanzaremos con el comando:
      $ freej /dev/video0 -p hackme

      Algunas opciones son:

      • -s: tamaño de la ventana ancho x alto (por defecto 400x300).
      • -T: calidad de vídeo, de 0 a 63 (63 máxima calidad, por defecto 16).
      • -V: calidad de audio, de -1 a 10 (10 máxima calidad, por defecto 1).
      • -i: ubicación de IceCast (por defecto http://localhost:8000/freej.ogg).
      • -p: source-password de IceCast.

      Una vez iniciado FreeJ, pulsaremos <Ctrl+W> y se conectará a IceCast.

      Podemos insertar el vídeo en nuestra página poniendo algo similar a:

      <embed src="http://localhost:8000/freej.ogg" type="video/ogg"
          controller="true" autoplay="true" height="256" width="320">
      </embed>

      FreeJ

    • dvgrab | ffmpeg2theora | oggfwd: fuente de vídeo para IceCast (vía pipe).
      • dvgrab (kinodv.org, paquete dvgrab): captura la señal de una videocámara vía FireWire (IEEE-1394).
      • ffmpeg2theora (v2v.cc/~j/ffmpeg2theora/, paquete ffmpeg2theora): convierte cualquier archivo que el conversor de formatos de vídeo ffmpeg pueda leer en un stream de vídeo Ogg.
      • oggfwd (v2v.cc/~j/ffmpeg2theora/oggfwd/, paquete oggfwd): redirige el stream de vídeo Ogg que le llega por la entrada estándar a Icecast.

      Para hacer stream con un .mpg:

      $ ffmpeg2theora file.mpg -o /dev/stdout
        | oggfwd localhost 8000 hackme /stream.ogg

      Para hacer stream desde la entrada de vídeo analógica (V4L):

      $ ffmpeg2theora --v4l /dev/video0 -o /dev/stdout
        | oggfwd localhost 8000 hackme /stream.ogg

      Para hacer stream desde la entrada de vídeo digital (IEEE-1394):

      $ dvgrab --format raw -
        | ffmpeg2theora  -f dv -o /dev/stdout
        | oggfwd localhost 8000 hackme /stream.ogg

      Existe un GUI para estos comandos, Theorur (theorur.tvlivre.org, paquete theorur).

      Theorur

  3. montar una radio P2P
    • PeerCast (peercast.org, paquete peercast): red P2P de streaming de audio y vídeo (P2PTV). Consume poco ancho de banda porque los clientes a su vez sirven de nodos de repetición para otros clientes.

      Veremos el listado de canales disponibles en las Yellow Pages (yp.peercast.org). Para escuchar un canal pulsaremos Play y lo podremos reproducir con VLC, Totem, Xmms, etc. (PeerCast proporciona handlers para los browsers Firefox, Konqueror, Epiphany, etc.), quedando añadido a nuestro nodo (lo veremos en Relays).

      El daemon peercast escucha en http://localhost:7144 y arranca con el script de inicio /etc/init.d/peercast-servent

      PeerCast

      Podemos emitir en la red PeerCast de varias maneras, pero la más sencilla es haciendo relay de nuestro servidor IceCast local. Entramos en la página http://localhost:7144 y en la opción Broadcast ponemos la URL, el tipo de stream (.mp3, .ogg...), bitrate, nombre, etc. y pulsamos Create Relay. PeerCast comenzará el relay de nuestra señal en la red PeerCast y nuestro canal aparecerá en las Yellow Pages en unos minutos.


Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/servidor-streaming-en-directo-por-internet-en-linux

Copyright © 2010 Estrellate y Arde