Grabar canales de TDT con VLC y sintonizadora USB (os enseño cómo)

Iznogud
#1
Muchos de vosotros quizá tenéis una sintonizadora de TV usb de cuando se puso de moda usar el PC como televisor, guardada o abandonada en un cajón de casa. Si no la tenéis, hay modelos por escasamente 7 u 8 euros en Aliexpress...


Supongo que muchos ya sabréis que con una sintonizadora de tv se puede ver la tdt en el VLC, sin necesidad de usar los engorrosos, y generalmente desactualizados softwares que traen las sintonizadoras. Simplemente abriendo el menú "Medio", abrir dispositivo de captura, y poniendo en modo de captura "TV - digital", en "Sistema de entrega" "DVB-T" (según la capturadora que tengas podría ser "DVB DirectShow") y en Frecuencia de transpondedor/multiplex la frecuencia correspondiente al canal. La frecuencia va en KHz, por lo que si son por ejemplo, 522MHz, deberás poner "522000".

Si estás usando línea de comandos, la frecuencia va en Hz, por lo que siguiendo el mismo ejemplo sería "522000000". (Esto será útil más abajo)

Las frecuencias de los canales para cada provincia se pueden obtener en tdt1.com



A partir de ahí le das a "Reproducir" y en unos instantes estarás viendo la tv:



Pulsando en "Reproducción" - "Programa", podrás elegir qué canal ver de los varios que se emiten en el multiplex (frecuencia) que has sintonizado.



Incluso puedes ver la guía de programa (epg) de todos los canales del múltiplex, pulsando en "Herramientas" - "Guía de programa"



También podremos ver el teletexto del canal, si lo tuviera, pulsando en "Activación Teletexto"



(Nota: Algunos botones no están disponibles si no activamos "Controles avanzados" dentro del menú "Ver")

Cada canal, ya sea de radio de tv o de otros servicios dentro de un multiplex concreto, tiene un "número de programa asignado". Este número de programa nos será muy útil más adelante. La manera de obtener el número es "Herramientas" - "Información del codec". Por ejemplo en el múltiplex que está sintonizado en la imagen, "Antena 3 HD" es el programa número 149.



De esta forma, podríamos de una forma bastante sencilla una lista de reproducción con los canales que más nos
interesen, siguiendo esta estructura en un archivo.m3u

Código:
#EXTINF:0,clantve
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=423
dvb-t://frequency=674000000:bandwidth=0

#EXTINF:0,La dos
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=421
dvb-t://frequency=674000000:bandwidth=0

#EXTINF:0, La sexta
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=151
dvb-t://frequency=522000000:bandwidth=0
Lo siguiente sería grabar lo que estamos viendo simplemente pulsando el botón de REC en el vlc, y parando cuando nos interese terminar. Pero ¿no sería más interesante poder automatizar este proceso?

He creado un script para ello. Simplemente hay que copiar el código en un editor y guardarlo como "grabar.cmd" o el nombre que le querais dar. La sintaxis es "grabar numerocanal duracion_en_segundos [nombre del programa]". Por ejemplo si queremos grabar el canal 1 durante una hora pondríamos:


Código:
grabar 1 3600 Telediario del mediodía
El nombre del programa es opcional, y se truncará a las 5 primeras palabras. En el caso del ejemplo obtendríamos un archivo de grabación llamado "TVE1 2020_05_10 16h41m (Telediario del mediodía ).ts"

Aquí os dejo el código para el .cmd. para que funcione hay que adaptar algunos parámetros, como son la ruta al ejecutable de VLC, la ruta de grabación, y las frecuencias nombres y PID de los canales que queramos tener disponibles.

Código:
@ echo off
goto inicio
Este texto nunca se ejecutará. Es el espacio para documentación y para poner
información y otras notas.

Para que el programa funcione hay que definir las variables con la ubicación
de VLC y de la carpeta en la que queremos que se guarden las grabaciones.
Las variables son UBICACION y RUTAVLC. No olvides ponerlas entre comillas
si la ruta tiene espacios. La ruta de grabación DEBE existir antes de
ejecutar el programa

Después deberás adaptar la lista de canales cmas abajo. para cada canal
hay que establecer su frecuencia, su nombre de canal, y su número de programa.

Por último, actualizar la sección de ayuda para que nos muestre los números
de canal con su nombre de emisora correspondiente

Si no se pasan parámetros el programa muestra la ayuda. Si el número de canal
no está contemplado en la lista de "IF %1==..." devolverá error de canal.

