Publicado el 18 de Abril del 2019
783 visualizaciones desde el 18 de Abril del 2019
471,6 KB
7 paginas
Creado hace 9a (01/01/2016)
Streaming de audio con IceCast2
utilizando el Codec de audio Opus
Materia:
Laboratorio de Sistemas Operativos y Redes
Profesor:
José Luis Di Biase
Integrantes:
Francisco Ramiro Pérez Ramos
Gastón Ezequiel Testay
IceCast2
Opus
Liquidsoap
Introducción:
Icecast es un programa para streaming de medios mantenido por la Fundación Xiph.Org.
Puede ser utilizado para crear una estación de radio en Internet o para uso privado entre
otras cosas, nuestro caso sería stremear audio en formato opus.
Opus es un códec digital con pérdida, muy versátil, abierto y libre de regalías desarrollado
por la Fundación Xiph.Org y estandarizado por la IETF, que utiliza el formato de archivo de
audio o contenedor Ogg. Está diseñado para codificar voz y audio general eficientemente con
un solo formato, y al mismo tiempo tener una complejidad lo suficientemente baja para poder
ser utilizado en procesadores ARM3. En múltiples pruebas de audición, ha demostrado tener
una mejor calidad que todos los demás codecs de audio, incluyendo MP3.
Liquidsoap es un Source Cliente desarrollado por Savonet que permite el manejo y creación
de los streamings tanto de audio como vídeo. En nuestro caso lo utilizamos para poder
reproducir audios en formato Opus en el servidor Icecast2.
Pasos a seguir:
Primero se debe instalar icecast2 con el siguiente comando
$ sudo apt-get install icecast2
Al ejecutar el comando aparecerá el siguiente cartel mientras se instala.
Si elegimos SI nos saltaran las siguientes opciones para configurar:
<port>puerto a utilizar, por defecto es 8000</port>
En caso contrario deberíamos modificar estas opciones en el archivo icecast.xml con
cualquier editor de texto, nosotros usamos nano:
$ sudo nano /etc/icecast2/icecast.xml
Lo que hay que modificar los siguientes campos:
<admin>nombreDeAdministrador@Dominio</admin>
<hostname> pon la ip que quieras utilizar, por defecto utiliza localhost </hostname>
<listen-socket>
</listen-socket>
Configuraciones por defecto
<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
Para correr (y ver si esta bien configurado) el icecast hay que ejecutar el siguiente
comando:
$ icecast2 -c /etc/icecast2/icecast.xml -b
-c le indica que archivo de configuración va a utilizar
-b corre icecast2 en background
También se puede hacer así: $ service icecast2 start/stop/restart
Si los archivos error.log, access.log e icecast.xml están sin permisos de escritura y lectura,
hay que dárselos con estos comandos.
$ sudo chmod a+rw /etc/icecast2/icecast.xml
$ sudo chmod a+rw /var/log/icecast2/error.log
$ sudo chmod a+rw /var/log/icecast2/access.log
Si no ocurre ningún error entonces icecast2 está funcionando. (ver archivo error.log sino)
Para chequear que esté corriendo simplemente hay que ir a la dirección donde está el
servicio
En este caso usamos localhost:8000 la configuración por defecto localhost es una ip, es
donde se va a montar el servidor Icecast.
8000 es un puerto de esa ip donde se va a correr el servicio.
Este es el socket por defecto utilizado. Lo conveniente sería configurarlo a gusto y
necesidad.
Una vez puesto en marcha, queda instalar el source client.
¿Qué es un “Source Client”?
Es un programa externo que se encarga de enviarle el contenido a Icecast para que este lo
reproduzca.
Icecast tiene su propio cliente, llamado ices2. Pero este no soporta el códec OPUS (quizás
en un futuro si).
Encontramos un source Cliente llamado LiquidSoap, que admite el formato Opus.
Problemas y Solución:
Bueno, cuando procedemos a descargar LiquidSoap con el programa apt este descarga
la versión 1.1.1, la cual tiene un problema, cuando se instala el plugin-opus deja
inutilizado el streaming en ogg y sus derivados (opus también) pero encontramos una
solución.
La página Savonet (los desarrolladores de Liquidsoap) recomiendan instalar su programa
mediante “opam” otro instalador de paquetes.
Instalación de LiquidSoap mediante Opam
$ sudo apt-get install opam
tras instalar opam hay que ejecutar esto para que se pueda auto-configurar y darle “y”
(yes)
$ opam init
Luego
$ opam upgrade
$ opam update
Instalar liquidsoap y algunos codecs, incluido opus.
$ opam install alsa taglib pulseaudio mad lame vorbis cry opus liquidsoap
Hay que reiniciar para que surtan efectos.
Podemos probar lo siguiente mediante el comando out, este envía sonido a la tarjeta de
sonido
single() lo que hace es utilizar un solo audio para transmitirlo
mksafe() lo hace “seguro”
$ liquidsoap 'out(mksafe(single(“/ruta/de/una/canción.codec)))'
$ liquidsoap 'out(input.http("url de streaming"))'
la url puede ser cualquier página que esté stremeando, ej:
"http://radio.108.pl:8006/meditation.ogg”
Para poder stremear en Icecast2 hay que hacer lo siguiente.
output indica donde va a salir la transmisión y icecast es el programa
playlist comando que requiere la ruta de una playlist.
en codec cambiar al codec que se requiere utilizar para el streaming.
$ liquidsoap ‘output.icecast
(%codec,
host=”el host donde está icecast”,
port= puerto donde escucha icecast (número),
password= “password de icecast”,
mount=”aca sería un texto que indica la url final (ej radio.codec)”,
mksafe(playlist(“/la/ruta/playlist”))’
Un ejemplo para streaming en el servidor icecast con una playlist ya generada.
$ liquidsoap ‘output.icecast(%opus,host=”ip o localhost”,port=8000,password=
“hackme”,mount=”labo.opus”,mksafe(playlist(“/la/ruta/playlist”))’
Capturar un streaming y usarlo en el servidor icecast
$ liquidsoap 'output.icecast(%opus,host="localhost",port=8000,password=
"hackme",mount="labo.ogg",mksafe(input.http("http://209.126.66.166:10999/192.opus")))'
Icecast2 stremeando
Instalación de LiquidSoap mediante APT
Si solo se desea utilizar el codec ogg vorbis los pasos son más sencillos.
$ sudo apt-get install liquidsoap (acá se instala la versión 1.1.1-7.1 )
Para probar que anda, utilizamos el comando:
// se escucha un tono en la compu
$ liquidsoap ‘out(sine())’
Luego para stremear con el icecast2 ejecutamos el siguiente comando:
liquidsoap 'output.icecast(%vorbis,host="localhost",port=8000,password=
"1234",mount="radio.ogg",mksafe(playlist("/la/ruta/playlist")))'
Testeo de Liquidsoap por streaming de salida a el audio de la pc.
$ liquidsoap 'out(input.http("http://radio.108.pl:8006/meditation.ogg"))'
liquidsoap 'output.icecast(%vorbis,host="localhost",port=8000,password=
"1234",mount="labo.ogg",input.http("http://radio.108.pl:8006/meditation.ogg"))'
Generación de una Playlist con ruta relativa
ejecutar en terminal lo siguiente:
$ cd /ruta/donde/están/las/canciones
$ sudo touch playlist.m3u
$ sudo chmod a+rw playlist.m3u
$ ls *.codec > playlist.m3u
Cómo convertir un archivo .wav a .opus y viceversa
descargar opus-tools
$ sudo apt-get install opus-tools
Para “encodear” hacer lo siguiente
$sudo opusenc audio.wav audio.opus
Para “desencodear” hacer lo siguiente:
$ sudo opusdec audio.opus audio.wav
Referencias y versiones utilizadas:
http://icecast.org/
https://opus-codec.org/
https://opam.ocaml.org
http://liquidsoap.fm
https://packages.ubuntu.com/xenial/libopus0
https://packages.ubuntu.com/xenial/liquidsoap
https://packages.ubuntu.com/xenial/icecast2
Se utilizó Ubuntu 16.04 lts
icecast2 v 2.4.1
liquidsoap v 1.3.1 instalado con “opam”
liquidsoap v 1.1.1-7.1 instalado con “apt”
Comentarios de: Streaming de audio con IceCast2 utilizando el Codec de audio Opus (0)
No hay comentarios