Aller au contenu principal
Infrastructure

Des images prêtes à la seconde où elles sont filmées

· 4 min de lecture

Faire un film à partir d'un site, c'est une course de relais. L'enregistreur filme un clip, et quelques secondes plus tard le moteur vidéo en a besoin, image par image. Dès notre deuxième jour en production, nous avons fait de ce passage de témoin quelque chose auquel vous n'avez jamais à penser.

Un film, c'est un relais de fichiers

Quand vous collez une adresse dans PageToVid, plusieurs étapes s'enchaînent. L'enregistreur pilote un vrai navigateur et enregistre de courts clips et des captures nettes. L'étape de voix écrit une piste de narration et ses sous-titres. Le moteur de rendu assemble ensuite le tout dans le MP4 que vous téléchargez.

Chacune de ces étapes produit des fichiers, et chaque fichier sert presque aussitôt à l'étape suivante. Tout le film repose sur une promesse simple : un fichier tout juste écrit peut être lu immédiatement, par n'importe quelle étape, sur n'importe quelle machine, dans n'importe quel navigateur qui l'affiche en aperçu.

Pourquoi un dossier était la mauvaise image

Notre première installation traitait le stockage cloud comme un dossier. Un bucket était monté dans le conteneur, le code y écrivait comme sur un disque local, et le serveur web resservait les fichiers. C'était le chemin facile, et en développement ce même dossier vivait simplement sur un ordinateur portable.

Les vrais films nous ont montré la limite de cette image. Un système de fichiers réseau déguisé en dossier met ses écritures en tampon et garde ce qu'il sait en cache : un fichier écrit à l'instant n'est pas toujours visible l'instant d'après. Pour un produit dont le moteur de rendu réclame un clip quelques secondes après son enregistrement, cette petite fenêtre était précisément celle qui comptait. Nous voulions qu'il soit impossible de demander un fichier qui n'est pas encore là.

Nous avons aussi fait en sorte que le moteur de rendu parle toujours au bon serveur. Il récupère les médias auprès de l'application qui tourne à côté de lui, dans le même conteneur, et son adresse suit désormais le port sur lequel l'application écoute vraiment, au lieu d'une valeur par défaut qui appartenait à un autre outil.

Travailler en local, envoyer, transmettre l'adresse

Nous avons donc cessé de faire passer le bucket pour un disque. Chaque étape travaille maintenant sur le disque local rapide du conteneur, et dès qu'un fichier est terminé, il est envoyé via le SDK Google Cloud Storage. L'envoi renvoie une adresse https stable, et c'est cette adresse que toutes les autres parties du produit utilisent ensuite.

Le même chemin sert pour tous les types de fichiers :

  • les clips et captures que filme l'enregistreur
  • la piste de voix off et ses sous-titres
  • le MP4 final
  • les images et clips que vous ajoutez dans l'éditeur

Une fois l'envoi terminé, le fichier est là pour tous ceux qui le lisent : le moteur de rendu, l'aperçu de l'éditeur et l'API voient la même chose au même moment.

Un seul chemin de code, du portable au cloud

En développement local, il n'y a pas de bucket, et la même fonction de stockage renvoie simplement un chemin local. Une fonction, deux environnements, le même comportement. Ce que nous testons sur un portable est ce qui tourne en production, ce qui tient les surprises à l'écart des films.

Nous avons aussitôt senti un bonus. Enregistrer et convertir la vidéo sur un disque local va plus vite qu'à travers un montage réseau : chaque étape finit un peu plus tôt, et le film vous parvient un peu plus vite.

Un déploiement qui dit tout

Changer le code n'était que la moitié du travail. L'autre moitié consistait à s'assurer que le service en ligne lui corresponde. Cloud Run conserve les volumes déjà attachés si un nouveau déploiement ne les mentionne pas : retirer le montage de notre commande de déploiement ne suffisait donc pas.

Nous avons ajouté une instruction explicite qui efface les volumes à chaque déploiement. Chaque mise en production décrit désormais toute la configuration, y compris ce qui ne doit pas s'y trouver, plutôt qu'une modification posée sur ce qui tourne déjà. Une petite habitude au grand effet : ce que dit le workflow, c'est ce qui tourne.

Ce que cela change pour votre film

Pour la personne qui fait une vidéo, rien de tout cela n'est visible, et c'est tout l'intérêt. Vous collez un lien, l'enregistreur filme, la voix parle, et le moteur de rendu trouve chaque élément exactement là où il l'attend. L'aperçu dans votre navigateur et le rendu de notre côté lisent le même fichier.

Cela a aussi donné au produit un socle solide. Chaque étape parle désormais en adresses durables plutôt qu'en chemins sur une seule machine, et c'est la forme dont a besoin une chaîne qui grandit. Pour voir le résultat, collez un site et regardez-le devenir un film.

Voyez-le sur votre propre site

Collez une page et obtenez la vidéo commentée dont parle ce blog. La première est offerte.

Première vidéo offerte · sans carte · prête en quelques minutes

← Tous les articles