Descubre el teletexto que hay en ti (y en tus viejas cintas VHS)

Seguro que, como buen aficionado al retro, aún conservas alguna de tus antiguas cintas de vídeo donde grababas programas y películas de la tele. Y con un poco de suerte también tienes en el trastero tu antiguo reproductor de VHS. ¿Sabías que cada vez que grababas un capítulo de MacGyver también estabas guardando toda la información del teletexto que se estaba emitiendo en ese momento? ¿Y que es posible recuperar esa información fácilmente y verla ahora en tu ordenador?

Tras descubrir este fantástico post del blog Yorokobu se nos encendió la bombilla y quisimos comprobarlo por nosotros mismos. En la época de la televisión analógica la información del teletexto llegaba hasta nuestros televisores en la misma señal donde venía la imagen y el sonido. Por eso, cuando grabábamos en vídeo una emisión de TV también estábamos guardando, sin darnos cuenta, los cientos de páginas de teletexto que la acompañaban. La primera opción para intentar volver a recuperar esa información sería simplemente conectar nuestro reproductor de vídeo a un televisor y, mientras reproducimos alguna grabación, activar el teletexto en la tele. Sin embargo el resultado será casi seguro muy decepcionante…

La reducida calidad de la grabación provoca que el televisor no sea capaz de decodificar correctamente la mayoría de páginas, y el resultado será un batiburrillo de caracteres donde apenas podemos llegar a intuir alguna frase coherente. Aquí es donde la comunidad de aficionados llega en nuestra ayuda y en concreto Alistair Buxton, que ha creado un conjunto de herramientas dedicadas a extraer y visualizar las páginas de teletexto contenidas en una grabación de vídeo, incluso corrigiendo los errores debidos a la calidad del medio hasta conseguir páginas completas al 100%.

Solo vamos a necesitar tres cosas: un reproductor de VHS, un ordenador con Linux y una tarjeta capturadora de televisión, como aquellas que se hicieron tan populares a principios de siglo y que servían para decodificar cierto canal de televisión (guiño, guiño). Puede que aún tengas alguna perdida en un cajón, y en cualquier caso la burbuja del retro no les ha afectado (todavía) y es posible encontrarlas en sitios de compra-venta por menos de 10€. Las que nos interesan son las tarjetas PCI que llevaban el chip Bt878 de Conexant, por estar soportadas por el driver bttv de Linux. Aquí hay una lista de modelos que montaban este chip, que además es fácilmente identificable al examinar la propia tarjeta. En nuestro caso vamos a utilizar una antigua WinTV Express de la empresa Hauppauge (podéis ver claramente el modelo del chip que lleva):

Esta tarjeta tiene entrada de vídeo compuesto, además del típico conector de antena. Por comodidad vamos a usar esa entrada, por lo que conectaremos la tarjeta a la salida SCART de nuestro reproductor usando uno de estos adaptadores (en posicion OUT). Como no necesitamos capturar el audio, nos vale con un único cable entre tarjeta y reproductor.

El ordenador donde realizaremos el proceso es un antiguo Core 2 Quad Q8300 corriendo Debian 12 (bookworm). No es necesario una máquina potente, aunque la tarjeta gráfica si ayudará a acelerar todo el proceso como veremos más adelante. Al pinchar la capturadora vemos que Linux la reconoce y carga automáticamente el driver bttv necesario:

bttv: driver version 0.9.19 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0)
bttv: 0: Bt878 (rev 17) at 0000:05:00.0, irq: 16, latency: 64, mmio: 0xfbffe000
bttv: 0: detected: Hauppauge WinTV [card=10], PCI subsystem ID is 0070:13eb
bttv: 0: using: Hauppauge (bt878) [card=10,autodetected]
bttv: 0: Hauppauge/Voodoo msp34xx: reset line init 
bttv: 0: Setting PLL: 28636363 => 35468950 (needs up to 100ms)
bttv: PLL set ok
bttv: 0: registered device video0
bttv: 0: registered device vbi0

Nos interesan especialmente esas dos últimas líneas, donde se indica que se han creado dos nuevos dispositivos en el sistema: /dev/video0 y /dev/vbi0. El primero podremos utilizarlo para visualizar la imagen en un reproductor como VLC. El segundo es el que nos permitirá recibir la información entre frames (Vertical Blanking Interval) que es donde residen las páginas del teletexto.

Para comprobar que la tarjeta funciona, simplemente arrancamos el VLC y en «Abrir dispositivo de captura» elegimos /dev/video0 mientras reproducimos algo en el VHS:

Ahora pueden ocurrir dos cosas: que veamos la imagen correctamente o que nos encontremos con una pantalla verde o llena de nieve. Como la tarjeta tiene varias entradas (antena, vídeo compuesto e incluso S-Video en algunos modelos) es necesario seleccionar antes cual es la que queremos utilizar. Para ello usamos los comandos del paquete v4l-utils, que es nuestro caso no teníamos instalado:

# sudo apt install v4l-utils

Ahora para seleccionar la entrada utilizamos el comando v4l2-ctl, indicando el dispositivo (/dev/video0) y el número de entrada (0 para antena, 1 para vídeo compuesto, 2 para S-Video):

# v4l2-ctl -d /dev/video0 -i 1
Video input set to 1 (Composite1: Camera, ok)

