Video en tiempo real y usando codecs libres
Una guia de como montar streams y servidores icecast se desarrollo junto a SLEC aca: http://www.slec.net/HacerStreamDeVideoConSoftwareyCodecsLibres
Aqui tomaremos algunos apartes y profundizaremos en otros, en vista del FLISOL2007: http://www.installfest.info/
Tambien trazamos un vinculo de amistad y alianza con el proyecto Estudiolivre Brasil
Tenemos tambien un LiveCD llamado PlanktumII que permite hacer streams de video usando puredata (pronto documentaremos dicho software) o freej, tambien incluye Theorur y los programas: dvgrab | ffmpeg2theora | oggfwd . Se puede descargar de aca: http://bekstation.bek.no/immigrante/ son 439megas
Contents
Programas para emitir video via icecast y en formato ogg/theora
Streaming de Audio y Video utilizando webcams
Freej
Primero verfique que su webcam este soportada bajo gnu/linux e instale el modulo correspondiente, sino tiene una webcam pero se dispone a comprar o pedir una prestada, en esta tabla podra buscar si existe un driver para el kernel de linux que la controle bajo v4L (video for linux): http://www.qbik.ch/usb/devices/showdevcat.php?id=9
Usaremos freej de www.dyne.org (los mismos de DyneBolic) que se encargará de controlar la webcam (capturar el video del dispositivo v4l) y generar un archivo .ogg a partir de su entrada.
Si se quiere tener la posibilidad de sobre imponer texto al video, es necesario instalar libfreetype6, en debian: apt-get install libfreetype6-dev
kysucix el developer de FreeJ agrego, por nuestro "feature request", la opción que permite determinar el numero de cuadros por segundo a lo que emitiremos: -f <#fps>, por esto, lo invitamos a usar el codifo mas fresco de freej bajandolo via subversion, los siguientes pasos permitirán una instalación indolora.
De nuevo, en varias diestribucciones
Compilacón del freej desde el subversion para Streaming de Audio y Video
Asegúrese de tener los paquetes : libtool y automake1.9, svn o subversion
apt-get install libtool automake1.9 subversion o pacman -S subversion
Posteriormente descargue las fuentes de freej
svn co svn://code.dyne.org/rastasoft/freej
Vaya al directorio trunk y comience la instalación
cd freej cd trunk
y comience la construcción de su nuevo paquete
./autogen.sh
y como de costumbre :
./configure --prefix=/usr make make install
NOTA 1: Como deciamos anteriormente, la versión de SVN (subversion) nos permite usar el flag: -f # (#=framerate o número de cuadros por segundo al que emitiremos).
NOTA 2: Para poder compilar freej desde el SVN, en varias distribuciones y en algunos casos se debe compilar a mano la siguiente librería:
http://download.savannah.gnu.org/releases/freetype/freetype-2.1.10.tar.bz2
Acá se encontro kleper la Solución: http://lists.dyne.org/freej/msg00277.php
asi queda listo el sistema para compilar el freej.
Otras opciones
Tambien se puede utilizar un binario
esto le funciono a una persona que intento instalar el .deb de la pagina de freej:
00:28 < ad|> intentaste con el .deb que hay en freej.dyne.org ? 00:29 < diablo> freej-0.8.1-i586-1.deb 00:29 < diablo> no pude instalar porque me sale error de arquitectura 00:29 < ad|> es verdad 00:29 < diablo> que la mia es i386 00:30 < ad|> queda una posiblidad 00:30 < ad|> ya que te metiste por el lado de svn 00:30 < ad|> la idea es bajar una revision anterior 00:30 < ad|> e intentar compilar esa 00:30 < ad|> si queres intentar eso decime y busco el numero 00:30 < diablo> bueno gracias 00:32 < ad|> svn co -r 754 svn://code.dyne.org/rastasoft/freej 00:35 < diablo> ya me funco el freej 0.8.1 00:35 < ad|> que era? 00:35 < diablo> lo quer hice fue: 00:35 < ad|> instalaste tbt 00:35 < diablo> bajarme el rpm de redhat 00:36 < ad|> ok 00:36 < diablo> luego lo converti con el alien a .deb 00:36 < ad|> muy bien 00:36 < ad|> vamos a ver si funciona 00:36 < ad|> la camara que tenes funciona con que modulo? 00:37 < diablo> spca5xx 00:37 < ad|> es decir, ya la tenes bien instalada :) 00:37 < ad|> cuando haces: 00:38 < diablo> si funca haciendole freej /dev/video0 00:38 < diablo> ahora como pruebo el streaming? 00:38 < ad|> freej /dev/video0 -s 320x240 -T 5 -V 2 -i http://giss.tv:8000/flisoltv.ogg -p tXXXX 00:39 < ad|> cerra y volves a abrir con esa linea 00:39 < ad|> cuando estes adentro haces ctrl+w 00:40 < diablo> ok 00:41 < ad|> si 00:41 < ad|> te veo 00:41 < ad|> se corto 00:42 < ad|> pero llego el stream 00:42 < diablo> gracias
Pruebas de uso de freej
Una vez instalado, se puede usar :
freej /dev/video0 -s 160x120 -T 6
Hay que asegurarse que el device video0 si corresponda al lugar donde monta el dispositivo (webcam) puede ser que este en video1 dependiendo de las cosas que se tengan conectadas o si se usa una tarjeta de video, etc. el flag -s en freej obecede al tamaño (size) de la ventana de visualización, para este caso decidimos usar 160x120 ya que es una prueba y nuestra intención es hacer streamings a personas que posiblemente usan un módem para conectarse y no tienen ancho de banda suficiente para bajar un stream de mayor tamaño. la -T en freej obedece al codec (compresion/decompresion de video) theora que es ogg video, la calidad escogida es 6, baja tambien debido a las restricciones de ancho de banda, pero se puede experimentar con números mayores, por defecto es 16.
Hay más opciones, como sobreimponer un logo en formato png o algún subtítulo, simplemente se requiere agregar las rutas a ambos archivos: mask.png subtitle.txt si se quiere hacer un stream de solo video se puede agregar el flag -a, para que no capture el sonido, porque por defecto freej lo hace.
Es importante tener claro que freej es una herramienta para mezclar video en tiempo real y que se puede jugar con video sin hacer necesariamente un stream (emision en tiempo real a traves de internet)-
tomado de un chat con alexfer en popayan, colombia:
<alej00d> algo clave a entender es que freej funciona por capas <alej00d> entonces una capa es el video de /dev/video0 <alej00d> otra podra ser texto que creas con ctrl+t <alej00d> para poner una capa sobre la otra tenes las teclas de PgUp pagina arriba y PgDown <alej00d> para hacer una capa transparente haces ctrl+b <alej00d> ahi escoges que tipo de tratamiento le das a la capa, red, alpha, mult, etc.. <alej00d> es cuestion de jugar
Interacción de freej con icecast
La ejecución de freej de la siguiente forma, permitiría que icecast pueda ofrecer a muchas personas la visualización.
freej /dev/video0 -s 160x120 -T 6 -V 3 -i http://localhost:8000/mivideo.ogg -p miclave
La -V obedece al bitrate, lastimosamente no esta bien documentada por parte de sus desarrolladores asi que se debe jugar con el valor y comparar con mplayer como esta llegando la señal al otro lado, mplayer nos dira el bit rate exacto. La -i determina el lugar donde está el servidor de stream, suponiendo que icecast está configurado en el puerto 8000 en localhost. Por último la -p obecede al password en en servidor que recibe sl stream y debe encargarse de su d distribucion, por supuesto que debe coincidir
En la ventana de ncurses de freej puede usar C-h para obtener ayuda, para que efectivamente inicie la interacción entre freej e icecast se emplea C-w, y para poder visualizar localmente el streaming se emplearía :
Notará que la ventana que despliega mplayer tiene un retardo comparada con la pantalla de visualización de freej. Delay debido al viaje de los paquetes a traves de la red.
Freej graba todo lo que emite en formato de video ogg theora, los archivos son nombrados freej-*.ogg, para evitar la generacion de dichos archivos se puede agregar esto a la linea de comando: -e /dev/null (aunque la última vez que lo intente no me funciono, esto es un wiki asi que diganos si a Ud. si le funciono
PureData
AUDIO OGG
para hacer stream de audio ogg usar el objeto oggcast~
parche demo s-a-stream.pd
( UnderConstruction :-D )
Streaming de Audio y Video utilizando camaras minidv
Theorur
Este es otro programa que nos permite hacer streams de video usando software libre.
para compilarlo bajo slackware les recomiendo usar este repositorio:
http://slack.sarava.org/slackbuilds/
antes de compilar theorur debemos tener instaladas:
libtheora ffmpwg2theora (que depende de ffmpeg) dvgrab
en slackware todas esas librerias se pueden bajar del link que publicamos mas arriba. en otras distros lo mas recomendable es compilar todo desde sources, nada de "the debian way" porque se llenan de paquetes viejos que podran ser estables pero no compaibles con el ffmpeg2thoera mas reciente que es sobre el que esta fundamentado todo, de hecho mas adelante veremos como hacer un stream solo desde la consola. Theorur es basicamente un fornt end en gtk para una liena de comando que seria mas o menos esto:
dvgrab | ffmepg2theora | oggfwd
Una vez tengamos Thoerur instalado veremos lo facil que es hacer un stream (poner screenshots aca)
otra forma es directamente desde una consola
Streaming de Audio y Video utilizando camaras minidv en consola
Al igual que para hacerlo con el theorur se necesitan dvgrab 2.0, ffmpeg2theora 0.17 oggfwd 0.2
Ejemplos
Formato para doble commpresion :-D Linea que guarda 2 archivos desde la camara miniDV uno con resolucion a 720x480 y el otro a 320x240
dvgrab --format raw - | ffmpeg2theora -f dv -H 44100 -a 4 -v 10 -x 720 -y 480 -F 29 -c 2 -o /dev/stdout - | tee 720.ogg | ffmpeg2theora -f ogg -H 22050 -a 2 -v 3 -x 320 -y 240 -F 7 -c 1 -o /dev/stdout - | tee 320.ogg | oggfwd -p -d "descripcion" -g "genero-no-aplica" -n "nombre" -u "adsfasf" cpclibre.org 8000 ***** /m3tv.ogg
Si quieren transmitir un vídeo especifico ya grabado pueden usar la siguiente linea de comando:
cat video.mpg | ffmpeg2theora -v 2 -a 0 -x 320 -y 240 -H 11025 -o /dev/stdout - | oggfwd servidor-icecast2-conTheora.net 8000 password /puntodemontaje.ogg
mas simple
dvgrab --format raw - | ffmpeg2theora -f dv -x 320 -y 240 -v 2 -a 0 -H 11025 -o /dev/stdout - | oggfwd giss.tv 8000 clave /puntodemontaje.ogg
Streaming de Audio y Video utilizando camaras minidv desde Window$
Visonair
Aunque este un programa que funciona sobre winblows, lo queremos documentar ya que permite el uso de codecs libres. Kalashnikov aka juan lo hizo mientras le ayudabamos a Haidai que vive en Maui, Hawaii y prepara sin mucho saber, un stream de la visita del Dalai Lama en Abril del 2007.
Acá esta el tutorial para como hacer: streams con visonair
Y, aca el log del canal #altred que cuenta como alguien, desde Hawaii, monto con nuestra ayuda su primer stream, valga la aclaracion que juan monto un stream desde medellin con el que guio a Haidai en Maui, no se ve el link en la imagen del mapa de abajo, pero si se ve que desde Europa lo seguiamos otros. chatlog
Streaming de Audio utilizando MUSE, XMMS, y otros
Software Libre y Multimedia
Convirtiendo Videos de un formato a otro
mencoder
ffmpeg
otros
Editar Video
Avidemux
kino
lives
cinelerra
Editar Audio
audacity
Referencias
Howto de oggfwd : una herramienta para capturar video de la webcam sin mezcla y sin necesidad de abrir una ventana adicional, pure command liners.
Visite el canal #altred de freenode, podrá recibir ayuda en la configuración
UsoCamarasWeb Configuración de una webcam en linux.
Colaboración
Apartes de este documento salieron de botánica alejoATaltred.net. Ikks de Slec.net lo mejoro y ahora lo retomamos acá en Altred para actualizarlo a las necesidades del FLISOL07 y otras mas como el dorkbot medellin, el m3lab, etc. kalashnikov aporto el tutorial de visonair. Sparkid y kleper con especial practica en ffmpeg2theora | oggfwd basados en la experiencia de http://hackitectura.net
- La idea de esta pequeña guia sale de las preguntas que me han hecho y yo mismo me he formulado sobre el tema de streaming de video y audio utilizando software libre.
Los diferentes software que se pueden utilizar aqui estan empaquetados para GNU/Linux Debian/Ubuntu, por eso recomiendo esas dos distribuciones para las personas que no tienen experiencia compilando o instalando software de forma manual en GNU/Linux.
[Description Libra]
