Générer du CC avec un Raspberry Pi

Ce sujet est plus une démonstration technologique intéressante qu’un vrai projet. J’avais parlé il y a un moment de la possibilité de générer du télétexte avec un Raspberry Pi et – plus récemment – des sous-titres des DVD. Les technologies sont assez proches et ce qui marche avec le télétexte fonctionne avec le CC (alias CEA-608).

Le CC (CEA-608) utilise les lignes qui ne sont pas affichées à l’écran pour encoder des caractères. La technologie était utilisée essentiellement pour les sous-titres du temps de l’analogique, elle n’a évidemment plus réellement d’intérêt avec les technologies actuelles, même si les DVD américains utilisent encore la technologie dans certains cas.

Le logo CC, présent sur les jaquettes

Le logo CC, présent sur les jaquettes

Générer du CC avec le Raspberry Pi ne pose pas réellement de soucis, vu que la carte propose une sortie analogique dans tous ses modèles (même le Pi Zero, avec quelques soudures). Bien évidemment, il faut forcer un signal NTSC en sortie.

sudo nano /boot/config.txt

Dans le fichier, il faut ajouter la ligne suivante (ou la modifier si elle ne propose pas la bonne valeur).

sdtv_mode=0

J’ai testé avec un Raspberry Pi 2 avec un adaptateur vidéo pour la sortie jack sans aucun soucis. Pour l’acquisition, j’utilise une carte EyeTV Hybrid de chez Elgato, dans une version ATSC (américaine) qui supporte l’analogique en NTSC. Attention, les versions récentes de l’EyeTV Hybrid ne supportent plus l’analogique.

Pour l’installation, il suffit d’installer le programme d’Alistair Buxton.

git clone https://github.com/ali1234/raspi-teletext
cd raspi-teletext
make

Ensuite pour lancer le programme, il faut activer la fonction puis lancer la version de test.

sudo ./tvctl on
./cea608

Par défaut, on va le voir dans ma petite vidéo, le programme affiche juste Hello!. En pratique, il est possible d’envoyer du texte sur stdin, mais il doit être encodé pour du CEA-608, en hexadécimal. Je n’ai aucune idée de comment le faire, j’avoue, et pas vraiment le temps (ni l’envie) d’essayer de comprendre comment ça fonctionne réellement.

En ouvrant plusieurs sessions sur le Raspberry Pi, il est possible d’afficher une vidéo (ici un simple extrait de Big Buck Bunny) et d’envoyer du CC depuis une autre session. Pour l’essai, j’ai relié le Raspberry Pi à ma carte TV et utilisé le décodeur CC d’Eye TV (dans Présentations).

Hello généré en CC

Hello généré en CC

Au final, ça montre qu’il est possible de faire des choses amusantes avec la petite carte. On peut imaginer des messages affichés pendant un jeu vidéo (pour les fans d’émulation), une alerte quand la puce chauffe, etc. Attention, de par la nature même du truc, Eye TV (et d’autres) n’enregistrent pas vraiment les sous-titres, ils sont incrustés à la volée. En théorie, un programme d’enregistrement correct devrait garder le signal, mais ce n’est pas systématique : certains n’encodent pas les lignes invisibles.