Desde que compre esta tarjeta para grabar los programas de cocina de mi mamá me vi en la penosa necesidad de usar windows por que no tenia ni idea de como configurar la grabación en Linux, de hecho, poder ver tv Linux con esa tarjeta ya era un reto. Después de meses procrastinando y leyendo le atine a como hacerlo y otra vez disfruto de no usar el otro OS.
Este how to es una pisca avanzado, pero procurare facilitarte la vida, pero ante todo:
¡LEE TODO ANTES DE EJECUTAR ALGO!
Un poco de teoría antes que todo
Lo primero que me percate en el proceso es que la tarjeta usa un chip genérico SAA7134, tal vez este HT sirva para otras tarjetas, Eso lo puedes ver por el comando lspci
Ahora bien, lo bueno de esto es que Linux ya tiene driver para este chip entonces ya tienes instalado el driver, lo no tan bueno es que tiene más de un driver (refiriéndome a la parte de sonido) y en el proceso esto nos entretendrá. Para entender el problema con el sonido hay que ver un poco el historial de los drivers de audio que Linux ha tenido, son 3: OSS (ubuntu ya no lo soporta), ALSA y PulseAudio (el más actual); el meollo del asunto, veremos, que los programas para usar la tarjeta apuntan al driver de OSS pero si no esta el driver pues no hay sonido.
... bueno empecemos
ALISTAR EL TV
Los fierros:
Buscando y probando encontré muchas opciones para tv en Linux pero al final solo 2 opciones me funcionaron una fue tvtime y otra mplayer, así que te recomiendo instalarlas.
si quieres por terminal:
sudo apt-get install tvtime mplayer
en este punto ya puedes usar tvtime configurar canales y escuchar... nada no hay sonido T.T
para usar el mplayer puedes usar este comando:
mplayer \
-tv driver=v4l2:device=/dev/video0:input=0:normid=0:width=496:height=371:chanlist=us-cable \
-vo xv tv://3
En español:
- Linea: El reproductor ¬¬
- Linea: Información para el programa de donde sacar el vídeo, en este caso -tv
- driver=v4l2 (video for linux) El driver de vídeo que utiliza
- device=/dev/video0 El lugar donde sale el vídeo (puede ser diferente a 0)
- input=0 0:TV 1:Composite 2:S-Video
- normid=0 0:NTSC 4:PAL 13:SECAM
- width=496:height=371 Tamaño de la pantalla
- chanlist=us-cable Para mi funciono como la opción cable... del manual: disponibles: europe-east, europe-west, us-bcast, us-cable, etc
- La salida
- xv Usa xorg, otra es GL usa OpenGL (en mi caso uso más cpu ¬¬)
- tv://3 El canal que quiera ver (si no pones canal iniciara en el ultimo canal o en el canal 0 {creo})
Con H y K podrás cambiar canales.
EL SONIDO
Ahora bien si no te sonó seguramente es por que usas un ubuntu con pulseAudio. Para solucionar esto primero debes de buscar donde está la tarjeta en el driver de sonido alsa
para eso usamos el comando de entradas de alsa y pedimos la lista de dispositivos:
arecord -L
Busca algo como:
hw:CARD=SAA7134,DEV=0la primera linea te dirá donde esta la tarjeta.
SAA7134, SAA7134 PCM
Direct hardware device without any conversions
Para TVTime:
En este paso todavía estoy jugando, el problema aquí es un retraso de sonido pequeño.
Ármate un script con lo siguiente:
#!/bin/sh
arecord -D hw:SAA7134,0 -r 32000 -c 2 -f S16_LE | aplay - & tvtime -M;
wait 1 tvtime
killall arecord;
killall aplay;
killall tvtime
El script hace que escuche y a continuación reproduzca lo que la tarjeta envíe, arecord escucha el device (-D) hw:"card","dev" (que encontramos anteriormente), el resto son parámetros de como entra el audio, aplay reproduce el sonido y tvtime muestra la imagen.
Para MPlayer:
A diferencia de TVTime no hay retraso de sonido, pero no se como cambiar canales enviando el canal (pasar del 3 al 8 sin ver los canales intermedios), para agregar el sonido solo hay que agregar más parámetros a -tv:
mplayer \
-tv driver="mucho texto":alsa:adevice=hw.SAA7134:amode=1:audiorate=32000:immediatemode=0 \
-vo xv tv://22
Donde:
- alsa le dice que use el driver de alsa (¬¬)
- adevice=hw."card""dev" (alsadevice)
- amode=1 1:Estereo 2y3:SAP (no me funciono)
- audiorate=32000 La calidad de sonido que da la tarjeta
- immediatemode=0 Suena conectado normalmente (1 el sonido sale por el conector verde de la tarjeta)
En este punto ya puedes ver tv sin problema...
ALISTAR LA GRABADORA
UPDATE1: Uno de los problemas que vi en el proceso fue que si grababa no reproducía, gracias a este script doy solución.
agrega justo al final de la linea la letra & y agrega:
mencoder "blablabla" &
sleep 1
mplayer $PATH1/${TODAY}_${NOW}_CH.mp4 -vo xv
killall mencoder
Una de las razones para comprar la tarjeta era grabar digitalmente y dejar atrás los cassettes (mi mamá tiene como 15). En Linux es hasta fácil grabar después de todo gracias a mplayer y si gemelo mencoder.
El comando estrella es:
mencoder \
-tv driver=v4l2:device=/dev/video0:input=0:normid=0:alsa:adevice=hw.2:amode=1:audiorate=32000:immediatemode=0:width=496:height=371:chanlist=us-cable \
-ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=600 \
-oac mp3lame -lameopts cbr:br=64 \
-endpos 15 -o tvchachi.avi tv://
Donde:
- -tv "y el resto" es el driver del vídeo eso ya lo vimos
- -ovc (Output Video Codec) el codec de vídeo a usar
- -oac (Output Audio Codec) el codec de audio a usar
- -endpos # tiempo que desea grabar (#:Segundos 02:05:0 2 horas 5 minutos 0 segundos) este es opcional
- -o nombre-de-archivo.avi (Output) archivo de salida
- tv://# Canal que desea grabar
Para programar grabaciones es bueno usar cron y un script (mira un ejemplo), hay una practica interfaz gráfica llamada gnome-schedule para programar cuando grabar
ALISTAR EL CONTROL
Por ultimo el control de por si funciona sin necesidad de Driver... pero no como uno quiere. En Linux se puede configurar como uno quiera para esto primero instalamos ir-keytable
sudo apt-get install ir-keytable
al usar el comando inicialmente lista los sensores InfraRojos:
Found /sys/class/rc/rc0/ (/dev/input/event4) with:
Driver saa7134, table rc-kworld-plus-tv-analog
Supported protocols:
Enabled protocols:
Repeat delay = 500 ms, repeat period = 33 ms
La información que nos da es muy valiosa por ejemplo table rc-kworld-plus-tv-analog nos dice que configuración de botones está usando,Supported protocols: que protocolos soporta (no aparece ninguno entonces es desconocido UNKNOWN). En las carpetas /etc/rc_keymaps /lib/udev/rc_keymaps/ se alojan las posibles configuraciones a usar, selecciona la tabla que se este usando y la editas si quieres (mira la lista de opciones aquí )
mira mi configuración (para el control de la foto)
una cosa a tener en cuenta, hay unas teclas que se mezclan por ejemplo el 1, 2 y 3 y las direccionales, yo preferí el uso de las direccionales, igual para esto alguien me dijo que se puede parchear el kernel y ya, pero como no se ahora entonces lo dejo así (por el momento).
Para ver teclas => id usa sudo ir-keytable -t cuando ya tengas listo el archivo puedes probarlo con las siguientes lineas
sudo ir-keytable -c
sudo ir-keytable -w /etc/rc_keymaps/"tabla configurada"
sudo ir-keytable -t
Para fijar permanentemente la configuración edita el archivo /etc/rc_maps.cfg y saca de comentario la linea de la configuración que editaste guarda y listo
por ultimo como los botones que presionas son parte de un estandar, fácilmente puedes modificar su función en el gestor de atajos del teclado
FUENTES:
http://forum.xbmc.org/showthread.php?t=101151
linuxtv.org/wiki/index.php/Saa7134-alsa
https://patchwork.kernel.org/patch/888492/