Más abajo, donde se establece la línea de comando para ejecutar VLC, podemos
hacer que el VLC se abra solo para grabar (grabará el programa manteniendo
la pantalla en negro) o para ver a la vez lo que estamos grabando (grabará
el programa a la vez que lo muestra por pantalla). Para ello tenemos que poner
detrás de "SET LINEADECOMANDO=" el texto que corresponda que lo tenemos en los
REMS de arriba. Una futura modificación del programa sería que esta opción se
elija en base a un parámetro y la línea de comando se adapte al parámetro que
le metamos. También podríamos pasar ruta del vlc y ruta de grabación como
parámetros, pero complicaría demasiado la ejecución.



:inicio

REM Definimos las variables de ubicación del VLC y de la carpeta de grabaciones
SET UBICACION=C:\Videos\GrabacionesTV
SET RUTAVLC="C:\Program Files (x86)\VideoLAN\VLC\https://vlc.exe"


REM Si no se pasan parámetros, muestra la ayuda...
IF %1.==. GOTO HELP
IF %2.==. GOTO HELP


REM Definimos y vaciamos las variables
SET FRECUENCIA=
SET PROGRAMA=
SET NOMBRECANAL=
SET NOMBREARCHIVO=
SET LINEACOMANDO=


if %1==1 SET FRECUENCIA=674000000
if %1==1 SET PROGRAMA=420
if %1==1 SET NOMBRECANAL=TVE1

if %1==2 SET FRECUENCIA=674000000
if %1==2 SET PROGRAMA=421
if %1==2 SET NOMBRECANAL=TVE2

if %1==3 SET FRECUENCIA=522000000
if %1==3 SET PROGRAMA=150
if %1==3 SET NOMBRECANAL=Antena 3

if %1==4 SET FRECUENCIA=546000000
if %1==4 SET PROGRAMA=187
if %1==4 SET NOMBRECANAL=Cuatro

if %1==5 SET FRECUENCIA=546000000
if %1==5 SET PROGRAMA=186
if %1==5 SET NOMBRECANAL=Telecinco

if %1==6 SET FRECUENCIA=522000000
if %1==6 SET PROGRAMA=152
if %1==6 SET NOMBRECANAL=La Sexta

if %1==7 SET FRECUENCIA=626000000
if %1==7 SET PROGRAMA=10160
if %1==7 SET NOMBRECANAL=Antena Aragon

if %1==8 SET FRECUENCIA=482000000
if %1==8 SET PROGRAMA=201
if %1==8 SET NOMBRECANAL=Disney Channel

if %1==9 SET FRECUENCIA=624000000
if %1==9 SET PROGRAMA=193
if %1==9 SET NOMBRECANAL=Boing

if %1==10 SET FRECUENCIA=674000000
if %1==10 SET PROGRAMA=423
if %1==10 SET NOMBRECANAL=Clan

if %1==11 SET FRECUENCIA=674000000
if %1==11 SET PROGRAMA=424
if %1==11 SET NOMBRECANAL= TVE 1 HD

if %1==12 SET FRECUENCIA=674000000
if %1==12 SET PROGRAMA=422
if %1==12 SET NOMBRECANAL=24h TVE

if %1==13 SET FRECUENCIA=522000000
if %1==13 SET PROGRAMA=149
if %1==13 SET NOMBRECANAL=Antena 3 HD

if %1==14 SET FRECUENCIA=546000000
if %1==14 SET PROGRAMA=191
if %1==14 SET NOMBRECANAL=Cuatro HD

if %1==15 SET FRECUENCIA=546000000
if %1==15 SET PROGRAMA=190
if %1==15 SET NOMBRECANAL=Telecinco HD

if %1==16 SET FRECUENCIA=522000000
if %1==16 SET PROGRAMA=151
if %1==16 SET NOMBRECANAL=La Sexta HD

if %1==17 SET FRECUENCIA=482000000
if %1==17 SET PROGRAMA=277
if %1==17 SET NOMBRECANAL=Discovery Max

if %1==18 SET FRECUENCIA=642000000
if %1==18 SET PROGRAMA=192
if %1==18 SET NOMBRECANAL=Energy

if %1==19 SET FRECUENCIA=642000000
if %1==19 SET PROGRAMA=155
if %1==19 SET NOMBRECANAL=Mega

if %1==20 SET FRECUENCIA=570000000
if %1==20 SET PROGRAMA=41011
if %1==20 SET NOMBRECANAL=Ten

if %1==21 SET FRECUENCIA=482000000
if %1==21 SET PROGRAMA=202
if %1==21 SET NOMBRECANAL=Paramount Channel

if %1==22 SET FRECUENCIA=530000000
if %1==22 SET PROGRAMA=101
if %1==22 SET NOMBRECANAL=AtresSeries HD

if %1==23 SET FRECUENCIA=546000000
if %1==23 SET PROGRAMA=188
if %1==23 SET NOMBRECANAL=FDF

if %1==24 SET FRECUENCIA=530000000
if %1==24 SET PROGRAMA=102
if %1==24 SET NOMBRECANAL=BeMad TV HD

if %1==25 SET FRECUENCIA=546000000
if %1==25 SET PROGRAMA=189
if %1==25 SET NOMBRECANAL=Divinity

if %1==26 SET FRECUENCIA=570000000
if %1==26 SET PROGRAMA=41001
if %1==26 SET NOMBRECANAL=Dkiss

if %1==27 SET FRECUENCIA=626000000
if %1==27 SET PROGRAMA=10162
if %1==27 SET NOMBRECANAL=Aragon HD

if %1==28 SET FRECUENCIA=642000000
if %1==28 SET PROGRAMA=170
if %1==28 SET NOMBRECANAL=13TV

if %1==29 SET FRECUENCIA=522000000
if %1==29 SET PROGRAMA=153
if %1==29 SET NOMBRECANAL=Neox

if %1==30 SET FRECUENCIA=522000000
if %1==30 SET PROGRAMA=154
if %1==30 SET NOMBRECANAL=Nova

if %1==31 SET FRECUENCIA=482000000
if %1==31 SET PROGRAMA=278
if %1==31 SET NOMBRECANAL=GOL

if %1==32 SET FRECUENCIA=570000000
if %1==32 SET PROGRAMA=40002
if %1==32 SET NOMBRECANAL=Teledeporte

if %1==33 SET FRECUENCIA=570000000
if %1==33 SET PROGRAMA=40003
if %1==33 SET NOMBRECANAL=Teledeporte HD

if %1==34 SET FRECUENCIA=530000000
if %1==34 SET PROGRAMA=103
if %1==34 SET NOMBRECANAL=Realmadrid TV HD






IF NOT DEFINED FRECUENCIA GOTO ERRORCANAL



SET NOMBREARCHIVO=%NOMBRECANAL% %date:~6,4%_%date:~3,2%_%date:~0,2% %time:~0,2%h%time:~3,2%m (%3 %4 %5 %6 %7).ts


REM Si quieres que además de grabar se muestre en ventana, elige la línea de comando 2, para solo grabar, la 1
  REM 1 (Solo Grabar): LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}
  REM 2 (Grabar y ver): LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=display,select="program=%PROGRAMA%",dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}


SET LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}

echo Grabando %3 %4 %5 en canal %NOMBRECANAL% durante %2 segundos


start "ventanadegrabaciontdt" call %LINEACOMANDO%

taskkill /F /FI "WINDOWTITLE eq ventanadegrabaciontdt*" >nul
timeout %2 /nobreak >nul
taskkill /F /IM https://vlc.exe >nul
GOTO FIN

:HELP
ECHO.
ECHO.
ECHO GrabarTDT V1.0, por @ Iznogud
ECHO Uso: %0 Num_Canal duracion_en_segundos [NombreDelPrograma]
ECHO El parametro NombreDelPrograma es opcional
ECHO Ejemplo: https://grabar.bat 1 1800 Telediario

ECHO.
ECHO Lista de n£meros de canal:
ECHO  1.- TVE1           2.- TVE2            3.- Antena 3       4.- Cuatro
ECHO  5.- Telecinco      6.- La Sexta        7.- AragonTV       8.- Disney Ch
ECHO  9.- Boing         10.- Clan           11.- TVE 1 HD      12.- 24h TVE
ECHO 13.- Antena 3 HD   14.- Cuatro HD      15.- Telecinco HD  16.- La Sexta HD
ECHO 17.- Discovery Max 18.- Energy         19.- Mega          20.- Ten
ECHO 21.- Paramount Ch  22.- AtresSeries HD 23.- FDF           24.- BeMad TV HD
ECHO 25.- Divinity      26.- Dkiss          27.- Aragon HD     28.- 13TV
ECHO 29.- Neox          30.- Nova           31.- GOL           32.- Teledeporte
ECHO 33.- TeledeporteHD 34.- RMadrid TV HD



GOTO FIN

:ERRORCANAL
ECHO Canal especificado no existe en la lista

GOTO FIN
Este texto nunca se ejecutará, es para comentarios adicionales

:FIN
La cosa quedaría tal que así:



El programa abre VLC, lo pone a grabar, espera el tiempo indicado, y posteriormente mata la instancia de VLC. Esto es porque no he encontrado una forma más elegante de parar la grabación, ya que no he podido localizar una línea de comando que mandar al vlc para que se cierre al cabo de X segundos, o un comando para mandarle cerrar cuando ya está abierto. Se agradecen sugerencias.

Llevo bastante tiempo usándolo, y en combinación con el programador de tareas de windows, lo uso para convertir el pc en un videograbador programable. Puedes crear una tarea programada para que por ejemplo, te grabe cada semana el capítulo de tu serie favorita. Luego lo recortas con VideoReDo, lo guardas, y tienes tu serie a la máxima calidad posible.

