- Contexte
- Expression de besoin
- Pré-requis
- Livrable
- Back-end
- Front-end
- Détails des prestations
- Conclusion
Streaming HLS — service Windows, FFMPEG & diffusion web
Une architecture simple pour décoder, segmenter et diffuser un flux vidéo compatible navigateur.
Service Windows + décodage MP4 + diffusion HLS vers une page web HTTPS
Ce tutoriel présente une architecture simple et modulable pour lire un film au format MP4, le décoder, le ré-encoder en H.264/HLS avec FFMPEG, puis le diffuser dans un navigateur web. L’objectif est de proposer une base robuste pour du streaming personnalisé, avec possibilité de paralléliser la lecture des fichiers et d’ouvrir la voie à une future couche analytics.
Structure du tutoriel
Une vue rapide du contenu du projet pour cadrer les besoins, les composants et le résultat attendu.
Pourquoi ce projet HLS Streaming ?
Plusieurs interlocuteurs souhaitent pouvoir streamer leur webcam ou un film sur une page personnelle. Ce document formalise une réponse technique claire, réutilisable et industrialisable.
Je rencontre beaucoup de personnes me demandant de streamer leur webcam sur une page personnelle. Voici un petit tutoriel permettant de réaliser cela. Par notre expérience dans l’ingénierie informatique et l’IA, la société IALAB propose des solutions sur mesure pour concevoir ce type de service.
Objectifs fonctionnels du service
Le besoin porte sur un service Windows capable de lire un média, le transformer et le publier de manière compatible web.
Le projet consiste à réaliser un service s’exécutant sous Windows afin de décoder et streamer un film.
Le fichier .mp4 décodé est ensuite envoyé vers un site HTTPS via un flux HLS,
lisible depuis un navigateur moderne.
Il est nécessaire de prévoir la parallélisation de la lecture des fichiers .mp4
pour pouvoir étendre la solution à plusieurs flux ou plusieurs contenus.
L’objectif est de proposer une architecture adaptée et modulable pour lire le film au format Prysm tout en gardant une chaîne de traitement claire et maintenable.
Éléments nécessaires avant de démarrer
Ces composants forment la base minimale du tutoriel et de l’architecture cible.
Une machine Windows capable d’exécuter un service système, avec accès au film source.
FFMPEG est utilisé pour transformer la vidéo vers un format H.264 encapsulé en HLS.
Une page web personnelle capable d’intégrer un lecteur vidéo ou hls.js.
NGROK sert à relier la machine locale au site distant pour exposer les flux de manière sécurisée.
Ce que doit produire la prestation
Le livrable attendu couvre autant la partie technique que le résultat visible dans le navigateur.
- Un service Windows opérationnel pour lire et streamer un film.
- Une chaîne de décodage puis de ré-encodage H.264/HLS avec FFMPEG.
- Une exposition HTTPS du flux via NGROK ou un équivalent.
- Une page web affichant correctement le film dans le navigateur.
- Une base extensible pour la future partie analytics.
Découpage technique par module
Chaque carte décrit une partie du système, son rôle et son articulation avec le reste du flux.
Le navigateur ou l’utilisateur demande un film. Le média est localisé puis lu sur le V1, qui sert de point de traitement principal.
Le film est décodé afin d’être exploité par la chaîne de transformation vidéo. Cette étape permet aussi de préparer la parallélisation pour plusieurs fichiers MP4.
FFMPEG ré-encode le contenu en H.264 puis produit les segments HLS et le manifeste nécessaires à la lecture web côté client.
ffmpeg -i input.mp4 \
-c:v libx264 -c:a aac \
-f hls \
-hls_time 4 \
-hls_playlist_type event \
stream.m3u8
NGROK sert à passer de la machine locale vers le site distant en exposant le flux sur une URL HTTPS publique utilisable dans la page web.
ngrok http 8080
L’affichage et le streaming se font ensuite dans le browser web, soit via un lecteur natif, soit via une bibliothèque JavaScript compatible HLS.
<video controls autoplay width="720">
<source src="https://mon-url-ngrok/stream.m3u8" type="application/x-mpegURL" />
</video>
La solution doit permettre de lancer plusieurs lectures de fichiers MP4 en parallèle, avec une organisation par file d’attente, workers ou processus dédiés.
Organisation recommandée
Le cœur du système réside dans le service Windows, l’orchestrateur de lecture et le pipeline FFMPEG.
- Un service Windows supervise le lancement et l’état du streaming.
- Un module de lecture ouvre les médias demandés.
- Un orchestrateur route les flux vers les jobs FFMPEG.
- Chaque job produit un manifeste HLS et des segments.
- Un dossier ou serveur local sert les artefacts à NGROK.
Page de diffusion web
La partie front-end reste volontairement simple : une page HTTPS, un lecteur vidéo et une URL HLS.
Une balise <video> peut suffire si le navigateur prend en charge HLS en natif.
Pour une meilleure compatibilité, on peut intégrer hls.js afin de charger le fichier
.m3u8 dans plus de navigateurs.
Le résultat attendu est un affichage fluide du film ou de la webcam dans le browser web, accessible depuis une page personnelle.
Résultat et prochaine étape
L’architecture est en place : acquisition, traitement, exposition et lecture web sont couverts.
Avec cette architecture, le browser demande le film, le média est lu puis décodé, ré-encodé via FFMPEG en H.264/HLS, exposé grâce à NGROK et enfin affiché dans le navigateur. Il ne nous reste plus qu’à brancher la partie analytics ;)