Y el vídeo aparece en el reproductor. Para esta prueba usaremos una grabación del «Unplugged in New York» de Nirvana, emitido en La 2 de TVE en algún momento de 1994. Precisamente una de las utilidades de todo esto es poder fechar una grabación con absoluta precisión.

Vamos ahora con la instalación de las herramientas vhs-teletext de Alistair Buxton. En nuestro directorio favorito nos clonamos el repositorio de github:

# git clone https://github.com/ali1234/vhs-teletext.git

Siguiendo las instrucciones del propio autor, ahora tenemos que instalar todos estos scripts en Python en nuestro sistema usando pip3. También nos avisa de que es posible utilizar nuestra tarjeta gráfica Nvidia para acelerar el proceso utilizando CUDA. En nuestro caso el PC monta una sencilla GeForce 1030 compatible con CUDA, con lo que activamos la aceleración por GPU añadiendo ese parámetro al comando de instalación (en caso de no tener una tarjeta compatible CUDA, simplemente se omite el parámetro).

# cd vhs-teletext
# pip3 install -e.[CUDA]

Y nuestra Debian nos dice que nanai:

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

Esta distro no nos permite instalar un paquete externo directamente en nuestro sistema, y nos sugiere buscarlo en los repositorios oficiales usando apt. Como estas utilidades no están disponibles como paquete de Debian, vamos a instalarlo en un entorno virtual sin que interfiera ni «rompa» ninguno de los otros paquetes de Python ya existentes en el sistema:

# cd
# mkdir venv
# python3 -m venv ~/venv

Esto nos crea un directorio «venv» en nuestro home que contiene un entorno completo de Python donde podemos instalar cualquier cosa sin que afecte al resto del sistema. Volvemos ahora a intentar la instalación pero usando el pip3 de este nuevo entorno:

# cd vhs-teletext
# ~/venv/bin/pip3 install -e.[CUDA]

El programa de instalación se descargará todas las dependencias necesarias y, con suerte, acabamos viendo el resultado:

Successfully installed teletext-3.1.99

El ejecutable teletext se ha instalado en el directorio del entorno virtual que hemos creado antes en nuestro home (~/venv/bin/teletext), lo que habrá que tener en cuenta a la hora de lanzar el comando (podemos añadir este directorio a nuestro PATH, para mayor comodidad). La instrucciones de instalación también nos sugiere instalar las fuentes propias del teletexto junto con el terminal rxvt, para poder ver las páginas correctamente y disfrutar al 100% de la experiencia.

# sudo apt install tv-fonts rxvt-unicode

También nos indica como activar las fuentes de tipo bitmap, que en el caso de Debian están desactivadas por defecto.

# cd /etc/fonts/conf.d
# sudo rm 70-no-bitmaps.conf
# sudo ln -s ../conf.avail/70-yes-bitmaps.conf .

Tras esto será necesario reiniciar el ordenador y ya podemos comenzar a grabar. Nos aseguramos que hemos elegido correctamente la entrada de vídeo con el comando v4l2-ctl, le damos al PLAY en el reproductor VHS y ejecutamos el siguiente comando:

# teletext record -d /dev/vbi0 > capture.vbi

Y dejamos que se graben algunos minutos. Dependiendo de la calidad de la cinta y de la grabación necesitaremos más o menos tiempo para obtener un buen resultado. Cuando creamos conveniente, paramos la grabación con Ctrl+C.

En el siguiente paso extraemos las páginas del teletexto. Es aquí donde se hace evidente la ayuda de la GPU, acelerando el proceso en gran medida. Cuanto más larga sea la grabación, más tiempo tardará este paso:

# teletext deconvolve capture.vbi > stream.t42

Las instrucciones nos indican que ahora podemos ejecutar este otro comando para reducir el número de páginas y con ello reducir también el número de errores. El programa «apila» las n copias de cada página y puede detectar aquellos caracteres que aparecen incorrectamente en alguna de las copias, corrigiéndolos por el carácter correcto.

# teletext squash stream.t42 > output.t42

Ahora solo nos falta lanzar un nuevo terminal usando las fuentes del teletexto, con las dimensiones adecuadas para poder verlo en toda su gloria.

# urxvt -fg white -bg black -fn teletext -fb teletext -geometry 41x25 +sb &

Dentro de este terminal lanzamos este otro par de comandos, que nos mostrará las páginas obtenidas en los pasos anteriores de la misma forma en que las vemos en un televisor.

# teletext service output.t42 | teletext interactive

Y la magia sucede…

Con solo teclear el número de la página que queremos ver, el programa nos llevará a ella. Las noticias del día (24 de diciembre de 1994) nos indicaban que Mario Conde pasaba su primera noche en prisión y que Diego Armando Maradona colgaba las botas definitivamente:

Quizá no resulte muy interesante consultar la situación meteorológica de hace treinta años, pero siempre es bonito contemplar el arte que se escondía entre estas páginas:

Existe iniciativas como la de Teletext Archive (que en el momento de escribir este artículo parece caída) donde se están reuniendo miles de páginas de teletexto de diversos paises, aunque de nuestras cadenas nacionales parece no haber nada todavía. ¡Habrá que ponerse manos a la obra!

Puede que también te guste...

1 respuesta

  1. Alberto dice:

    Maravilla!!!!! Gracias por el tutorial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Descubre más desde Retro Parla

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo