Chargement…

Streamer depuis une Freebox Ultra

Streamer depuis une Freebox Ultra

J'ai fait un projet qui permet de streamer des films depuis ma Freebox. Mais j'utilise un petit serveur dédié au streaming:

Il y beaucoup d'objections à faire ce que j'ai fait:

  • La Freebox est visible depuis un media center via SMB
  • La Freebox Ultra permet de lancer des VM
  • Tu as déjà un Nas avec Jellyfin et NVENC

Mais mon problème, c'est que non seulement le media center ne tient pas si le flux est trop gros, car ce protocle repose uniquement sur le débit du réseau lui même. Comment plafonner ce débit si ce n'est la compression vidéo ?

De plus, j'ai passé des années à déplacer les mêmes fichiers d'une machine à l'autre pour pouvoir les regarder. Cette fois j'ai arrêté de les copier...

Le problème n'était pas le stockage, c'était la copie

J'ai une Freebox Ultra que j'aime beaucoup, avec un disque plein de vidéos et un serveur FTP activé dessus. Ça marche aussi sur une Revolution, et probablement sur les autres modèles, parce que le FTP est là depuis toujours.

freebox-logo.svg

Avant ça j'avais déjà monté une box de streaming à partir de mon NAS : Jellyfin, GPU passthrough sur une Nvidia Quadro P1000 pour l'encodage, le confort complet. Mais le NAS impose une copie des fichiers à chaque fois, et comme je passe par Nextcloud, ça veut dire pousser 40 Go avant de pouvoir lancer un film. Le vrai coût du setup, ce n'était pas le GPU, c'était l'aller-retour.

Pourquoi je ne fais rien tourner dans la box

La Freebox sait faire tourner des VM. Donc l'idée évidente, c'est d'y coller le serveur média et de fermer le sujet.

Sauf que je n'ai aucune envie de charger la machine qui fait tenir mon réseau debout. Elle a un job et elle le fait bien : servir des octets.

Et il y a un deuxième argument, qui compte au moins autant à mes yeux. Le jour où je veux accéder à ma collection depuis l'extérieur, je préfère largement ouvrir sur une machine que je peux jeter et reconstruire en dix minutes, plutôt que sur mon routeur. Une box compromise, c'est tout le réseau derrière. Un proxy compromis, c'est un conteneur que je repars de zéro.

Donc j'ai posé un proxy en front, et j'ai réparti le travail :

  • la box lit le disque et envoie des plages d'octets en FTP, rien de plus
  • le proxy fait tout le CPU : probe, transcodage H.264, découpage HLS
  • le navigateur reçoit un flux léger, calibré pour du wifi d'hôtel ou de la 4G

Le vrai point dur : ffmpeg ne sait pas lire du FTP

Toute l'architecture découle de là. ffmpeg ne parle pas au serveur FTP de la box, donc je lui présente un proxy loopback en HTTP qui répond en 206 Partial Content avec un Content-Length exact, et qui traduit derrière les Range HTTP en REST/RETR sur le FTP.

Résultat, la source devient seekable.

Sauter à 1h20 d'un remux de 60 Go ne télécharge que cette région du fichier, jamais le reste. Si je passais un pipe à ffmpeg à la place, tout le design du seek s'effondre.

Ce que ça donne à l'usage

C'est hyper fluide. J'ai vraiment l'impression d'être sur YouTube, sauf que c'est ma collection, que rien ne part chez personne, et que les vignettes sont des frames extraites du milieu de mes propres fichiers plutôt que des jaquettes tirées d'un catalogue en ligne.

screenshot-library.jpg

Le projet est en Go, sous licence MIT, et se lance en Docker :

git clone https://github.com/aluzed/freebox-proxystream.git
cd freebox-proxystream
cp .env.example .env
docker compose up -d

Un détail contre-intuitif avant de choisir votre machine : un Raspberry Pi 5 est moins bon qu'un Pi 3 ou un Pi 4 ici, parce que le BCM2712 a perdu l'encodeur H.264 matériel.

La génération qui a perdu l'encodeur a perdu le job. Sur x86 ou Apple Silicon, vous avez le choix entre libx264 en soft et NVENC, VAAPI, Quick Sync ou VideoToolbox en hardware.

Le dépôt est ici : freebox-proxystream.

C'est un projet communautaire, sans API privée ni rétro-engineering, et Free n'a rien à voir avec.

FAQ

Pourquoi ne pas simplement utiliser Jellyfin avec le NAS existant ?

Parce que ce setup impose de copier les fichiers avant de les regarder, par exemple 40 Go à pousser via Nextcloud avant de lancer un film. Le problème n'était pas l'encodage mais bien cet aller-retour de copie systématique.

Pourquoi ne pas faire tourner le serveur directement dans la VM de la Freebox Ultra ?

Pour ne pas charger la machine qui fait tenir tout le réseau, qui doit rester dédiée à servir des octets. C'est aussi une question de sécurité : mieux vaut exposer un proxy jetable et reconstructible en dix minutes plutôt que le routeur lui-même.

Pourquoi ne pas juste utiliser le partage SMB du media center ?

Parce que ce protocole dépend uniquement du débit brut du réseau, sans aucun mécanisme pour plafonner ou adapter le flux. Sans compression vidéo en amont, un flux trop lourd fait simplement décrocher le media center.

Pourquoi ffmpeg a-t-il besoin d'un proxy HTTP intermédiaire ?

Parce que ffmpeg ne sait pas dialoguer directement avec un serveur FTP. Le proxy traduit les requêtes Range HTTP en commandes REST/RETR sur le FTP et répond en 206 Partial Content, ce qui rend la source seekable sans télécharger tout le fichier.

Quel type de machine choisir pour héberger le proxy ?

Privilégier x86 ou Apple Silicon, qui offrent le choix entre libx264 en logiciel ou des encodeurs matériels comme NVENC, VAAPI, Quick Sync ou VideoToolbox. Un Raspberry Pi 5 est à éviter puisque son SoC BCM2712 a perdu l'encodeur H.264 matériel, contrairement au Pi 3 ou au Pi 4.

Ce projet a-t-il un lien officiel avec Free ?

Non, c'est un projet communautaire indépendant, sous licence MIT, qui n'utilise aucune API privée ni rétro-engineering. Il s'installe simplement via Docker en clonant le dépôt GitHub.


Poursuivre la lecture

Comment je track mon usage Claude Code Dev
#monitoring screen#claude code#gadget

Comment je track mon usage Claude Code

Comment j'utilise un mini écran sur mon serveur Linux pour surveiller le hardware et la consommation Claude Code en temps réel. Un setup minimaliste qui change vraiment le quotidien.

Alexandre P.
Dokploy me fait un appel du pied News
#deploy#vercel#railway

Dokploy me fait un appel du pied

Vercel et Railway simplifient le déploiement de SaaS, mais une alternative auto-hébergée existe pour ceux qui ont déjà un VPS. Retour d'expérience après un vrai test.

Alexandre P.