Cloudflare a lancé le projet Streamline en tant qu’environnement expérimental et exemple open source pour créer des pipelines de traitement vidéo personnalisés sur sa plateforme destinée aux développeurs. Le projet se concentre sur les cas où les fonctionnalités prêtes à l’emploi de Cloudflare Stream ne suffisent pas, comme l’ajout d’annotations dynamiques à une diffusion en direct ou la création d’une version d’une vidéo hébergée contenant des sous-titres incrustés dans l’image.
Streamline répartit les rôles entre plusieurs composants de la plateforme Cloudflare. Les Containers exécutent le moteur multimédia pendant de longues périodes, avec des ressources CPU et mémoire prévisibles, tandis que les Durable Objects gèrent la coordination des sessions, le cycle de vie des conteneurs et le relais de la prévisualisation. Les Workers prennent en charge les signaux de contrôle, la surveillance et l’interface de l’application, qui peut être une application web, un agent logiciel ou un système embarqué.
Que propose concrètement Streamline ?
L’application peut créer une session de traitement, lancer un pipeline vidéo, lui envoyer des entrées, surveiller les métriques, puis l’arrêter. Le processus se poursuit après la déconnexion de l’application de contrôle ou sa reconnexion, jusqu’à ce que l’application l’arrête ou qu’il atteigne une durée maximale empêchant la session de rester active indéfiniment.
Le Container héberge le moteur multimédia, composé d’une couche de contrôle écrite en Go et d’un processeur multimédia utilisant FFmpeg dans l’implémentation actuelle. Le moteur peut recevoir un flux RTMPS, lire une vidéo hébergée via HLS depuis Cloudflare Stream ou recevoir des données en direct provenant d’une source telle qu’une webcam. Il peut également envoyer le résultat vers Stream Live via RTMPS ou fournir une prévisualisation à faible latence via WebSocket.
Opérations de modification prises en charge
- Appliquer des filtres tels que le flou et la saturation.
- Ajouter une image fixe ou un calque PNG actualisable pendant l’exécution.
- Incruster les sous-titres dans la vidéo.
- Régler les paramètres d’encodage, notamment le codec, le débit binaire, la résolution et la fréquence d’images.
Cloudflare présente des cas d’utilisation comprenant la modification d’une diffusion en direct par l’ajout d’un calque graphique, la conversion d’une vidéo hébergée en une version avec sous-titres et l’envoi d’images provenant de caméras vers un pipeline de traitement pouvant servir à la prévisualisation ou à l’analyse vidéo. Le projet comprend également un exemple d’application construite avec un Worker et une interface Astro, avec des fonctions pour les calques, les sous-titres, les filtres et l’incrustation d’image.
Sécurité et cycle de vie des sessions
Cloudflare a conçu le modèle de façon à ce que les clés des entrées et des sorties de Stream Live ne soient pas exposées à l’application de contrôle ni stockées dans le navigateur : elles sont conservées dans les secrets des Workers ou dans le stockage des Durable Objects, et l’application fait référence à des profils nommés au lieu de manipuler directement les clés. Le Worker vérifie également une session Cloudflare Access et associe la session active à l’identité autorisée, avec une seule session autorisée dans le déploiement décrit.
L’entreprise avertit que le modèle de déploiement privé présenté n’est pas un modèle prêt à l’emploi pour un service public multiutilisateur. La version expérimentale publique utilise une identité de conteneur par utilisateur authentifié et une seule session active par utilisateur, ainsi que des contrôles portant sur la concurrence, les médias et les ressources.
Qu’est-ce que cela signifie pour les développeurs ?
Streamline fournit une couche flexible entre le service vidéo géré et le traitement personnalisé, au lieu d’obliger le développeur à construire toute l’infrastructure opérationnelle en dehors de la plateforme. Cependant, les limites du modèle sont importantes : le traitement actuel repose sur le CPU des conteneurs, ce qui peut devenir un goulot d’étranglement lors de l’utilisation de résolutions ou de fréquences d’images élevées. Cloudflare indique que les orientations futures comprennent des pipelines de vision par ordinateur, le traitement multimédia avec accélération matérielle et la prise en charge de WebRTC et de MoQ, ainsi que des primitives natives d’encodage et de décodage dans les Workers.
Cloudflare a publié deux dépôts open source : cloudflare/streamline pour le moteur multimédia et les packages API, et cloudflare/streamline-demo pour l’application Worker, l’interface Astro, les outils de déploiement et l’intégration avec Access. L’entreprise a également rendu disponible une version expérimentale publique qui peut être testée ou déployée dans le compte de l’utilisateur.