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

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

Colaboración

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]

cat

cat

ALTRED: streaming (last edited 2007-11-08 20:25:45 by 193)