Me encantaría que lo probéis y me digáis qué os parece, y por supuesto se admiten sugerencias de mejora. También tengo otra versión para grabar en lugar de desde el sintonizador de DVB, desde las IP de los canales de Imagenio, pero ya no lo uso porque hace tiempo que dejé de tenerlo contratado. Por ahí he leído que Movistar ha metido DRM en los canales y ya no se pueden ver/grabar por VLC, pero no sé hasta qué punto es verdad o si afecta a todos canales o solo a algunos.
Abbath
Forocochia96
#2
+1000 shur

En mi caso estuve usando una solución similar hasta que pillé una Raspberry, y puse TvHeadend
grimosa
Miembro en desuso
#3
Interesa, tiene buena pinta....
Iznogud
#4
Cita de justanuser
Buena idea shur, igual seria bueno hacerlo para linux y meterlo en un contenedor docker para poder ejecutarlo en cualquier raspberry pi.
Eso se escapa de mis posibilidades... Aunque me defiendo muy bien con los Pcs, no soy programador, y de Linux no sé casi nada. Pero si alguien se anima... Básicamente solo es automatizar una línea de comando de vlc, con las opciones que a uno se le ocurran.
Iznogud
#5
Cita de Abbath
+1000 shur

En mi caso estuve usando una solución similar hasta que pillé una Raspberry, y puse TvHeadend
Yo tengo un pc de bajo consumo que uso como servidor 24/7 y pensé que esto era una forma de darle más usos. Y ya llevo algunos años usándolo así y va de lujo.
javitoN
Forocoches: Premium
#6
papuchi222
ForoCoches: Miembro
#7
Sitio, gracias shur
jrb759
ForoCoches: Usuario
#8
+1
Caballo
Pastor of disaster
#9
Tengo una tarjeta pinnacle centenaria tirada por ahí... Te odio.
Iznogud
#10
Cita de javitoN
Gracias por el premio shurmano... Me ha llevado un rato hacer el post :-D
dandoweltas
Miembro: Forocoches
#11
Para mi gusto sigue siendo mucho mas comodo......Windows Media Center.

Gracias por el aporte, buena currada.
luigibi
ForoCoches: Miembro
#12
Que bueno, muchas gracias, lo probare.
verotron
ForoCoches: Usuario
#13
Muy bueno gracias por compartir
Iznogud
#14
Cita de Antigono101
Pero es que la tele no puede grabar directamente la tdt ???
Bueno, muchas teles no graban, la mía sin ir más lejos. Por otro lado, se trata de aprovechar el hardware que ya tenía, y de aprender un poco. También el sistema de programación de tareas del pc es mucho más completo que la agenda de grabación de un televisor o de un sintonizador tdt tradicional.

Con una pequeña modificación, el script podría usarse para grabar de otras fuentes como streams en directo, canales iptv, o incluso los canales del imagenio, si lo tienes contratado. Eso creo que es ir un pasito más allá de lo que puede hacer la tv.

Por supuesto que, para simplemente grabar un programa sin complicaciones, la tv es lo más práctico.
Iznogud
#15
Cita de papuchi222
Sitio, gracias shur
Cita de jrb759
+1
Cita de verotron
Muy bueno gracias por compartir
Gracias por pasaros por el hilo. Aquí me tenéis si queréis probarlo.

Cita de Caballo
Tengo una tarjeta pinnacle centenaria tirada por ahí... Te odio.
En pleno confinamiento, no creo que tengas nada mejor que hacer... ¡venga a darle caña!



Cita de dandoweltas
Para mi gusto sigue siendo mucho mas comodo......Windows Media Center.

Gracias por el aporte, buena currada.
¿Tú crees? En tiempos estuve probando el WMC y me pareció bastante bien presentado, muy bonito, pero no me convenció la usabilidad. Te hablo de hace años, no sé cómo andará ahora.


Cita de luigibi
Que bueno, muchas gracias, lo probare.
Cítame con los resultados y me cuentas qué tal.
Butterkast
ForoCoches: Miembro
#16
Que bueno, de gran utilidad, gracias por compartir.
alexisdance
ForoCoches: Miembro
#17
Sitio. Tengo una sintonizadora que utilizo en el camping y el puto software que trae es una mierda. Con el VLC mucho mejor.
Iznogud
#18
Cita de Antigono101
Además de lo que dices, las smart tv, aun grabando en un disco duro externo, lo hacen en un formato que no puede leer un ordenador. Supongo que con tu sistema se grabaría en formatos que un ordenador sí puede leer.
Graba en formato .TS (transport stream), tal cual lo recibe de la emisión. Se puede visualizar con el VLC, y editar para recortar con VideoRedo Tv suite, entre otros muchos.
NOCARRiER
*AutoBan Spam/Flood/Troll*
#19
buen trabajo, gracias
jb_______
ForoCoches: Miembro
#20
Cita de Antigono101
Vamos a ver...

