30/12/2007

Herramientas para manipulación de vídeo I - Captura

Ya que GNU/Linux es el sistema operativo más utilizado por las grandes compañías productoras de cine en Hollywood(95% de los servidores en empresas como Disney/Pixar, DreamWorks Animation, Sony, ILM, y otras), vamos a echar un vistazo a diferentes herramientas muy interesantes, para la manipulación de vídeo. Aunque en dichas empresas existen requerimientos que casi ninguno de los mortales necesitamos, vamos a revisar aplicaciones más enfocadas a usuario final para así poder realizar tareas básicas como captura, edición no linear, codificación, manipulación de subtítulos, streaming, etc...

Primero que todo, vamos a utilizar una capturadora de las más económicas del mercado, y también bastante anticuada, pero esa es la que tengo, una Kworld con chip bt878, en mi caso particular, ya que el kernel no me detecta exactamente el tipo de chip de mi Kworld, debo configurarla manualmente. Como root verifico si el módulo bttv se encuentra cargado, y me dispongo a bajarlo.

su - lsmod | grep bttv

bttv 159797 1 bt878
video_buf 22469 1 bttv
ir_common 33477 1 bttv
compat_ioctl32 5313 1 bttv
i2c_algo_bit 9157 1 bttv
btcx_risc 7881 1 bttv
tveeprom 17617 1 bttv
i2c_core 21825 5 bttv,nvidia,i2c_viapro,i2c_algo_bit,tveeprom
videodev 28097 1 bttv
v4l2_common 18625 2 bttv,videodev
v4l1_compat 15941 2 bttv,videodev


Como vemos el módulo bttv esta siendo utilizado por el bt878, pero si pruebo con una aplicación como tvtime, no me detecta ningún canal, y tampoco me funciona la radio(gnomeradio). Por lo tanto debo configurarlo manualmente.

rmmod bt878
rmmod bttv

modprobe bttv card=75 tuner=17 radio=1

Los valores para cada tarjeta se pueden verificar o bien en las fuentes del módulo bttv en el kernel, o en listados en la red mjwired ,este procedimiento se debe realizar únicamente si nuestra tarjeta de captura no es bien detectada por el kernel, de lo contrario, no es necesario.

En los ejemplos siguientes, vamos a conectar un reproductor de DVD a la entrada de supervideo de la capturadora, la salida del sonido de dicho reproductor va conectada a la entrada de línea de la tarjeta de sonido (casi siempre la entrada azul), además debemos verificar que el line-in se encuentra activado y con volumen.

La tarjeta de sonido es una soundblaster live; si al dar doble click en el controlador de volumen, no aparecen todas las opciones como debería ser, simplemente hay que activarlas en el menú EDITAR>>PREFERENCIAS.

Cuando tengamos los valores adecuados para nuestra capturadora, simplemente hay que dejarlos de forma definitiva en nuestro sistema, para eso editamos el archivo /etc/modprobe.conf, y añadimos los valores necesarios para el buen funcionamiento de la tarjeta:

sudo nano /etc/modprobe.conf

y añadimos:

alias char-major-89 i2c-dev
alias char-major-81 videodev
alias char-major-81-0 bttv
options bttv card=75 radio=1 tuner=17


Obviamente modificando los valores adecuados para cada tipo de tarjeta...

Así nuestro sistema estará listo para empezar el proceso de captura, podemos probar el buen funcionamiento del hardware con tvtime,

sudo yum install tvtime

En este caso activamos la entrada de supervideo en tvtime, para poder ver lo que reproduce el DVD.


Lo que sigue es tener instaladas las herramientas que nos van a permitir capturar dicho video, y poder guardarlo en archivos para su almacenamiento o posterior reproducción.....

11 comentarios:

Rafa dijo...

Muy buen trabajo, como siempre.

Estamos haciendo un artículo que creo que se complementará perfectamente con tu labor y es que tenemos lista toda la información acerca de como instalar mythtv y fedora de golpe partiendo de la idea que vamos a explicar como descargar mythtv y compilarlo en su última versión.

