J’avais créé une application twitter, qui twittait les paramètres de l’aquarium, notamment la température des bacs et de la fishroom. Ensuite, j’avais modifié ce bot pour envoyer de manière automatisée une photo sur l’instagram hackquarium.
Entre-temps, Instagram a modifié ses conditions d’utilisation et interdit l’envoi automatisé d’image sur son réseau. J’ai donc abandonné ce bot et réutilisé son raspberry Pi et sa caméra pour d’autres projets …
Avec l’arrivée des bébés killi je vais devoir rajouter quelques bacs. J’en profite pour réorganiser les aquarium et leur créer un réseau dédié1
Bref, l’arrivée de ces nouveaux bacs m’a donné de nouvelles idées de monitoring de la fishroom via twitter (ou autre ;-)) et donc j’ai décidé de réamorcer l’application twitter rlieh.
Automated video tweets by #RLIEH
Matouba fishtank – 3 june 2019 – Automated video tweet by #RLIEH #smartaquarium #aquariumhobby #fishtank #raspberrypi #raspivid #hack #hackquarium pic.twitter.com/CEC2PCELcj
— hackquarium (@hackquarium) June 3, 2019
Dans sa mouture actuelle, l’application twitte 18 secondes de vidéo, avec dans le texte du tweet la date du jour et quelques mots clé pour le référencement.
Raspivid pour un media video Twitter
La vidéo est capturée via raspivid puis encodée en mp4 avec MP4Box avant envoi vers Twitter :
raspivid --profile main --framerate 30 --bitrate 5000000 -t 15000 -w 1280 -h 720 -fps 30 -hf -vf -o video.h264 && MP4Box -add video.h264 video.mp4
Capture et timecode avec Picamera
J’ai testé Picamera, avec l’idée d’utiliser l’incrustation de texte pour afficher la date et l’heure de la capture. Après encodage en mp4 via Mp4box, le résultat était correct, mais très dégradé lors de l’affichage sur Twitter2.
Ci-après mon script pour tester Picamera en comparaison de raspivid. Je suppose que c’est la différence de bitrate3 entre la commande raspivid et le script python Picamera qui explique la différence de qualité de la vidéo finale traitée par Twitter ?
Script Python Picamera avec incrustation de date
#!/usr/bin/env python
import picamera
import datetime as dt
video_file = "video.h264"
video_duration = 10
time_format = 'Matouba Fishtank %Y-%m-%d %H:%M:%S'
text_foreground = "white"
text_background = "black"
camera_resolution = (1280, 720)
camera_framerate = 30
camera_led = False
camera_vflip = True
camera_hflip = True
with picamera.PiCamera() as camera:
camera.resolution = camera_resolution
camera.framerate = camera_framerate
camera.led = camera_led
camera.vflip = camera_vflip
camera.annotate_foreground = picamera.Color(text_foreground)
camera.annotate_background = picamera.Color(text_background)
camera.annotate_text = dt.datetime.now().strftime(time_format)
camera.start_recording(video_file)
start = dt.datetime.now()
while (dt.datetime.now() - start).seconds < video_duration:
camera.annotate_text = dt.datetime.now().strftime(time_format)
camera.wait_recording(0.2)
camera.stop_recording()
Envoyer une vidéo sur Twitter avec Python
Pour l’envoi de la vidéo vers Twitter, j’utilise la librairie python twython
video = open('/path/to/file/video.mp4', 'rb') response = twitter.upload_video(media=video, media_type='video/mp4') twitter.update_status(status='Automated Tweet by #RLIEH', media_ids=[response['media_id']])
Docker rlieh-twitter-video
Ces outils sont installés sur un raspberry Pi dédié.
Pour faciliter le déploiement et les mises à jour, j’ai packagé l’application rlieh-twitter-video dans un docker4.
Streamer la Picam sur Linux avec netcat
Pour positionner la caméra, j’utilise netcat afin d’afficher la caméra sur un poste distant
- Je crée un réseau dédié pour les aquariums plus par commodité que nécessité ou sécurité. Actuellement, les aquariums, le contrôleur #RLIEH et ses satellites sont tous connectés sur le réseau de la maison, et ça commence à faire encombré …
- à moins que ce une impression due à mon débit très limité ?
- Quelques mentions du bitrate dans la doc Picamera, mais en fait cela ne semble pas totalement implémenté
- Docker est un logiciel libre permettant d’installer et d’exécuter n’importe quelle application sur un système hôte, dans un conteneur cloisonné.
1 Comment for “Tweet vidéo: l’aquarium Matouba de retour sur Twitter”