FREN

Underachievement Unlocked


29 août 2004

Ca a été laborieux, mais je crois que ça y est, ma tvcam fonctionne, sous Linux.

Ca fait un moment que je m’emmerde avec xawtv pour faire les captures télé qui illustrent mon blog (et pour mes archives d’acteurs nus, aussi, évidemment). Je suis obligé de faire tourner X/Window en permanence, je dois aller dans les menus à chaque lancement pour lui faire utiliser l’entrée composite, les captures se font en appuyant sur “J” (et encore, ça pourrait être pire, au moins c’est une des deux touches spéciales aveugles sur un clavier standad), et je suis obligé de rallumer l’écran et ressortir la souris pour spécifier à nouveau la source vidéo à chaque fois que j’ai appuyé sur une autre touche que “J”, c’est-à-dire souvent.

J’ai donc fini par me décider hier à faire une recherche Google pour voir si, par hasard, il existerait une variante en ligne de commande — parce qu’en tant que développeur, c’est ce que j’aurais fait, un utilitaire de capture vidéo accessible en ligne de commande. Et, comme Linux est justement fait par et pour des développeurs, ça existe, et il suffit de taper apt-get install webcam pour que ça fonctionne. Un petit ajout au crontab et, hop, une tvcam mise à jour toutes les minutes. Magique !

Oui, mais non. Parce que je veux utiliser ma carte de capture à la fois pour la tvcam et mes captures personnelles, enregistrées en local. C’est tout l’intérêt d’utiliser la version Linux ; sinon je réinstallerais une vieille carte de capture télé sur mon ordinateur Windows pour faire la tvcam. Or, bêtement, si j’utilise webcam à la fois depuis le crontab et depuis la ligne de commande, les deux se mettent assez rapidement à planter et à dire que la source vidéo est occupée (pourquoi les deux plantent ? mystère…). Retour à la case départ.

Et c’est là que je retombe par hasard sur une page d’aide que j’avais déjà vue, et oubliée : man xawtv-remote. Il suffit que xawtv tourne (on en revient donc à l’obligation de lancer X/Window et de sélectionner l’entrée composite à chaque lancement, mais ce sont bien les inconvénients les moins gênants) et je peux lancer autant de xawtv-remote que je veux, ils communiqueront tous avec la même instance de xawtv et il n’y aura pas de conflits. (Je suppose, en tout cas.)

Reste à uploader la tvcam, ce qui n’est pas simple non plus. Je pensais que ce serait aussi élémentaire que ftp ftpperso.free.fr < commandes.txt mais, non, ça n’a pas l’air de fonctionner. Pour une raison qui m’échappe, C-kermit ne marche pas non plus (peut-être qu’il s’entend mal avec mon proxy, je ne sais pas — comme le Linux me sert de serveur de fichiers personnels et importants, je ne veux pas le connecter directement à Internet). Et on peut automatiser ftp en créant un fichier .netrc, mais en cas d’échec (et il y a souvent des échecs pour cause de wifi très instable par moments) cet idiot de ftp repasse en mode interactif, et bloque donc la tvcam. C’est couillon. Il ne reste plus qu’à bidouiller.

Tant que j’y suis à geekifier, je vous mets les scripts ?

/usr/local/bin/tvcam fait une capture télé en pleine résolution à chaque fois que j’appuie sur Entrée :

while [ true ]
do
echo “*** Press ENTER to capture TV ***”
read toto
capturedatestamp = `date “+%Y%m%d-%H%M%S”`
xawtv-remote snap jpeg full /home/garoo/captures/$capturedatestamp.jpg
done

C’est vraiment tout simple une fois que xawtv tourne — beaucoup plus simple que le fichier de configuration de webcam, qui nécessite de définir une section [ftp] valide même si on ne veut utiliser que la fonction d’archivage autodaté.

/home/garoo/tvcam/tvcam est le script qui lance une capture toutes les trente secondes (je ne peux pas le mettre en crontab parce qu’il n’arrive alors pas à contacter xawtv — probablement une option qui m’a échappé, mais c’est aussi simple comme ça) :

while [ true ]
do
./capture &
sleep 30
done

/home/garoo/tvcam/capture, appelé ci-dessus, et il y a une bonne raison pour que ce soit un script à part :

xawtv-remote snap jpeg 320x240 /home/garoo/tvcam/tvcam.jpg
ftp 10.10.10.64 &
sleep 10

La bidouille étant donc que le ftp est lancé en tâche de fond, et automatiquement tué après dix secondes, quand on sort du script (vivent les souvenirs de mes cours d’Unix il y a dix ans).

/home/garoo/.netrc pour finir, le fichier de configuration qui s’occupe de tout quand on lance ftp 10.10.10.64 :

machine 10.10.10.64 login garoo@ftpperso.free.fr password xxxxxx
macdef
init
binary
put tvcam.jpg tvcam.temp.jpg
rename tvcam.temp.jpg tvcam.jpg
quit

Wow. Tout ça pour ça. Linux, c’est bien, mais faut vraiment en vouloir. Prochaine étape, voir si je peux mettre ma webcam aussi sur le serveur.

Vous voulez savoir quand je poste du contenu sur mon blog ? Il suffit de vous inscrire gratuitement à un agrégateur RSS (Feedly, NewsBlur, Inoreader, …) et d'ajouter www.underachievementunlocked.com à vos flux (ou www.garoo.net pour vous abonner à tous les sujets). On n'a pas besoin de newsletters, pas besoin de Twitter, le RSS existe toujours.

belu, il y a 7 ans :

Super boulot ! pi le resultat c terrible ! les captures d'ecran de ton Pc elle sont aussi en auto ?

garoo, il y a 7 ans :

Oui (tiens, il en est à la version 3, va falloir que je voie ce que ça donne).

Mentions légales : ce blog est hébergé par OVH, 2 rue Kellermann, 59100 Roubaix, France, www.ovhcloud.com.

Les données des visiteurs de ce blog ne sont pas utilisées ni transmises à des tiers. Les posteurs de commentaires peuvent demander leur suppression par e-mail.

Tous contenus © de l'auteur ou couverts par le droit de citation.