Creo que va a resultar al pelo el echo de unirlo al trabajo que estás haciendo tu.

Saludos y felicidades

masch dijo...

Hi!
I have some questions please:
How can a get thats modules? I'm using modprobe with some parameters and i can't find it.
Another question, Your model is:
79 78 -> Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF [0a01:17de]
Why do you used card=75 tuner=17 radio=1??'
I'have 22 21 -> Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50, Which values should i'use?

Thanks! And Happy New Year!
Salu2...

Anónimo dijo...

Listo rainman, como ando de vagaciones, voy a escribir toda la serie sobre video que pienso publicar ahora en los primeros días de enero.

Anónimo dijo...

Hola!..
Justamente luego de ver el comenario de masch tengo el mismo problema, como sabes que tu placa es la 75, radio= 1 y tuner 17?? ya que tu placa segun lo que entiendo es modelo 79.
Y donde prodria encotrar esos modulos del kernel...vienen por defecto?

Saludos y felicidades.

sangrenegrv dijo...

masch, i found my numbers with trial and error, but the lspci command can help too much.
For example mi lspci is:

00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
00:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)

It's not the same as
0a01:17de

The command dmesg | grep bttv can help too.

Look the diference between the autodetection

bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:00:0a.0, irq: 193, latency: 32, mmio: 0xefffe000
bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=003fffff [init]
bttv0: using tuner=-1

And my configuration..

bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:00:0a.0, irq: 193, latency: 32, mmio: 0xefffe000
bttv0: using: Powercolor MTV878/ MTV878R/ MTV878F [card=75,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=003fffff [init]
bttv0: using tuner=17


You can use this script that can help to find yourd card number, like root:

#!/bin/sh

TT=0

until [ "$TT" = "100" ]; do

rmmod bttv
modprobe bttv tuner="$TT"
echo $TT
tvtime

echo "enter TT"
read TT

done

*************

In this site you can found help to configure the tuner..
http://linuxtv.org/v4lwiki/index.php/LifeView

sangrenegrv dijo...

Ale, lo mismo te digo, verifica con el lspci, y con el dmesg, luego corre el script como root hasta que el tvtime te de la señal como debe ser....

Y claro, los módulos vienen en el kernel predeterminado, a menos que hayas compilado un kernel tu mismo y no hayas incluido el soporte v4l.

sangrenegrv dijo...

Y FELIZ AÑO Y PROSPERO AÑO NUIEVO PARA TODOS...

Rafa dijo...

Feliz Año igualmente para todos

Anónimo dijo...

Hola, gracias a tu post pude hacer andar la placa de TV FlyVideo98 !! GRACIAS!!!!..
La deteccion fue automatica, anda tanto en el entrada Composite como en la entrada de TV. Pero no todo es color de rosa...:(
Si bien anda la entrada de TV, se ve un canal al azar y no puedo sintonizar ningun canal. Probe las combinaziones distintas del TVView y no puedo hacerlo andar. Te comento que soy de Argentina y estoy tratando de usar el Cable local llamado Cablevision con senal PAL-N.
Tendrias algun dato mas para ayudarme??..

Gracias por todo y Salu2...

Anónimo dijo...

Hola! Soy yo de nuevo....:D
Eh podido gracias a tu ayuda y la del Sr. Google hacer andar perfectamente mi placa poniendo los valores
options bttv card=21 tuner=5 radio=0 mas lo tuyos.....:D

Gracias por todo y VIVA LINUX!1...
..............:D

PD: Tengo un amigo que tiene una placa de TV D-LINK USB MPEG Encoder TV Tuner DUB-T210, tenes idea si esta forma que vos das funciona?

Salu2...

sangrenegrv dijo...

Ale, ese tipo de capturadora necesita un módulo distinto al bttv, debe utilizar el em2880...

http://mcentral.de/wiki/index.php/Em2880

El proceso es mucho más complejo, dile a tu amigo que lea ese wiki, y si tiene algún problema o no comprende algo, solamente pregunta por acá...