Yo grabo la TDT con un disco duro portatil enganchado al smart TV. ¿Podría conectar ese disco al ordenador y poder reproducir esos archivos desde ahí ?. Pensaba que la tele los formateaba de forma que no pudiesen leer en ningún sitio excepto en esa misma tele.

Pues eso depende de la TV.


Por ejemplo, las marcas mas reconocidas (LG, Samsung....) graban pero con proteccion anti copia, de tal modo que la grabacion solo se puede usar en la TV donde se grabó y no se puede usar en el ordenador... osea una mierda que no tiene ninguna utilidad para quienes queremos guardar ciertas emisiones.


Las TVs que no son de marca, no suelen tener esos problemas y graban en formato perfectamente editable en el ordenador (en mi caso por ejemplo una vieja OKI y una marca i-Joy).
Escopeto
ForoCoches: Miembro
#21
Cita de Iznogud
Muchos de vosotros quizá tenéis una sintonizadora de TV usb de cuando se puso de moda usar el PC como televisor, guardada o abandonada en un cajón de casa. Si no la tenéis, hay modelos por escasamente 7 u 8 euros en Aliexpress...


Supongo que muchos ya sabréis que con una sintonizadora de tv se puede ver la tdt en el VLC, sin necesidad de usar los engorrosos, y generalmente desactualizados softwares que traen las sintonizadoras. Simplemente abriendo el menú "Medio", abrir dispositivo de captura, y poniendo en modo de captura "TV - digital", en "Sistema de entrega" "DVB-T" (según la capturadora que tengas podría ser "DVB DirectShow") y en Frecuencia de transpondedor/multiplex la frecuencia correspondiente al canal. La frecuencia va en KHz, por lo que si son por ejemplo, 522MHz, deberás poner "522000".

Si estás usando línea de comandos, la frecuencia va en Hz, por lo que siguiendo el mismo ejemplo sería "522000000". (Esto será útil más abajo)

Las frecuencias de los canales para cada provincia se pueden obtener en tdt1.com



A partir de ahí le das a "Reproducir" y en unos instantes estarás viendo la tv:



Pulsando en "Reproducción" - "Programa", podrás elegir qué canal ver de los varios que se emiten en el multiplex (frecuencia) que has sintonizado.



Incluso puedes ver la guía de programa (epg) de todos los canales del múltiplex, pulsando en "Herramientas" - "Guía de programa"



También podremos ver el teletexto del canal, si lo tuviera, pulsando en "Activación Teletexto"



(Nota: Algunos botones no están disponibles si no activamos "Controles avanzados" dentro del menú "Ver")

Cada canal, ya sea de radio de tv o de otros servicios dentro de un multiplex concreto, tiene un "número de programa asignado". Este número de programa nos será muy útil más adelante. La manera de obtener el número es "Herramientas" - "Información del codec". Por ejemplo en el múltiplex que está sintonizado en la imagen, "Antena 3 HD" es el programa número 149.



De esta forma, podríamos de una forma bastante sencilla una lista de reproducción con los canales que más nos
interesen, siguiendo esta estructura en un archivo.m3u

Código:
#EXTINF:0,clantve
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=423
dvb-t://frequency=674000000:bandwidth=0

#EXTINF:0,La dos
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=421
dvb-t://frequency=674000000:bandwidth=0

#EXTINF:0, La sexta
#EXTVLCOPT:dvb-adapter=0
#EXTVLCOPT:live-caching=300
#EXTVLCOPT:program=151
dvb-t://frequency=522000000:bandwidth=0
Lo siguiente sería grabar lo que estamos viendo simplemente pulsando el botón de REC en el vlc, y parando cuando nos interese terminar. Pero ¿no sería más interesante poder automatizar este proceso?

He creado un script para ello. Simplemente hay que copiar el código en un editor y guardarlo como "grabar.cmd" o el nombre que le querais dar. La sintaxis es "grabar numerocanal duracion_en_segundos [nombre del programa]". Por ejemplo si queremos grabar el canal 1 durante una hora pondríamos:


Código:
grabar 1 3600 Telediario del mediodía
El nombre del programa es opcional, y se truncará a las 5 primeras palabras. En el caso del ejemplo obtendríamos un archivo de grabación llamado "TVE1 2020_05_10 16h41m (Telediario del mediodía ).ts"

Aquí os dejo el código para el .cmd. para que funcione hay que adaptar algunos parámetros, como son la ruta al ejecutable de VLC, la ruta de grabación, y las frecuencias nombres y PID de los canales que queramos tener disponibles.

Código:
@ echo off
goto inicio
Este texto nunca se ejecutará. Es el espacio para documentación y para poner
información y otras notas.

