1 Objetivos 2 Marco Teórico - Administracion de Sistemas

Anuncio
1 Objetivos
 Conocer toda la configuración necesaria para montar un servicio de
Streaming Audio/Video en el Sistema operativo Ubuntu 12.04 junto a los
paquetes necesarios para la configuración de este.
 Instalar los paquetes necesarios para la configuración e implementación de
Apache2 (http), php y codecs multimedia.
 Configurar el icecast, programa para la gestión de streaming, con el fin de
transmitir exitosamente video y audio, según sea necesario.
2 Marco Teórico
 Servicio Streaming
El streaming es la distribución de multimedia a través de una red de
computadoras de manera que el usuario consume el producto al mismo tiempo
que se descarga. La palabra streaming se refiere a que se trata de una corriente
continua (sin interrupción). Este tipo de tecnología funciona mediante un búfer de
datos que va almacenando lo que se va descargando para luego mostrarse al
usuario que lo usa. Esto se contrapone al mecanismo de descarga de archivos,
que requiere que el usuario descargue los archivos por completo para poder
acceder a los archivos.
El término se aplica habitualmente a la difusión de audio o vídeo. El streaming
requiere una conexión por lo menos de igual ancho de banda que la tasa de
transmisión del servicio. El streaming de vídeo se popularizó a fines de la década
de 2000, cuando el ancho de banda se hizo lo suficientemente barato para gran
parte de la población.
Para poder proporcionar un acceso claro, convincente, continuo y sin
interrupciones ni cambios, el streaming se apoya en las siguientes tecnologías:




Codec
Bitstream
Transport
Control
Los enlaces de escucha o alimentación de audio de la estación suelen ser http://,
pnm://, .asx, .pls, m3u, etc.
4
Códecs: Son archivos residentes en el ordenador que permiten a uno o varios
programas descifrar o interpretar el contenido de un determinado tipo de archivo
multimedia. Se suelen emplear MP3, Vorbis o AAC para el audio y H.264 o VP8
para el video.
Bitstream: Las emisiones de audio y video en códecs se ensamblan en un
contenedor bitstream como FLV, WebM, ASF o ISMA.
Transporte: El bitstream se distribuye desde un servidor streaming a un cliente
streaming utilizando un protocolo de transporte, como MMS o RTP.
Control: El cliente de streaming puede interactuar con el servidor streaming
utilizando un protocolo de control, como MMS o RTSP.
Protocolos ligeros
UDP y RTSP (los protocolos empleados por algunas tecnologías de "streaming")
hacen que las entregas de paquetes de datos desde el servidor a quien reproduce
el archivo se hagan con una velocidad mucho mayor que la que se obtiene por
TCP y HTTP. Esta eficiencia es alcanzada por una modalidad que favorece el flujo
continuo de paquetes de datos. Cuando TCP y HTTP sufren un error de
transmisión, siguen intentando transmitir los paquetes de datos perdidos hasta
conseguir una confirmación de que la información llegó en su totalidad. Sin
embargo, UDP continúa mandando los datos sin tomar en cuenta interrupciones,
ya que en una aplicación multimedia estas pérdidas son casi imperceptibles.
Precarga
La entrega de datos desde el servidor a quien ve la página puede estar sujeta a
demoras conocidas como lag (retraso, en inglés), un fenómeno ocasionado
cuando los datos escasean (debido a interrupciones en la conexión o sobrecarga
en el ancho de banda). Por tanto, los reproductores multimedia precargan o
almacenan en el buffer, que es una especie de memoria, los datos que van
recibiendo para así disponer de una reserva de datos y evitar que la reproducción
se detenga. Esto es similar a lo que ocurre en un reproductor de CD portátil, que
evita los saltos bruscos y los silencios ocasionados por interrupciones en la lectura
debidos a vibraciones o traqueteos, almacenando los datos antes de que el
usuario tenga acceso a ellos.
Red de acceso de contenido
Si un determinado contenido comienza a atraer una cantidad de usuarios mayor
que su capacidad de ancho de banda, estos usuarios sufrirán cortes o lag.
5
Finalmente, se llega a un punto en que la calidad del stream es pésima.
Ofreciendo soluciones, surgen empresas y organizaciones que se encargan de
proveer ancho de banda exclusivamente para streaming, y de apoyar y desarrollar
estos servicios.
Usos
Radio por Internet
La ventaja para la emisora de radio por Internet es que puede llegar a un gran
público objetivo que, por diversos motivos (como el alcance territorial limitado de la
señal radiofónica), desconocían una emisora de otro lugar. Cabe aclarar que no
sólo las emisoras de radio AM y FM transmiten por Internet; en los últimos tres (3)
años están creciendo exponencialmente las radios digitales, que transmiten
exclusivamente por Internet.
Televisión por Internet
Desde finales de los 90, los intentos de televisión por Internet habían fracasado,
por el considerable ancho de banda requerido por la señal de vídeo; sin embargo,
resurge el interés en este tipo de comunicación pública con el gran éxito de
Youtube y la expansión del ADSL.
Acerca de Ubuntu 12.04
Ubuntu es un sistema operativo basado en Debian y que se distribuye como
software libre y gratuito, el cual incluye su propio entorno de escritorio denominado
Unity. Está orientado al usuario novel y promedio, con un fuerte enfoque en la
facilidad de uso y en mejorar la experiencia de usuario. Está compuesto de
múltiple software normalmente distribuido bajo una licencia libre o de código
abierto. Estadísticas web sugieren que la cuota de mercado de Ubuntu dentro de
las "distribuciones Linux" es, aproximadamente, del 49%, y con una tendencia a
aumentar como servidor web.5 Y un importante incremento activo de 20 millones
de usuarios para fines del 2011.
Acerca de Apache (http)
El servidor HTTP Apache es un servidor web HTTP de código abierto, para
plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras,
que implementa el protocolo HTTP y la noción de sitio virtual. Cuando comenzó su
desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPD, pero
más tarde fue reescrito por completo. Su nombre se debe a que Behelendorf
quería que tuviese la connotación de algo que es firme y enérgico pero no
agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en
gobierno de EEUU, y en esos momentos la preocupación de su grupo era que
6
llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros
ingenieros de internet. Además Apache consistía solamente en un conjunto de
parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor
"parcheado") suena igual que Apache Server.
El servidor Apache se desarrolla dentro del proyecto HTTP Server (httpd) de la
Apache Software Foundation.
Acerca de PHP
PHP es un lenguaje de programación de uso general de código del lado del
servidor originalmente diseñado para el desarrollo web de contenido dinámico.
Fue uno de los primeros lenguajes de programación del lado del servidor que se
podían incorporar directamente en el documento HTML en lugar de llamar a un
archivo externo que procese los datos. El código es interpretado por un servidor
web con un módulo de procesador de PHP que genera la página Web resultante.
PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de
comandos que puede ser usada en aplicaciones gráficas independientes. PHP
puede ser usado en la mayoría de los servidores web al igual que en casi todos
los sistemas operativos y plataformas sin ningún costo.
Acerca de Icecast
Icecast es un proyecto 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. Es muy versátil en lo relativamente fácil que admite
nuevos formatos, y además, soporta estándares abiertos para comunicación e
interacción. El mismo término, es también usado para referirse específicamente al
programa servidor que es parte del proyecto.
Actualmente el servidor Icecast soporta en sus últimas versiones streams Ogg
Vorbis, MP3, Ogg Speex, Ogg FLAC, Ogg Theora y AAC.
3 Desarrollo De la Práctica
Para lograr el correcto funcionamiento del servidor de Streaming Audio/Video
debemos cumplir con ciertos requerimientos mínimos:
1. Servidor linux, en nuestro Caso Ubuntu 12.04
2. Apache (http)
3. Icecast2
1. Ubuntu 12.04 Correctamente Instalado
7
Ilustracion N°1
2. Instalación de Servidor Apache (http)
Abrir una terminal/consola, primero instalamos el servidor web Apache:
sudo apt-get install apache2
Lo podemos comprobar abriendo un navegador en la dirección: http://127.0.0.1
Ilustracion N°2
3. Instalación y configuración Icecast2
Abrir una terminal/consola, primero instalamos el servidor web Apache:
sudo apt-get install icecast2
Ilustración N°3
8
Cuando aparezca la ventana que nos pregunta si deseamos configurar el Icecas2,
marcamos que no, puesto que lo configuraremos más tarde.
Ilustración N°5
Luego que el Icecast2 esté instalado, procedemos a pararnos sobre su directorio
dentro de la terminal, digitamos:
cd /etc/icecast2/
Ilustración N°6
Dentro de este directorio se encuentra el archivo de configuración del Icecast2
llamado icecast.xml, procederemos a modificarlo, digitamos en la consola
sudo gedit icecast.xml
Ilustración N°7
9
Nos saldrá en pantalla el siguiente documento, el cual debemos modificar los
siguientes ítems del listado llamado <limite>:
 <clientes> 100 </clientes> que indica la cantidad de clientes permitidos
