dimanche 28 janvier 2018

Config et disparission des RSS

Afin d'extraire des nouvelles et autres informations a ajouter à un vidéo, différents générateur d'évènement vont extraire selon différents protocoles réseau. Le premier qui à été développé, c'est un analyseur de flux RSS. La plupart des sites officiels de nouvelle ont un ou même plusieurs flux RSS selon certaines catégories. Non seulement différentes librairies sont disponibles pour analyser les flux, mais le contenu est encodé de manière standard et facile a décortiquer.

Cependant, je ne pensais pas qu'en dehors des sites de nouvelles, le support pour les RSS est maintenant pratiquement nul. Étrangement, ils sont encore annoncés sur les sites Web mais ils ne contiennent plus aucun contenu. J'imagine que Facebook et Twitter on remplacés le RSS. Dommage car pour la plupart des CMS, c'est extrêmement simple d'en générer.

Bien que twitter et Facebook permettent d'encapsuler des média ( images, vidéo, etc. ), le tout est enrobé dans des API dont le nombre d'appel est limité alors que les RSS, c'était tout simplement un GET HTTP.

lundi 22 janvier 2018

FFMPEG est mon ami!

Oui, FFMPEG est vraiment le couteau Suisse des outils d'encodage vidéo. Bien que la génération d'image n'est qu'a son début, déjà l'encodage en h265 ou h264, le mix avec la track audio, l'optimisation pour l'upload youtube et le scaling afin d'être facilement lu par mon ordinateur portable de près de 10 ans, et c'était loin d'être une bombe même l'époque, fonctionne a merveille.Une classe hyper simple permet de générer la commande qui devra être envoyée à FFMPEG suivi d'un appel à os.system. Ce n'est peut-être pas très élégant, mais c'est relativement efficace.

Ex: Appel ffmpeg avec de convertir le film généré en une résolution de 1280 x 720

    cmd = "c:/ffmpeg/bin/ffmpeg.exe -y -i " + resultpath + " -s 1280x720 -c:a copy " + resultpath + '.scale.mkv'
    os.system(cmd)

Je n'ai pas ajouté FFMPEG dans mes variables d'environnement mais le tout pourrait être passé en paramètre et non pas être hardcodé.

C'est pas encore jolie à regarder mais au moins le pipe de rendering est pas mal en place. Voici donc ou j'en suis rendu dans ma génération de bulletin de nouvelle.

vendredi 19 janvier 2018

Fake news! En fait, fake newscast

Puisque mon C++ à continué de prendre la poussière ( le C avec les arduino lui se porte bien ), j'ai décidé de faire un peu plus de Python. Surtout arrêter de prendre Python 2.7 et passer à Python 3.5+. Comme projet, générer des vidéos pouvant être ajoutés à youtube de manière quotidienne ou hebdomadaire.

Pour le moment, il ne s'agit de faire un mini framework permettant d'extraire l'information de différentes sources de données puis de les formatter selon un gabarit établi. Ce n'est que de générer les frames du vidéo pour ensuite encoder en x264 optimisé pour youtube.

Comme dépendances:
  • FFMPEG pour le transcodage
  • Balabolka ( ou balcon en ligne de commande ) pour la génération de la voix
  • Appleseed pour le rendu 3D
  • PIL ( Pillow ) pour la composition et les commandes graphiques
  • feedparser pour l'analyse de flux RSS
  • lxml pour la lecture de fichier RSS
Il y aura surement d'autre librairies bientôt mais il y a déjà pas mal de chose à faire avec ça! La résolution est de 3840 x 2160 ( ou UHD ) mais puisque PIL ne support que 8bit par channel, ce n'est pas HDR. Le tout est générer à 30 images/seconde mais comme c'est un paramètre, tout comme la résolution, c'est plus le temps de génération qui va décider.