Para que el programa funcione hay que definir las variables con la ubicación
de VLC y de la carpeta en la que queremos que se guarden las grabaciones.
Las variables son UBICACION y RUTAVLC. No olvides ponerlas entre comillas
si la ruta tiene espacios. La ruta de grabación DEBE existir antes de
ejecutar el programa

Después deberás adaptar la lista de canales cmas abajo. para cada canal
hay que establecer su frecuencia, su nombre de canal, y su número de programa.

Por último, actualizar la sección de ayuda para que nos muestre los números
de canal con su nombre de emisora correspondiente

Si no se pasan parámetros el programa muestra la ayuda. Si el número de canal
no está contemplado en la lista de "IF %1==..." devolverá error de canal.

Más abajo, donde se establece la línea de comando para ejecutar VLC, podemos
hacer que el VLC se abra solo para grabar (grabará el programa manteniendo
la pantalla en negro) o para ver a la vez lo que estamos grabando (grabará
el programa a la vez que lo muestra por pantalla). Para ello tenemos que poner
detrás de "SET LINEADECOMANDO=" el texto que corresponda que lo tenemos en los
REMS de arriba. Una futura modificación del programa sería que esta opción se
elija en base a un parámetro y la línea de comando se adapte al parámetro que
le metamos. También podríamos pasar ruta del vlc y ruta de grabación como
parámetros, pero complicaría demasiado la ejecución.



:inicio

REM Definimos las variables de ubicación del VLC y de la carpeta de grabaciones
SET UBICACION=C:\Videos\GrabacionesTV
SET RUTAVLC="C:\Program Files (x86)\VideoLAN\VLC\https://vlc.exe"


REM Si no se pasan parámetros, muestra la ayuda...
IF %1.==. GOTO HELP
IF %2.==. GOTO HELP


REM Definimos y vaciamos las variables
SET FRECUENCIA=
SET PROGRAMA=
SET NOMBRECANAL=
SET NOMBREARCHIVO=
SET LINEACOMANDO=


if %1==1 SET FRECUENCIA=674000000
if %1==1 SET PROGRAMA=420
if %1==1 SET NOMBRECANAL=TVE1

if %1==2 SET FRECUENCIA=674000000
if %1==2 SET PROGRAMA=421
if %1==2 SET NOMBRECANAL=TVE2

if %1==3 SET FRECUENCIA=522000000
if %1==3 SET PROGRAMA=150
if %1==3 SET NOMBRECANAL=Antena 3

if %1==4 SET FRECUENCIA=546000000
if %1==4 SET PROGRAMA=187
if %1==4 SET NOMBRECANAL=Cuatro

if %1==5 SET FRECUENCIA=546000000
if %1==5 SET PROGRAMA=186
if %1==5 SET NOMBRECANAL=Telecinco

if %1==6 SET FRECUENCIA=522000000
if %1==6 SET PROGRAMA=152
if %1==6 SET NOMBRECANAL=La Sexta

if %1==7 SET FRECUENCIA=626000000
if %1==7 SET PROGRAMA=10160
if %1==7 SET NOMBRECANAL=Antena Aragon

if %1==8 SET FRECUENCIA=482000000
if %1==8 SET PROGRAMA=201
if %1==8 SET NOMBRECANAL=Disney Channel

if %1==9 SET FRECUENCIA=624000000
if %1==9 SET PROGRAMA=193
if %1==9 SET NOMBRECANAL=Boing

if %1==10 SET FRECUENCIA=674000000
if %1==10 SET PROGRAMA=423
if %1==10 SET NOMBRECANAL=Clan

if %1==11 SET FRECUENCIA=674000000
if %1==11 SET PROGRAMA=424
if %1==11 SET NOMBRECANAL= TVE 1 HD

if %1==12 SET FRECUENCIA=674000000
if %1==12 SET PROGRAMA=422
if %1==12 SET NOMBRECANAL=24h TVE

if %1==13 SET FRECUENCIA=522000000
if %1==13 SET PROGRAMA=149
if %1==13 SET NOMBRECANAL=Antena 3 HD

if %1==14 SET FRECUENCIA=546000000
if %1==14 SET PROGRAMA=191
if %1==14 SET NOMBRECANAL=Cuatro HD

if %1==15 SET FRECUENCIA=546000000
if %1==15 SET PROGRAMA=190
if %1==15 SET NOMBRECANAL=Telecinco HD

if %1==16 SET FRECUENCIA=522000000
if %1==16 SET PROGRAMA=151
if %1==16 SET NOMBRECANAL=La Sexta HD

if %1==17 SET FRECUENCIA=482000000
if %1==17 SET PROGRAMA=277
if %1==17 SET NOMBRECANAL=Discovery Max

if %1==18 SET FRECUENCIA=642000000
if %1==18 SET PROGRAMA=192
if %1==18 SET NOMBRECANAL=Energy