en tu servidor, para nuestra practica dejaremos solo 5, entonces el ítem
debe quedar de la siguiente manera: <clientes> 5 </clientes>.
NOTA: se debe tener en cuenta el ancho de banda, puesto que se
transmite 32 Kbps a cada cliente, y si excedes tu ancho de banda
probablemente se pondrá muy lenta tu transmisión streaming.
 <source> 2 </source> indica el número de fuentes de donde se va a
recibir el contenido, este ítem lo dejamos como esta.
 Las demás opciones de ese listado inicial que corresponden a tiempo de
conexión y desconexión de clientes, entre otras opciones, las dejaremos
intactas.
Ilustración N°8
10
Ilustración N°9
Luego bajamos un poco y encontraremos otro fragmento de configuración
denominado <authentication>, del cual modificaremos:
 <source – password> hackne </source-password> junto a <relay –
password> hacknet </relay – password> la primera consisten en la
contraseña usada para transmitir y la segunda será la delegada a los
servidores que deseen retransmitir, cambiaremos los datos hacknet en
ambas casillas según sean nuestras necesidades.
 Más abajo encontraremos los mismos datos pero para un usuario
administrador que será el encargado de modificar el icecast desde la
interfaz: <admin – password> admin </admin-password> junto a <admin
– password> hacknet </admin – password> también se pueden modificar
los datos según sea requerido.
11
Ilustración N°10
Nos desplazamos un poco más para abajo en el archivo de configuración y
encontraremos otra directiva llamada: listing. … <hostname> localhost
</hostname>, la cual la debemos modificar según la modificación que le hayas
hecho al servidor Apache, se puede asignar un dominio como tal: <hostname>
diana.asor.local </hostname>, o tu ip.
Más abajo esta la opción <listen-sockert> que contiene <port> 8000 </port> por
defecto, el cual es el puerto del equipo que el servidor de streaming utilizara para
realizar la transmisión, se recomienda dejar la opción por defecto pero puedes
modificarla según sean tus necesidades.
12
Ilustración N°11
Finalmente guardamos los cambios hechos al documento y salimos de la carpeta
del icecast hasta la ruta raíz digitando:
sudo cd ..
Cambiaremos al usuario root para realizar una modificación al icecast, digitando:
sudo su
y digitamos el siguiente comando para editar:
sudo gedit /etc/default/icecast2
13
Ilustración N°12
En el documento que aparece en pantalla, iremos a la última línea visible y
modificaremos el parámetro ENABLE=false a ENABLE=true para activar el script
init.d. Que da soporte a los scripts. Guardamos y cerramos el documento.
Ilustración N°13
14
Modificando el valor:
Ilustración N°14
4. Iniciando servicio y transmisión
Finalmente terminadas las configuraciones básicas procedemos a iniciar el
servidor de streaming icecast2, digitamos lo siguiente en la consola:
sudo service icecast2 start
Ilustración N°15
si todo esta correcto debería correr la línea sin problemas, ahora verificamos que
realmente haya iniciado el servidor, entra a nuestro navegador de internet y
digitando en la barra de dirección nuestra ip o dominio seguido de dos puntos y el
puerto por donde transmitirá el icecast2, todo esto configurado anteriormente:
diana.asor.local:8000
Nos deberá aparecer lo siguiente en el navegador:
15
Ilustración N°16
Luego pinchamos e botón de Administración, iniciamos sesión usando los datos
que configuramos anteriormente:
Ilustración N°17
16
Nos aparece una ventana con el estado del servidor, clientes conectados, datos
transmitidos, nombre del administrador, entre otros datos.
Ilustración N°18
5. Instalación de Codecs
Para lograr transmitir video mediante el servicio de streaming debemos de instalar
un par de programas que se encargaran de codificar nuestro multimedia para que
sea más accesible en la web.
Primero instalaremos ffmpeg2theora escribiendo lo siguiente en la terminal:
sudo apt-get install ffmpeg2theora
Ilustración N°19
Finalmente instalaremos oggfwd digitando en la consola lo siguiente:
sudo apt-get install oggfwd
Ilustración N°20
6. Preparando el Multimedia
Ya que se tiene todo preparado para comenzar la transmision via streaming, se
debe decidir y configurar lo que se va a transmitir.
Crearemos una carpeta donde almacenaremos los videos a transmitir, la
alojaremos en un sitio de fácil acceso, en nuestra práctica será en la carpeta
personal:
17
Ilustración N°21
Para transmitir de manera eficiente el multimedia debemos convertir o codificarlo a
un tipo de archivo ligero y libre como el .ogg para el audio y el .ogv para el video,
para eso haremos lo siguiente:
Primero nos pararemos en la carpeta que almacena los videos:
cd /videos
luego inicializaremos el icecast2 con el siguiente comando:
sudo service icecast2 start
nos pedirá el password que configuramos anteriormente en la directiva source, lo
digitamos y enter.
Luego reinicializamos el servicio digitando lo siguiente:
sudo service icecast2 restart
Para convertir el multimedia al formato mencionado anteriormente debemos digital
lo siguiente en la consola:
ffmpeg2theora a.mpg –o /dev/stdout | oggfwd diana.asor.local 8000 diana
/out.ogv
a.mpg video que se desea transmitir
diana.asor.local  dominio
diana  contraseña de admininistrador
/out.ogv  nombre de la ruta
18
Ilustración N°22
Luego empezara la transmisión de la señal y nos mostrara lo siguiente la consola,
que nos indica que se está enviando multimedia:
Ilustración N°23
A continuación iremos al navegador del Sistema Operativo, digitamos nuestra
dirección junto al puerto y el archivo que transmitimos:
Ilustración N°24
Cualquier maquina en nuestra red que pueda acceder a nuestra ip podrá ser
capaz de ver la transmisión.
19
Icecast2, Transmitir audio
1.- Instalamos ices2 y herramientas vorbis para manejo de formatos de audio
libres (ogg). Nos vamos a una terminal y tecleamos
sudo apt-get install ices2 vorbis-tools
Ahora vamos a la barra de direcciones del navegador web y tecleamos
http://diana.asor.local:8000/admin/listmounts.xsl
Como vemos aún no tenemos ningún Active Mountpoints, lo cual conseguiremos
tras instalar el cliente ices2 y establezcamos las "lista de canciones"
2. Configuración del cliente ices2 para icecast2
Ices2 no viene con archivos de configuración por defecto. Lo que si trae en
/usr/share/doc/ices2/examples son archivos de ejemplo para configuraciones de
alsa (ices-alsa.xml), oss (ices-oss.xml) y playlist (ices-playlist.xml).
Se va a utilizar esta última: se crea una carpeta en /etc llamada ices2 ,copiamos
allí el archivo y le otorgamos permisos
sudo mkdir /etc/ices2
sudo cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices2/
sudo chmod +x /etc/ices2/ices-playlist.xml
A continuación editamos el archivo y lo configuramos
sudo gedit /etc/ices2/ices-playlist.xml
20
Es muy sencillo, vamos a ir viéndolo por secciones:
♦ En la sección <background> cambiamos el 0 por 1, de esta forma evitaremos
que se mantenga la terminal abierta hasta que lo cerremos.
<background>1</background>
♦ En la sección <metadata> configuramos:
<metadata>
<name>NOMBRE ESTACION</name>
<genre>GENERO ESTACION</genre>
<description>DESCRIPCION ESTACION</description>
</metadata>
21
♦ En la sección <input> configuramos:
<param name="file">/miruta/playlist.txt</param>
<param name="random">1</param>
<param name="once">0</param>
Establecemos la
/miruta/playlist.txt
ruta
al
archivo
que
contiene
la
lista
de
canciones:
Random: indicamos si queremos que la reproducción de los archivos sea
secuencial (0) o aleatoria (1).
Once: Indicamos si queremos que la emisora deje de emitir al terminar la lista de
reproducción (1) o que continúe emitiendo sin interrupción (0).
♦ En la sección <instance> configuramos:
<hostname>localhost</hostname>
<port>8000</port>
<password>PASSWORD_FUENTES</password>
<mount>/lista_de_reproduccion.ogg</mount>
22
La dirección del servidor: dominio
El puerto: por defecto trae 8000 (lo dejamos tal cual)
El password de las fuentes: PASSWORD_FUENTES (es el mismo password que
hemos puesto en /etc/icecast2/icecast.xml)
En <mount></mount> debemos escojer el ‘mount point’ que queramos para emitir.
Podemos poner algo descriptivo (sin espacios y acabado en .ogg), por ejemplo
lista_de_reproduccion.ogg
Creamos la carpeta para el archivo log para ices
sudo mkdir /var/log/ices
y le damos permisos, si no lo hacemos al arrancar ices2 nos lanzará un ERROR
sudo chmod 777 /var/log/ices
3. Configuración del archivo de canciones a reproducir
Para ello tenemos dos opciones:
23
Opción a) Creamos la ruta hacia un archivo con la lista de canciones con el
comando siguiente
sudo find /RUTA_DONDE_ESTAN_LAS_CANCIONES -name "*.ogg" >
/RUTA_DONDE_TENGO_EL_ARCHIVO_LISTA/LISTA.TXT
Opción b) Editamos el archivo y tecleamos la ruta completa para cada canción
sudo gedit /RUTA_DONDE_TENGO_EL_ARCHIVO_LISTA/LISTA.TXT
/RUTA_DONDE_ESTAN_LAS_CANCIONES/nombre_cancion1.ogg
/RUTA_DONDE_ESTAN_LAS_CANCIONES/nombre_cancion2.ogg
…..
4. arrancar ices2
Tecleando en consola
sudo ices2 /etc/ices2/ices-playlist.xml &
Si ahora nos vamos a la página http://diana.asor.local:8000/lista_de_reproduccion.ogg,
con el que podemos conectarnos a la radio.
24
Mp3 a ogg
Cuando se configura una estación de radio con Icecast e Ices una de las
preguntas que primero surge es: ¿Cómo convierto un Mp3 a ogg? La respuesta es
muy sencilla para nuestro consuelo, para convertir un Mp3 a ogg en linux basta un
comando de consola pero antes asegúrate de tener instalados estos paquetes si
aún no los tienes:
sudo apt-get install mpg321 vorbis-tools
Ahora para convertir un mp3 a ogg:
mpg321 music.mp3 -w - | oggenc -o music.ogg –
music.mp3  ruta de donde se encuentra el archivo mp3
music.ogg  ruta de donde se se desea guardar el archivo ogg
25
4 Conclusiones
 El servidor streaming se basa en un buffer que almacena previamente el
multimedia a transmitirse y al mismo instante lo va cargando en el
reproductor del navegador o aplicación que esté recibiendo la transmisión.
 Es absolutamente recomendable codificar los archivos a transmitir en
archivos ligeros y libres para evitar colapso de la transmisión y problemas
legales, archivos tales como .ogg para audio y .ogv para video.
26
5 Referencias








http://es.wikipedia.org/wiki/Streaming
http://es.wikipedia.org/wiki/Servidor_HTTP_Apache
http://es.wikipedia.org/wiki/Ubuntu
http://es.wikipedia.org/wiki/Icecast
http://es.wikipedia.org/wiki/PHP
http://fraterneo.blogspot.com/2013/01/como-configurar-un-servidor-de.html
http://angelvg.blogspot.com/2009/07/freebsd-icecast2-theora.html
http://www.fresymetal.com/como-instalar-icecast2-para-video-streaminggnulinux/
 http://www.howtoforge.com/installing-apache2-with-php5-and-mysqlsupport-on-fedora-18-lamp
 http://www.youtube.com/watch?v=b7geBiQKOr4
27
Descargar