Siguiendo con la linea de captura de TV tanto analógica como TDT he conseguido mediante un simple script hacer las funciones siguientes:
- Grabar de TDT
- Grabar de analógica
- Ver la TDT
- Ver la analógica
- Grabar Radio digital TDT
- Grabar de los canales de captura Composite y S-Vídeo
Para realizar estas funciones, he utilizado un entorno de ventanas de aviso con zenity ( gnome ) por lo que este script necesita tener instalado:
- mplayer
- zenity
- mencoder
- dvb-app ( para generar la lista de canales channels.conf
- Una tarjeta capturadora de Tv con entradas Composite y S-VIDEO
Una aclaración importante. Este script está optimizado para usar la capturadora AVER VOLAR HX que permite grabar y capturar mediante usb. Si posee una deberás de instalar el driver de avermedia para tu modelo. Si usas otro tipo de tarjetas, quizás puedas usar este script modificando las lineas de mencoder y mplayer que son las que realmente realizan el trabajo y quizás necesites quitar algún elemento del menú.
Este es el script en cuestión, y he de decir que no me ha quedado muy limpio, pero funciona ( si a alguien se le ocurre algo mejor....:) ).
#!/bin/bash
ACCION=$( zenity --list --title="Multimedia" \
--column="" --column="ORDEN" --column="ACCION" \
--radiolist \
TRUE 1 "VER" \
FALSE 2 "GRABAR"
)
case $? in
1) zenity --info --text="Usted ha cancelado....Valor devuelto= 1";;
-1) zenity --error --text="Error grave. Valor devuelto= -1";;
esac
FUENTE=$( zenity --list --title="Multimedia" \
--column="" --column="ORDEN" --column="ACCION" \
--radiolist \
TRUE 1 "TDT" FALSE 2 "ANALOGICA" FALSE 3 "S-VIDEO" FALSE 4 "COMPOSITE"
)
case $? in
1) zenity --info --text="Usted ha cancelado....Valor devuelto= 1";;
-1) zenity --error --text="Error grave. Valor devuelto= -1";;
esac
case $ACCION in
1) case $FUENTE in
1) canalTDTver=$(zenity --entry --title="Introduzca el nombre del canal TDT" --entry-text="Teledeporte")
zenity --info --text=" Para ver tv en pantalla completa pulse f y para cambiar de canal use k o h. El volumen se contola con la tecla de dividir y de multiplicar del teclado numérico. Cuando pulse aceptar elija un canal o deje el que está por defecto."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mplayer dvb://$canalTDTver;;
esac;;
2) canalANAver=$(zenity --entry --title="Introduzca el número de canal de TV entre 21 a 69" --entry-text="45")
zenity --info --text=" Para ver tv en pantalla completa pulse f y para cambiar de canal use k o h. El volumen se contola con la tecla de dividir y de multiplicar del teclado numérico. Cuando pulse aceptar elija un canal o deje el que está por defecto."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mplayer -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:chanlist=europe-west:channel=$canalANAver:alsa:adevice=hw.2:forceaudio:immediatemode=0 tv://;;
esac;;
3) zenity --info --text="Comezará a visualizarse desde el canal S-VIDEO. Conecte el video o cámara al conector S-Video correspondiente y luego pulse aceptar para comenzar a ver su video.\n Para parar el reproductor pulse q o cierre la ventana."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mplayer -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:input=2:alsa:adevice=hw.2:forceaudio:immediatemode=0 tv://;;
esac;;
4) zenity --info --text="Comezará a visualizarse desde el canal Composite. Conecte el video o cámara al conector RCA correspondiente y luego pulse aceptar para comenzar a ver su video.\n Para parar el reproductor pulse q o cierre la ventana."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mplayer -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:input=1:alsa:adevice=hw.2:forceaudio:immediatemode=0 tv://;;
esac;;
esac;;
2) case $FUENTE in
1) canal=$(zenity --entry --title="Coloca Canal TDT" --text="Ponga el canal que quiere grabar.Debe tener el mismo nombre que en channels.conf. \nLa 1\nLa 2\n24h\nClan\nCanal Sur TV\nCanal Sur 2 Andalucia\nTeledeporte\nVEO7\nSONY TV en VEO\nTienda en VEO\nGUIDE PLUS+\nIntereconomía\nlaSexta\nCUATRO\nCNN+\n40 LATINO\nCANAL CLUB\nTelecinco\nFDF\nLaSiete\nCincoshop\nDisney Channel\nANTENA 3\nANTENA.NEOX\nANTENA.NOVA\n" --entry-text="Teledeporte")
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mencoder dvb://$canal driver=v4l2:mjpeg:decimation=1:device=/dev/video1:alsa:adevice=hw.2:forceaudio:immediatemode=0 -oac mp3lame -lameopts cbr:br=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500:aspect=16/9 -endpos 2:05:00 -o video.avi tv://;;
esac;;
2) zenity --info --text=" Ponga el canal que quiere grabar. No se verá ninguna ventana con video por lo que deberá de pulsar Control+C para parar la grabación.\nAntena 3 en canal 45\nLa Sexta 48\nLa 2 en el 59\nCanalSur en 62\nLa 1 en el 65\nTelecinco en 42\nCuatro en 39\nCanalSur2 en 35\nMálagaTV en 56\nOndaAzul en 53\nCostaSolTV en 38\nxxx en 31,25,21,34,36,40,41,64 y 54"
canal=$(zenity --entry --title="Coloca Canal UHF" --text="Introduzca canal" --entry-text="45")
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mencoder -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:chanlist=europe-west:channel=$canal:alsa:adevice=hw.2:forceaudio:immediatemode=0 -oac mp3lame -lameopts cbr:br=128 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1500 -o video.avi tv://;;
esac;;
3) zenity --info --text="Comezará a grabarse desde el canal S-VIDEO. Conecte el video o cámara al conector S-VIDEO correspondiente y luego pulse aceptar para comenzar a grabar. Para parar de grabar pulse Control+C en la ventana terminal."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mencoder -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:input=2:alsa:adevice=hw.2:forceaudio:immediatemode=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000:aspect=16/9 -endpos 2:05:00 -o capturando.avi tv://
# con esta linea hemos hecho captura en formato mpeg4 en formato 16/9 y con una duracion máxima de 2 hora y 5 minutos.
;;
esac;;
4) zenity --info --text="Comezará a grabarse desde el canal COMPOSITE. Conecte el video o cámara al conector RCA correspondiente y luego pulse aceptar para comenzar a grabar. Para parar de grabar pulse Control+C en la ventana terminal."
case $? in
1) zenity --warning --text="El usuario ha cancelado";;
-1) zenity --error --text="Error inesperado";;
0) mencoder -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:input=1:alsa:adevice=hw.2:forceaudio:immediatemode=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000:aspect=16/9 -endpos 2:05:00 -o capturando.avi tv://
# con esta linea hemos hecho captura en formato mpeg4 en formato 16/9 y con una duracion máxima de 2 hora y 5 minutos.
;;
esac;;
esac;;
esac
Voy a desgranar un la orden de mencoder para ver todas las opciones. Por ejemplo, usaremos la línea que graba desde el canal Composite.
mencoder -tv driver=v4l2:mjpeg:decimation=1:device=/dev/video1:input=1:alsa:adevice=hw.2:forceaudio:immediatemode=0 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=5000:aspect=16/9 -endpos 2:05:00 -o capturando.avi tv://- mencoder -tv : Opcion para grabar desde TV ( canal interno 0)
- driver=v4l2 : Usa el driver v4l2 que usa linux ( video for linux version 2 ).
- mjpeg:decimation=1 : Esto se usa para que la capturadora utilice su hardware para codificar en mjpeg sin usar apenas la cpu y decirle que use la máxima resolución de pantalla que pueda la tarjeta.
- device=/dev/video1 : Mi capturadora la detecta como /dev/video1, usa la tuya con el valor dev correcto
- input=1 : Se refiere al canal a grabar. O es para TV, 1 para Composite y 2 para S-Video
- alsa:adevice=hw.2 : Para mi tarjeta usa el valor 2 puede ser que la tuya sea 1
- foceaudio:inmediatemode=0 : Debes de colocarla tal cual, sino no se grabará sonido alguno.
- -oac mp3lame : Codifica audio a mp3 usando mp3lame
- -ovc lavc -lavcopts vcodec=mpeg4.... : Se usa las opciones del video a coficar en mpeg4
- aspect=16/9 : Para dar formato 16/9 (panorámico a la captura)
- endpos 2:05:00 : Para parar la grabación a las 2 horas y cinco minutos y cero segundos
- -o capturando.avi : Es la salida, nuestro video que debe ser en formato .avi
Hay que tener en cuenta que el archivo "channels.conf" debe estar ubicado en /home/usuario/.mplayer/channels.conf y puedes generalo con w_scan o con scan:
$scan es-Malaga|tee channels.conf Para consultar las opciones de mencoder y mplayer la mejor manera es google o bien a través del manual en consola.