if %1==19 SET FRECUENCIA=642000000
if %1==19 SET PROGRAMA=155
if %1==19 SET NOMBRECANAL=Mega

if %1==20 SET FRECUENCIA=570000000
if %1==20 SET PROGRAMA=41011
if %1==20 SET NOMBRECANAL=Ten

if %1==21 SET FRECUENCIA=482000000
if %1==21 SET PROGRAMA=202
if %1==21 SET NOMBRECANAL=Paramount Channel

if %1==22 SET FRECUENCIA=530000000
if %1==22 SET PROGRAMA=101
if %1==22 SET NOMBRECANAL=AtresSeries HD

if %1==23 SET FRECUENCIA=546000000
if %1==23 SET PROGRAMA=188
if %1==23 SET NOMBRECANAL=FDF

if %1==24 SET FRECUENCIA=530000000
if %1==24 SET PROGRAMA=102
if %1==24 SET NOMBRECANAL=BeMad TV HD

if %1==25 SET FRECUENCIA=546000000
if %1==25 SET PROGRAMA=189
if %1==25 SET NOMBRECANAL=Divinity

if %1==26 SET FRECUENCIA=570000000
if %1==26 SET PROGRAMA=41001
if %1==26 SET NOMBRECANAL=Dkiss

if %1==27 SET FRECUENCIA=626000000
if %1==27 SET PROGRAMA=10162
if %1==27 SET NOMBRECANAL=Aragon HD

if %1==28 SET FRECUENCIA=642000000
if %1==28 SET PROGRAMA=170
if %1==28 SET NOMBRECANAL=13TV

if %1==29 SET FRECUENCIA=522000000
if %1==29 SET PROGRAMA=153
if %1==29 SET NOMBRECANAL=Neox

if %1==30 SET FRECUENCIA=522000000
if %1==30 SET PROGRAMA=154
if %1==30 SET NOMBRECANAL=Nova

if %1==31 SET FRECUENCIA=482000000
if %1==31 SET PROGRAMA=278
if %1==31 SET NOMBRECANAL=GOL

if %1==32 SET FRECUENCIA=570000000
if %1==32 SET PROGRAMA=40002
if %1==32 SET NOMBRECANAL=Teledeporte

if %1==33 SET FRECUENCIA=570000000
if %1==33 SET PROGRAMA=40003
if %1==33 SET NOMBRECANAL=Teledeporte HD

if %1==34 SET FRECUENCIA=530000000
if %1==34 SET PROGRAMA=103
if %1==34 SET NOMBRECANAL=Realmadrid TV HD






IF NOT DEFINED FRECUENCIA GOTO ERRORCANAL



SET NOMBREARCHIVO=%NOMBRECANAL% %date:~6,4%_%date:~3,2%_%date:~0,2% %time:~0,2%h%time:~3,2%m (%3 %4 %5 %6 %7).ts


REM Si quieres que además de grabar se muestre en ventana, elige la línea de comando 2, para solo grabar, la 1
  REM 1 (Solo Grabar): LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}
  REM 2 (Grabar y ver): LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=display,select="program=%PROGRAMA%",dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}


SET LINEACOMANDO=%RUTAVLC% dvb-t://frequency=%FRECUENCIA% :dvb-bandwidth=8 :program=%PROGRAMA% :sout=#duplicate{dst=standard{access=file,mux=ts,dst="ICACION%\%NOMBREARCHIVO%"},select="program=%PROGRAMA%"}

echo Grabando %3 %4 %5 en canal %NOMBRECANAL% durante %2 segundos


start "ventanadegrabaciontdt" call %LINEACOMANDO%

taskkill /F /FI "WINDOWTITLE eq ventanadegrabaciontdt*" >nul
timeout %2 /nobreak >nul
taskkill /F /IM https://vlc.exe >nul
GOTO FIN

:HELP
ECHO.
ECHO.
ECHO GrabarTDT V1.0, por @ Iznogud
ECHO Uso: %0 Num_Canal duracion_en_segundos [NombreDelPrograma]
ECHO El parametro NombreDelPrograma es opcional
ECHO Ejemplo: https://grabar.bat 1 1800 Telediario

ECHO.
ECHO Lista de n£meros de canal:
ECHO  1.- TVE1           2.- TVE2            3.- Antena 3       4.- Cuatro
ECHO  5.- Telecinco      6.- La Sexta        7.- AragonTV       8.- Disney Ch
ECHO  9.- Boing         10.- Clan           11.- TVE 1 HD      12.- 24h TVE
ECHO 13.- Antena 3 HD   14.- Cuatro HD      15.- Telecinco HD  16.- La Sexta HD
ECHO 17.- Discovery Max 18.- Energy         19.- Mega          20.- Ten
ECHO 21.- Paramount Ch  22.- AtresSeries HD 23.- FDF           24.- BeMad TV HD
ECHO 25.- Divinity      26.- Dkiss          27.- Aragon HD     28.- 13TV
ECHO 29.- Neox          30.- Nova           31.- GOL           32.- Teledeporte
ECHO 33.- TeledeporteHD 34.- RMadrid TV HD



