miércoles, 6 de mayo de 2015

Grabar un canal de televisión tdt con Videolan de forma automatizada

En el tema Videolan: ver televisión tdt se explicó como ver canales de tdt con Videolan, y como grabarlos con un click sobre el icono adecuado, aunque para ello debemos estar presentes en el momento en el que queremos empezar a grabar el canal tdt.
En este tema vamos a explicar como poder grabar un canal tdt a una hora determinada, durante un tiempo determinado, sin que tengamos que estar presentes en ese momento para hacer manualmente click sobre el icono adecuado.
Para llevar a cabo lo que se indica en este tema se da por sentado que se ha realizado previamente lo indicado en el enlace de la primera línea de este tema.

1) Debemos asegurarnos de que el sistema esta configurado para que no se active el protector de pantalla, ni se apague nunca la pantalla.

2) Debemos editar el archivo Channels.conf para que en él aparezca en primer lugar el canal de tdt que queremos grabar.
Abrimos Videolan y abrimos el archivo Channles.conf para confirmar que se empieza a ver el canal que queremos. Nos aseguramos de que Videolan se ejecuta siempre ocupando el mismo espacio en la pantalla, por ejemplo que se vea siempre a Pantalla Completa ( abrimos Videolan y tecleamos la tecla F11)  y que por lo tanto el botón de grabación esta siempre en las mismas coordenadas.
 
3) Creamos un script ( http://hatteras-blog.blogspot.com.es/2008/04/como-crear-un-script-basico.html) que hará que 1) se inicie Videolan reproduciendo el canal tdt que hemos puesto en primer lugar en el archivo Channels.conf, 2) al cabo de un tiempo determinado, el cursor del ratón se mueva hasta situarse sobre el botón Grabar de la barra de herramientas de Videolan



, y 3) a continuación se empiece a grabar el canal tdt durante un tiempo determinado. Mientras se esta grabando el fondo del icono Grabar cambia ligeramente de color, y cuando se acaba de grabar vuelve a cambiar a su fondo de color original.
Dicho script tiene el siguiente contenido:

    #!/bin/bash
    vlc /home/usuario/Canales-TDT/Channels.conf && sleep 1m && \
    xte 'mousemove 22 775' && xte 'mouseclick 1' && \
    sleep 1m && \
    xte 'mousemove 22 775' && xte 'mouseclick 1'


Donde, podemos modificar los siguientes parámetros:
a)  /home/usuario/Canales-TDT/Channels.conf es la dirección en donde hemos guardado el archivo Channels.conf
b) sleep 1m indica el tiempo, 1 minuto, que pasa desde que ejecutamos el script hasta que el cursor del ratón se mueve hasta la posición que le indicamos con las coordenadas, y empieza la grabación ( con el comando xte 'mousemove 22 775' && xte 'mouseclick 1' )
c) 22 775' son las coordenadas en las que se localiza el puntero del ratón, a donde queremos que se mueva hasta estar encima del icono Grabar de la barra de herramientas de Videolan. Estas coordenadas las iremos adecuando a la pantalla de nuestro pc, con Videolan en pantalla completa, mediante la ejecución del script y a base de ir probando hasta que veamos que el cursor del ratón acaba moviendose hasta quedar situado por encima del botón Grabar de la barra de herramientas de Videolan.
El establecimiento de estas coordenadas es lo que mas tiempo nos va a costar calcular, pero una vez calculado ya no tenemos que volver a calcularlas.
d) sleep 1m es el comando que hace que se grabe durante 1 minuto, ya que transcurrido ese tiempo se ejecuta la siguiente linea de comandos ( xte 'mousemove 22 775' && xte 'mouseclick 1' ) que hace que se deje de grabar, al volver a hacer click en el botón Grabar.

Guardamos dicho script con el nombre grabar-vlc.sh en la dirección que queramos, por ejemplo en la carpeta en la que tenemos nuestros scripts particulares: /home/usuario/scripts
 
Lo  ejecutamos para comprobar que efectivamente abre Videolan, se reproduce el canal que queremos, y que lo graba durante el tiempo que hemos indicado en el script.

Una vez que ya hemos comprobado que efectivamente funciona, podemos reeditar el script para acomodar los tiempos. Como ejemplo vamos a suponer que son las 22h y que queremos grabar durante 45 minutos un programa que empieza a las 24h ( es decir 120 minutos después de la hora en la que estamos ), y que a esa hora no estaremos en casa pues nos vamos a cenar. En el script modificaremos los tiempos, para que una vez ejecutado el script el cursor de ratón se mueva a su posición sobre el icono Grabar 120 minutos despues de iniciarse el script, y para que la grabación se realice durante 45 minutos.

#!/bin/bash
    vlc /home/usuario/Canales-TDT/Channels.conf && sleep 120m && \
    xte 'mousemove 22 775' && xte 'mouseclick 1' && \
    sleep 45m && \
     xte 'mousemove 22 775' && xte 'mouseclick 1'


Una vez configurado el script, lo ejecutamos, y dejamos tranquilo el pc, y nos vamos a donde tenemos previsto ir.
Por defecto el archivo resultante de la grabación se guarda en la carpeta /home/usuario/Descargas en un archivo con formato .ts que podremos posteriormente reproducir también con el programa Videolan.
----------------------------
Alternativamente podemos modificar en el script solo el tiempo durante el que queremos que se haga la grabación: en el ejemplo, sleep 45m dejando en 1 minuto, sleep 1m ,el tiempo que transcurrirá desde que se inicie el script y hasta que se inicie la grabación, y con el programa gnome-schedule ( http://hatteras-blog.blogspot.com.es/2010/12/programarautomatizar-tareas-no_26.html ) o con el comando at ( http://hatteras-blog.blogspot.com.es/2010/12/programarautomatizar-tareas-no.html ) creamos una "tarea no repetitiva", para que ella, a la hora que queramos, ejecute el script anterior, y 1 minuto después se inicie la grabación, durante 45 minutos.

1 comentario:

  1. ¿VLC muestra La1 de TVE si ejecutas lo siguiente?
    vlc 770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:101:103:570

    Si es así, es posible que vlc pueda grabar los canales TDT en un archivo si utilizamos las opciones:

    cvlc, en lugar de vlc para ejecutarlo sin interfaz gráfica. Si la quisieramos usaríamos vlc pero no mostraría nada.
    -vvv, creo que es para que vlc averigüe de qué tipo de datos se tratan.
    :demux=dump, para indicarle que queremos grabarlo.
    :demuxdump-file=ruta, para indicarle dónde guardarlo.

    Quedaría así:

    cvlc -vvv 770000000:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_4:HIERARCHY_NONE:101:103:570 :demux=dump :demuxdump-file=./Escritorio/prueba.mpg

    No tengo ningún sintonizador TDT de ordenador para probarlo yo. La ristra de 7700000... la he cogido de otro artículo tuyo. Si no funciona prueba con otro canal que sepas que que funciona seguro con el método channels.conf.

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.