Webm es el nuevo protocolo estándard de stream de vídeo compatible con html5.
El día 4 de Mayo salió la nueva release de este software de streaming y una de las novedades es el soporte de webm.
Vamos a instalar icecast 2.4.0 en una debian 7:
Instalamos primero algunas dependencias
root@capa8-icecast:/usr/local# apt-get install build-essential libxslt1-dev libvorbis-dev curl
Y vamos a instalar la nueva versión de icecast.
root@capa8-icecast:/usr/local# wget http://downloads.xiph.org/releases/icecast/icecast-2.4.0.tar.gz root@capa8-icecast:/usr/local# tar xvzf icecast-2.4.0.tar.gz root@capa8-icecast:/usr/local/icecast-2.4.0# cd /usr/local/icecast-2.4.0 root@capa8-icecast:/usr/local/icecast-2.4.0# ./configure root@capa8-icecast:/usr/local/icecast-2.4.0# make root@capa8-icecast:/usr/local/icecast-2.4.0# make install
Ahora modificamos el fichero de configuración que se encuentra en /usr/local/etc/icecast.xml, recomiendo hacer una copia del fichero ejemplo y trabajar con este nuevo fichero, de esta forma podemos definir varias configuraciones para el servidor y así simplemente si queremos aplicar otra configuración es tan simple como al momento de arrancar iceast llamar al otro fichero de configuración.
root@capa8-icecast:/usr/local/etc# cp icecast.xml stream-capa8.xml <authentication> <!-- Sources log in with username 'source' --> <source-password>hackme</source-password> <!-- Relays log in username 'relay' --> <relay-password>hackme</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>hackme</admin-password> </authentication>
Y añadimos un punto de montaje donde hacer las pruebas:
<mount> <mount-name>/test.webm</mount-name> <username>test</username> <password>test</password> <dump-file>/opt/dump_icecast/test_dump.webm</dump-file> </mount>
Esto antes de la línea: <fileserve>1</fileserve>
Si no tenemos mucha idea de icecast, la documentación nos recomienda simplemente cambiar los passwords y el servidor ya está listo para funcionar. Después entraremos con ello :)
Icecast no se deja arrancar como root, a menos que se lo permitas en el fichero de configuración:
root@capa8-icecast:~# icecast -c /usr/local/etc/stream-capa8.xml ERROR: You should not run icecast2 as root Use the changeowner directive in the config file
Así que si nos lo recomiendan vamos a crear un usuario de icecast y le vamos a crear un directorio donde pueda guardar felizmente los ficheros de log :)
root@capa8-icecast:~# adduser icecast root@capa8-icecast:~# mkdir -p /usr/local/var/log/icecast/ root@capa8-icecast:~# chown -R icecast:icecast /usr/local/var/log/icecast/
Ahora arrancamos el servicio:
root@capa8-icecast:~# su - icecast icecast@capa8-icecast:~$ icecast -c /usr/local/etc/stream-capa8.xml & [1] 22383
Y verificamos que está arrancado:
icecast@capa8-icecast:~$ ps aux |grep icecast root 22366 0.0 0.1 35608 1304 pts/0 S 20:35 0:00 su - icecast icecast 22367 0.0 0.2 18716 2932 pts/0 S 20:35 0:00 -su icecast 22383 0.0 0.1 28532 1884 pts/0 Sl 20:36 0:00 icecast -c /usr/local/etc/stream-capa8.xml icecast 22390 0.0 0.1 15264 1128 pts/0 R+ 20:36 0:00 ps aux icecast 22391 0.0 0.0 6260 720 pts/0 S+ 20:36 0:00 grep icecast icecast@capa8-icecast:~$ netstat -lanp |grep 8000 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 22383/icecast
Si accedemos por http al puerto 8000 hay un interfaz web con el que podemos acceder a alguna información adicional con los passwords que hemos definido en el fichero de configuración.
http://10.228.192.220:8000/
Ahora vamos a mandar un stream webm con gstreamer.
Al igual que icecast, el día 21 de Mayo salió la versión 1.3.2 de gstreamer, así que esta también vamos a instalarla desde los sources. La instalación de gstreamer la hacemos desde otra máquina que no es donde está instalado el servidor de icecast.
La versión 1.2 disponible en los backports de wheezy es mucho más fácil de instalar y también soporta webm.
root@salnitre:~# vi /etc/apt/sources.list # debian backports deb http://ftp.de.debian.org/debian wheezy-backports main root@salnitre:~# apt-get update root@salnitre:~# apt-get install gstreamer1.0-tools libgstreamer1.0-0 libgstreamer-plugins-base0.10-0 -t wheezy-backports
Me he encontrado problemas con las dependencias del fichero libgstreamer-plugins-base0.10-0 y he tenido que forzar la instalación modificando las versiones de las dependencias (poco ortodoxo, lo reconozco).
dpkg-deb -x foo.deb tmpdir dpkg-deb --control foo.deb tmpdir/DEBIAN nano tmpdir/DEBIAN/control dpkg -b tmpdir hacked.deb
Mañana instalo una debian unstable a ver si da menos problemas con la stable, olvídate! :(
#############################
Ahora lo siguiente es streamear con gst-launch. Aquí algunos ejemplos que tendrían que funcionar, pero no funcionan! :( así que me vuelvo a atascar al final del post xD he pedido ayuda a ver si puedo acabar esta documentación :P
root@salnitre:/lib/x86_64-linux-gnu# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=320,height=240 ! vp8enc ! webmmux ! shout2send ip=10.228.192.220 port=8000 user=test password=test mount=/test.webm ERROR: no s'ha pogut construir el conducte: no hi ha cap element «v4l2src». root@salnitre:/lib/x86_64-linux-gnu# gst-launch-1.0 v4l2src device=/dev/video0 ! videoscale! video/x-raw,width=320,height=240 ! ffmpegcolorspace ! jpegenc ! tcpserversink host=10.228.192.220 port=8000 ERROR: no s'ha pogut construir el conducte: no hi ha cap element «v4l2src». root@salnitre:/lib/x86_64-linux-gnu# gst-launch-1.0 v4l2src device=/dev/video0 ! videoscale! video/x-raw,width=320,height=240 ! vp8enc ! ffmpegcolorspace ! jpegenc ! tcpserversink host=10.228.192.220 port=8000 ERROR: no s'ha pogut construir el conducte: no hi ha cap element «v4l2src». root@salnitre:/lib/x86_64-linux-gnu#
Pau Rodriguez-Estivill liked this on Facebook.