Streaming de audio por internet
Antes que nada aclaremos algunos conceptos necesarios el streaming es una técnica de empaquetar datos ya sea de audio o video y enviarlos desde un emisor (cliente-emisor) hacia un receptor (server) que es al cual nuestros radioescuchas o televidentes se podrán conectar para así mismo usando un cliente (software para ver o escuchar) pueden escuchar nuestras emisiones; en pocas palabras el sistema tiene una configuración punto multipunto o broadcast.
Aclarado esto veamos cuales son entonces las aplicaciones que utilizaremos; en primer lugar necesitamos un servidor de preferencia con una IP fija en el cual instalaremos el server Icecast o Shoutcast para eso revisar el tutorial en este link.
Hecho esto suponemos entonces que el server esta operativo ahora debemos entonces configurar el cliente para emisiones; en este proyecto lo haremos todo bajo Debian y concretamente bajo Raspbian usaremos entonces una Raspberry Pi 2 o 3 ; esto lo hacemos debido a lo pequeño, liviano, fácil de transportar y barato, justo para hacer un “transmisor móvil” y hacer emisiones desde donde sea requerido (siempre y cuando tengamos acceso a internet obviamente).
Instalación del Cliente de Emisión
El cliente que utilizaremos es Darkice, el cual tiene la particularidad de forma muy sencilla enviar el setreaming codificando el audio, empaqutándolo hacia el servidor.
Darkice graba el audio usando los decodificadores previamente instalados en nuestro debian como por ejemplo LAME para MP3 capturándolo desde la tarjeta de sonido (hay que recordar que la Raspberry su tarjeta de audio no graba solo reproduce), esta aplicación puede codificar el audio en:
- MP3 – usando las librerias de lame
- MP2 – usando las librerias de twolame
- Ogg Vorbis
- AAC LC -usando las librerias de faac
- AAC HEv2 – usando las librerias de libaacplus
- Opus – usando las librerias de Xiph’s libopus
- Vorbis – usando las librerias de Xiph’s libvorbis
Cabe señalar que Icedark puede enviar el audio hacia servidores:
Finalmente debo indicar que Darkice puede codificar y enviar usando los drivers de las tarjetas de sonido desde:
- Dispositivos de audio OSS
- Dispositivos de audio ALSA audio devices
- Dispositivos de audio Solaris
- Fuente de audio Jack
- Dispositivos de audio a través de interfaces serial uLaw
- CoreAudio (derivación darkice-macosx)
Siendo para el caso de este proyecto los dispositivos compatibles con ALSA (que por lo general son la gran mayoría)
Dicho todo esto vamos a instalar la aplicación:
# apt install darkice
Tomara unos segundo y estaremos listo para configurarlo.
1ra Configuración Darkice
La configuración la podemos hacer de dos maneras una manual; es decir editando el archivo de configuración denominado darkice.cfg, el cual debe estar ubicado en el directorio /etc ya que darkice lo busca en esa carpeta por defecto:
# nano /etc/darkice.cfg
Dentro de este archivo que aparecerá vacío debería quedar así:
server=xxx.xxx.xxx.xxx port=xxxx mountpoint=stream pass=miclave radioname=Amiga FM description=La que siempre te acompaña url=www.amigafm.org genre=de todo icecast=Icecast 2 format=mp3 bitrate=128 bitratemode=Constant samplerate=44100 quality=1.0 bitspersample=16 channel=1 - Mono buffersize=10 device=hw:1,0 public=no verbosity=0 remotedump= localdump= adddate=0
En la captura siguiente explico las líneas del archivo:
La parte más complicada aquí es identificar en nuestra raspberry la tarjeta de sonido USB que debemos haber concetado en uno de los puertos; para ello usamos el siguiente comando:
# arecord -l
Lo que nos devolverá el siguiente mensaje:
**** List of CAPTURE Hardware Devices ****
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Donde lo importante es determinar la tarjeta (card) y el dispositivo USB (device); como puede verse aquí es 1 y 0; por lo tanto es el valor que se encuentra en la línea device=hw:1,0, indicando que es el hardware de la tarjeta 1 y del puerto USB 0 y eso seria todo, grabamos y ya podemos ejecutarlo desde la línea de comandos de la siguiente manera:
# darkice -c /etc/darkice.cfg
Y listo! podemos conectar en el puerto del micrófono la entrada del audio, podemos poner un micrófono u otro dispositivo que genere el audio.
Debo aclarar algo el servidor que he usado para este ejemplo es bajo la plataforma y el método de streaming de ICECAST.
2da Configuración Darkice
Es el método más sencillo ya que es en modo grafico 😉 para ello nuestra raspberry debe estar conectado a un monitor con un teclado; el método anterior lo hicimos vía SSH o por terminal, veamos como se hace:
Para esto debemos instalar una herramienta (programa) que editará de manera automática el archivo de configuración; tan solo debemos colocar los datos correctos y grabar la configuración.
Instalamos la aplicación darksnow
# apt install darksnow
y listo, ahora ya tenemos la interface grafica para configurar icedark, para ejecutarla basta con localizar la aplicación o desde la terminar escribir darksnow y veremos esto:
Notar que son los mismos datos del archivo de configuración, ahora en la siguiente pestaña tendremos esto:
Y en la tercera pestaña los datos informativos de la estación de radio
Grabamos y tan solo debemos dar click en el boton Star Streaming y listo!!
Este tutorial ha sido necesario hacerlo ya que hay poca información o muy ligera e incomprensible; a continuación veremos una serie de fotografías de como quedo mi raspberry con sus conexiones.