GOTO FIN

:ERRORCANAL
ECHO Canal especificado no existe en la lista

GOTO FIN
Este texto nunca se ejecutará, es para comentarios adicionales

:FIN
La cosa quedaría tal que así:



El programa abre VLC, lo pone a grabar, espera el tiempo indicado, y posteriormente mata la instancia de VLC. Esto es porque no he encontrado una forma más elegante de parar la grabación, ya que no he podido localizar una línea de comando que mandar al vlc para que se cierre al cabo de X segundos, o un comando para mandarle cerrar cuando ya está abierto. Se agradecen sugerencias.

Llevo bastante tiempo usándolo, y en combinación con el programador de tareas de windows, lo uso para convertir el pc en un videograbador programable. Puedes crear una tarea programada para que por ejemplo, te grabe cada semana el capítulo de tu serie favorita. Luego lo recortas con VideoReDo, lo guardas, y tienes tu serie a la máxima calidad posible.

Me encantaría que lo probéis y me digáis qué os parece, y por supuesto se admiten sugerencias de mejora. También tengo otra versión para grabar en lugar de desde el sintonizador de DVB, desde las IP de los canales de Imagenio, pero ya no lo uso porque hace tiempo que dejé de tenerlo contratado. Por ahí he leído que Movistar ha metido DRM en los canales y ya no se pueden ver/grabar por VLC, pero no sé hasta qué punto es verdad o si afecta a todos canales o solo a algunos.
Un sintonizador cutre que no vaya especialmente mal, shur?
dagavi_
ForoCoches: Miembro
#22
Cita de justanuser
Buena idea shur, igual seria bueno hacerlo para linux y meterlo en un contenedor docker para poder ejecutarlo en cualquier raspberry pi.
Justo ayer estuve toqueteando con esto.

Si me llevó rato es porque no me iba bien del todo, no me sacaba casi canales, hasta que me dio por instalarlo en el "host" (sin docker) vía "apt" y ver que funcionaba ok, y que era una versión inferior. Probé a decirle al docker que usara esa versión inferior y perfecto.

Aquí tienes el docker-compose, es el mismo que ponen ellos en su web del Docker Hub (https://hub.docker.com/r/linuxserver/tvheadend), pero cambiando la imagen por una de 4.2:

Código:
version: "3"

services:
    tvheadend:
        image: linuxserver/tvheadend:release-4.2
        #container_name: tvheadend
        environment:
            #- PUID=1000
            #- PGID=1000
            - TZ=Europe/Madrid
            #- RUN_OPTS=run options here #optional
        volumes:
            - ./config:/config
            - ./recordings:/recordings
        ports:
            - 9981:9981
            - 9982:9982
        devices:
            #- /dev/dri:/dev/dri
            - /dev/dvb:/dev/dvb
        restart: unless-stopped
Iznogud
#23
Cita de Escopeto
Un sintonizador cutre que no vaya especialmente mal, shur?
Cualquiera de los que venden en AliExpress te valdría. La mayor parte del trabajo lo hace el driver, y el chip yo creo que casi todos montan el mismo. Eso sí, te recomendaría uno que tenga entrada de antena con el conector estándar (el mismo que un televisor) para evitar engorros con adaptadores.
Iznogud
#24
Cita de jb_______
Pues eso depende de la TV.


Por ejemplo, las marcas mas reconocidas (LG, Samsung....) graban pero con proteccion anti copia, de tal modo que la grabacion solo se puede usar en la TV donde se grabó y no se puede usar en el ordenador... osea una mierda que no tiene ninguna utilidad para quienes queremos guardar ciertas emisiones.
No sabía esa limitación, y me parece absurda. ¿Qué quieren limitar? Si cualquier sintonizador tdt externo de 20 euros te graba al usb sin problemas.
dBRx
ForoCoches: Miembro
#25
Pillo sitio. Muchas gracias por el aporte Shur.
ammrel
ForoCoches: Miembro
#26
Buen trabajo, se agradece
brahem
ForoCoches: Miembro
#27
Esta guapo shur!!

Lo probaré! Good job!
titosky
ForoCoches: Miembro
#28
Va de pm shur
Iznogud
#29
Cita de titosky
Va de pm shur
¿Te funciona? Me alegro
titosky
ForoCoches: Miembro
#30
Cita de Iznogud
¿Te funciona? Me alegro
Si aunque la sensibilidad de la antena en interior es mala. Para generar la lista con frecuencia es fácil?
← A Electrónica / Informática
Amazon
Nuevas ofertas cada día