SAVINGSFinancial gain :Save $1,500 to $3,000 / year per studio (Zero software royalties)
NO SUBSCRIPTIONSoftware cost :$0 / month · Open-source, zero recurring fees, no vendor lock-in
MAC & MAC MINIStudio appliance :Perfect silent control unit: fanless profile, dual HDMI screens & auto-launch
APPLE SILICONM1 to M4 chips :Apple Silicon tuning: instant 4K playback with zero heat build-up
BUDGET MINI PCSAccessible hardware :Runs on refurbished hardware (Dell Wyse, HP ProDesk) starting at $40
GRAPHICS ACCELERATIONSmooth playback :Hardware-accelerated engine: buttery smooth 4K & 2K 60 fps playback
100% OFFLINEOutage proof :Operates without Internet: resilient against fiber cuts and ISP outages
TOUCH KIOSKSelf-service :Member touchscreen with live class countdown and easy selection
DUAL SCREENSMulti-display :Simultaneous feeds: main workout screen + gym floor TVs
24/7 GYM RADIOBackground music :Continuous music flow with seamless crossfade and automated voice alerts
CUSTOM CONTENTCatalog freedom :100% Agnostic: play your own workouts (Cycling, HIIT, Yoga, Pilates)
MULTI-OSCross-platform :Windows 10/11, macOS, Linux, Android tablets and iPadOS exploration
NATIVE ANDROIDDedicated app :Available on touchscreen tablets to control your fitness studio seamlessly
SIMPLE REMOTEEasy control :Choice of 2.4 GHz wireless clicker or local smartphone QR web app
PRIVACY & GDPRData sovereignty :100% Local: zero analytics, zero cameras, your data stays in your club
BLACKOUT RECOVERYElectrical resilience :Autonomous auto-recovery and instant playout resume after power outage
1-CLICK BACKUPUniversal export :Export and restore your entire schedule and video catalog in a single ZIP
ECO-FRIENDLYLow power draw :Under 10 Watts active draw: silent, cost-effective and eco-friendly
Back to releases
V3.0.3

Bobine V3.0.3

Bobine

La version 3.0.3 apporte des corrections critiques de synchronisation multimédia et de résilience des données pour l'ensemble des plateformes supportées. Elle élimine définitivement les désynchronisations décodeur au saut temporel (seek) sur navigateurs et terminaux mobiles, déverrouille l'accès réseau à la vitrine complète du mode cinéma, sécurise les processus d'encodage via des imports atomiques sans orphelins, et aligne la distribution des flux vidéo sur les standards stricts HTTP Range RFC 7233 et RFC 9110.

Cette même version corrige également une cause racine de lenteur réseau et d'instabilité propre à la version Android (base de données et fichiers à forte fréquence d'accès déplacés vers le stockage interne rapide, accès disque sortis de la boucle d'évènements du serveur), fiabilise durablement la diffusion temps réel vers les écrans et tableaux de bord (y compris sur un Wi-Fi imparfait), ajoute un nouveau thème sombre, et configure correctement les sorties audio dès le premier déploiement de l'installateur headless.


1. Téléchargement des Binaires Officiels (Version 3.0.3)

Plateforme & EnvironnementFormatArchitectureTéléchargement DirectProfil & Fonctionnalités Clés
Android.apk
(Paquet natif)
ARM64
(arm64-v8a)
Télécharger Bobine-3.0.3.apkTablettes Tactiles & Régie Studio Mobile
• Régie autonome complète : remplace tout PC encombrant dans la salle
• Double affichage : pupitre coach tactile (/grid) + diffusion TV grand écran (/cinema)
• 100% hors-ligne, fiable même en sous-sol sans Wi-Fi ni 4G
Windows 11.exe
(Installeur)
x86-64Télécharger Bobine-Setup-3.0.3.exePC de Bureau & Ordinateurs Portables Windows
• Installation guidée en 1 clic avec raccourci sur le Bureau
• Démarrage discret près de l'horloge (icône systray en arrière-plan)
• Mode capot fermé (clamshell) : branchez le portable en HDMI à la télé sans mise en veille
Debian Ubuntu Linux Mint.deb
(Paquet & Dépôt)
x86-64
(amd64)
Dépôt APT apt.bobine.fit
bobine_3.0.3_amd64.deb
Postes Linux de Bureau & PC Reconditionnés
• Paquet officiel .deb et disponible sur la Logithèque Ubuntu App Center
• Mises à jour fluides en 1 clic via le dépôt officiel apt.bobine.fit
• Idéal pour recycler un ancien PC de bureau en borne fitness autonome
Apple.dmg
(Image disque)
Apple Silicon
(arm64)
Télécharger Bobine-3.0.3.dmgMacBook, Mac mini & iMac (Apple Silicon)
• Glisser-déposer dans /Applications, prêt à diffuser en 2 secondes
• Expérience Mac soignée : icône Retina native et menu discret dans la barre supérieure
• Diffusion 4K silencieuse : zéro surchauffe et zéro bruit de ventilateur sur MacBook
TauriBinaire natifx86-64 (Linux)Télécharger bobine-assistantAssistant Graphique de Gestion & Déploiement
• Scanner réseau intelligent : détecte automatiquement toutes les bornes Bobine sur le Wi-Fi/LAN
• Déploiement et mise à jour des bornes à distance sans toucher au terminal
Debian ApplianceScript automatiséx86-64curl -sSL https://bobine.fit/install.sh | bashAppliance Dédiée Headless (Intégrateurs & Geeks)
• Déploiement automatisé en 18 étapes sur mini-PC dédié (Wyse 5070, NUC, Tiny)
• Kiosque X11 plein écran direct, zéro environnement de bureau superflu
• Pilotage HDMI-CEC matériel : allume et éteint automatiquement le téléviseur
bobine.fitPortail WebUniverselVisiter bobine.fitSite Officiel & Base de Connaissances
GitHubBinaires & SourcesMulti-OSVoir les Releases
Accès anticipé : Bêta
Historique Complet des Versions & Code Source

2. Élimination Définitive du Gel d'Image au Seek

Sur les décodeurs matériels stricts (MediaCodec sous Android, VA-API sous Linux), un saut temporel à chaud pendant la lecture pouvait provoquer un déphasage entre l'horloge audio et la reconstitution du groupe d'images (GOP) vidéo. L'audio redémarrait immédiatement, tandis que le pipeline vidéo rejetait les frames arrivant en retard, gelant l'affichage sur une frame fixe alors que le son et le compteur continuaient d'avancer.

La version 3.0.3 déploie une stratégie à quatre verrous dans /kiosk et /cinema :

  1. Pause préalable et reprise sur seeked : L'élément en lecture est immédiatement mis en pause avant d'assigner la nouvelle position temporelle, figeant l'horloge audio. La lecture ne reprend qu'après confirmation matérielle de calage via l'événement seeked (avec timeout de secours à 1200 ms).
  2. Garde anti-réentrance : Tout nouvel appel de recherche est rejeté tant que video.seeking est actif, évitant l'écrasement perpétuel du buffer décodeur.
  3. Période de grâce après seek (3 000 ms) : Les micro-recalages périodiques de position émis toutes les 250 ms par le backend sont ignorés pendant 3 secondes sur les kiosques miroirs, laissant le temps aux tampons de se stabiliser.
  4. Watchdog d'images peintes (requestVideoFrameCallback) : Surveillance continue du nombre réel de frames présentées à l'écran (presentedFrames). Si un gel effectif de rendu vidéo est détecté pendant la lecture (visualFreeze), un micro-seek de rattrapage (+0,05s) avec relance sur seeked débloque automatiquement la texture d'affichage.

3. Déverrouillage Universel du Mode Cinéma Réseau

  • Affichage ciblé : La vue d'attente passive « En attente d'un cours » est désormais strictement réservée à la sortie filaire HDMI de la tablette Android (data?.deployment_profile === "android" && isWiredDisplay()).
  • Accès réseau complet : Les postes, tablettes et téléviseurs connectés au réseau local accédant à http://<IP>:8000/cinema/ bénéficient directement de la vitrine complète de cours avec navigation par catégories, héros dynamique et sélection fluide.

4. Normalisation et Imports Vidéo Atomiques

  • Zéro fichier résiduel corrompu : Tout import vidéo ou arrière-plan écrit d'abord dans un fichier temporaire dédié temp_norm_*. Le fichier n'est déplacé vers sa destination finale video_* via shutil.move qu'après validation intégrale de la normalisation et de l'extraction des métadonnées.
  • Purge garantie : En cas d'interruption réseau ou d'arrêt du processus en cours de traitement, le bloc finally détruit immédiatement les fichiers temporaires, empêchant l'accumulation de MP4 incomplets sans atome moov.

5. Streaming HTTP Range Conforme RFC 7233 / 9110

  • Prise en charge complète des requêtes avec plages d'octets suffixées (bytes=-N), indispensables pour les décodeurs demandant les métadonnées de fin de fichier.
  • Suppression systématique de l'en-tête Content-Range lors des réponses complètes HTTP 200, garantissant une conformité stricte aux spécifications et supprimant les erreurs de chargement sur les navigateurs stricts.

6. Cause racine et correctifs de performance (Android)

  • Stockage réparti sur deux racines : la base de données SQLite, les miniatures, les journaux techniques et les pochettes radio résidaient sur le stockage externe de l'application (servi par FUSE, significativement plus lent que le stockage interne) — chaque requête à la base pouvait bloquer la boucle d'évènements du serveur pour tous les clients connectés en même temps. Ces fichiers sont désormais placés sur le stockage interne rapide de l'appareil ; les médias volumineux (vidéos, fonds animés, pistes audio) restent sur le stockage externe, adapté à la lecture séquentielle de gros fichiers. Une installation existante est migrée automatiquement, sans risque : copie vérifiée par contrôle d'intégrité, jamais de suppression de l'original.
  • Accès disque sortis de la boucle d'évènements : les lectures de la base de données déclenchées par le streaming vidéo et par les commandes de lecture s'exécutent désormais dans un bassin de threads dédié plutôt que directement sur la boucle asynchrone principale du serveur.
  • Diffusion WebSocket parallélisée : l'envoi d'un évènement à tous les écrans connectés se fait maintenant en parallèle avec un délai de garde par client, au lieu d'un envoi séquentiel où un seul appareil lent retardait tous les autres.
  • Keepalive assoupli : le délai de tolérance avant de considérer une connexion morte est porté de 20 à 60 secondes, adapté aux limitations de minuteurs que les navigateurs appliquent aux pages en arrière-plan ; un signal de vie est également envoyé dès qu'une page redevient visible.
  • Cache des vues Web natives revalidé plutôt que désactivé, réduisant le volume de données retéléchargées à chaque affichage d'écran.

6bis. Tableau de bord réseau — gel silencieux corrigé, renforcement Wi-Fi imparfait

Trouvé et corrigé après un premier déploiement de ce lot : le tableau de bord d'administration pouvait geler silencieusement lorsqu'il pilotait un écran sur le canal réseau depuis une connexion Wi-Fi réelle — la position affichée s'arrêtait d'avancer sans qu'aucune erreur ne soit visible, jusqu'à ce que la connexion finisse par se rétablir d'elle-même, donnant une impression de répétition (la position semblant reculer puis rattraper son retard). Cause : un envoi vers un client jugé trop lent était silencieusement abandonné côté serveur sans jamais en informer ce client, qui continuait de croire sa connexion valide. Le serveur informe désormais correctement le client dans ce cas, qui se reconnecte alors en une seconde environ ; le tableau de bord surveille en complément sa propre réception de données et force sa reconnexion s'il ne reçoit plus rien pendant quelques secondes.

Renforcement supplémentaire pour les réseaux Wi-Fi imparfaits (gigue, itinérance entre points d'accès) : chaque évènement de position porte désormais un numéro de séquence croissant propre au canal. Le client compare ce numéro au précédent reçu — un écart signale un évènement perdu en silence et déclenche une resynchronisation REST immédiate de l'état affiché, au lieu d'attendre le prochain cycle du filet de sécurité périodique (15 secondes).

7. Cohérence de la bibliothèque en temps réel

Un import, une modification de titre ou une suppression de vidéo se répercute désormais instantanément sur tous les écrans ouverts (sélection tactile, vitrine cinéma, bibliothèque d'administration) au lieu d'attendre le prochain sondage périodique.

8. Redesign complet des 16 thèmes (8 Clairs & 8 Sombres)

Refonte visuelle et colorimétrique majeure de l'ensemble de la charte graphique :

  • Noms en un seul mot percutants : Carmin, Charbon, Miel, Sauge, Azur, Lavande, Lin, Ébène en clair ; Onyx, Graphite, Cuivre, Abysse, Indigo, Rubis, Orchidée, Moka en sombre.
  • Variations et nuances chromatiques profondes pour chaque thème sombre au lieu de simples aplats noirs.
  • Tokens CSS 100% dynamiques : élimination des couleurs en dur pour une adaptation fluide des fonds, bordures et indicateurs sur tous les écrans.
  • Certifié WCAG 2.1 AA / AAA : ratios de contraste validés par script de luminance.

9. Accélération matérielle intégrale multi-OS (Décodage GPU + Encodage GPU)

  • Zéro goulot CPU : Le réencodage vidéo à l'importation exploitait jusqu'alors le processeur pour décoder les flux (AV1, HEVC, H.264), provoquant des pics de consommation à 30W et une saturation CPU à plus de 740%.
  • Pipeline multi-paliers direct en VRAM :
    • Linux (VA-API) : Détection automatique du nœud de rendu DRM, décodage matériel direct et encodage h264_vaapi via scale_vaapi=format=nv12 sans copie RAM-VRAM.
    • macOS (VideoToolbox) : Décodage matériel -hwaccel videotoolbox et encodage h264_videotoolbox.
    • Windows (QuickSync) : Décodage matériel -hwaccel qsv et encodage h264_qsv.
    • Android (MediaCodec) : Décodage matériel cadencé à 1000 MHz pour AV1, HEVC, VP9 et encodage h264_mediacodec.
    • Repli automatique : Bascule transparente vers le mode hybride puis le mode logiciel CPU (libx264) si le décodeur matériel ne supporte pas le profil source.
  • Performances : Réduction de 93,8% du temps CPU, suppression du pic de puissance à 30W, encodage 4K 60 fps en temps réel et préservation stricte de la résolution 4K / 2K native.

10. Mode d'affichage hybride (Laptops & Tablettes)

  • Introduction du réglage wired_display_mode (dual_screen ou headless) permettant de choisir le comportement de la sortie vidéo HDMI/filaire.
  • Sur les ordinateurs portables en mode headless, neutralisation de l'affichage vidéo sur l'écran principal (accueil sobre pupitre) avec bouton de bascule directe pour piloter les cours sur grand écran HDMI.

11. Restructuration de la Documentation dans Paramètres

Organisation claire en 3 groupes distincts :

  1. Accès Local (cette machine) : URLs en boucle locale 127.0.0.1 avec liens directs vers /kiosk, /cinema, /coach, /radio (et /grid sur Android).
  2. Accès Réseau (LAN / Wi-Fi) : IP locale, mDNS et liens vers les écrans du réseau.
  3. Données et Chemins système : Base de données SQLite, répertoires vidéos, fonds animés, cours audio et dossiers surveillés.

12. Installateur headless (Debian)

  • Paquets audio installés systématiquement : alsa-utils, pipewire, pipewire-pulse, wireplumber et pulseaudio-utils étaient absents de la liste de paquets installée sur un Debian minimal.
  • Détection de carte son généralisée : détection dynamique de toutes les cartes présentes (HDA et USB).
  • Nouvelle étape de vérification (capabilities, également disponible via --check).
  • Nouvelle étape d'optimisation système (tuning) : gouverneur CPU en mode performance, journal système plafonné à 200 Mo.

13. Cache HTTP des fichiers statiques — toutes plateformes

Correction à la source du mécanisme de revalidation ETag et If-Modified-Since pour le frontend statique embarqué, empêchant tout affichage d'interface périmée après une mise à jour.

14. Autres correctifs

  • Correction des ResourceWarning lors des sous-processus FFmpeg (fermeture garantie de stdout et stderr).
  • Section « Désinstaller » des réglages adaptée dynamiquement au profil Android.
  • Liens de zone de notification (systray) reflétant fidèlement le port configuré.
  • Ajout du Xiaomi Pad 8 comme tablette de référence validée en conditions réelles dans la liste du matériel supporté.

15. Mise à jour 1-clic multi-OS directement intégrée dans l'application

Le bouton « Mettre à jour » de l'interface d'administration gère désormais l'ensemble des profils applicatifs en toute autonomie :

  • Linux de bureau & postes de dev : téléchargement en arrière-plan du paquet bobine_update.deb et déclenchement via pkexec dpkg -i, ou bascule automatique git checkout <tag> en environnement de développement.
  • Windows (.exe) : téléchargement autonome de Bobine-Setup-update.exe dans %TEMP%, écriture d'un script batch de relance et exécution silencieuse /VERYSILENT avec redémarrage transparent de BobineTray.exe.
  • Android (.apk) : téléchargement de l'APK dans le cache de l'application et ouverture instantanée de la boîte de dialogue système d'installation native Android via UpdateManager.kt.

16. Contrôle intelligent du capot d'ordinateur portable (Mode Clamshell)

  • Ajout de l'interrupteur « Ne pas mettre en veille à la fermeture du capot » dans Paramètres > Sortie câblée pour les laptops hôtes.
  • Détection matérielle via /proc/acpi/button/lid/ et configuration dynamique au niveau du système d'exploitation (gsettings sous Linux GNOME, powercfg sous Windows).
  • Masquage des liens directs /grid et /cinema dans la section câblée et nettoyage de l'ancienne astuce textuelle statique.
  • Retrait des parenthèses superflues (/grid) et (/cinema) dans les libellés de l'interface en français et en anglais.

17. Refonte UI/UX Grille Cinéma & Widget Apple Glassmorphism

  • Bannière Héros nette et luxueuse : suppression du dégradé vertical brumeux to top créant un voile terne ; transition nette marquée par une bordure subtile.
  • Widget Apple Glassmorphism : encadrement des métadonnées du héros ("Bobine", "À la une", titre, durée, bouton d'action) dans un conteneur translucide flottant avec flou d'arrière-plan profond (backdrop-filter: blur(28px) saturate(190%)), bordure fine et ombrage multi-couches adapté au thème actif.
  • Adoucissement des ombres des miniatures : refonte des ombres de .cinema-card-thumb et .cinema-all-thumb (ombres diffuses, élimination des angles durs) et élargissement des marges de défilement horizontal pour supprimer tout rognage.
  • Réactivité instantanée du renommage sans F5 : correction de la mémoïsation de setVideos sur /grid et /cinema, actualisant immédiatement le titre à la modification sans nécessiter de rechargement de page.
  • Notification de mise à jour thématisée : badge et toast harmonisés avec var(--accent-primary) et cliquables pour rediriger directement vers la section Mises à jour des paramètres.

18. Mode « Race to Sleep » & Optimisations Réencodage

  • Course à la veille (Race to sleep) : débridage complet des threads (-threads 0) pour laisser FFmpeg et libx264 mobiliser tous les cœurs et pipelines logiques du processeur afin d'achever la tâche le plus rapidement possible et ramener le matériel en veille profonde (C-states).
  • Profil logiciel ultrafast : bascule de veryfast à ultrafast sur le palier de repli CPU, divisant par 3 à 4 le temps de calcul lors du traitement logiciel.
  • Parallélisme matériel VA-API accru : ajout de -async_depth 4 sur h264_vaapi pour traiter simultanément plusieurs trames dans la VRAM des cartes graphiques Intel et AMD.
  • Conservation audio directe : détection du codec audio pour copier directement les flux AAC compatibles (-c:a copy), éliminant tout réencodage sonore inutile.

19. Refonte des Téléchargements et de la Documentation Orientée Profils Métiers

  • Adaptation fine au public de chaque plateforme :
    • macOS / Apple : valorisation de l'élégance, de la simplicité du glisser-déposer dans /Applications et du silence de fonctionnement (zéro bruit de ventilateur ni surchauffe sur MacBook).
    • Android (Tablette) : valorisation de la régie tout-en-un autonome (remplace tout PC encombrant dans la salle), du double affichage tactile + HDMI TV, et de la fiabilité 100% hors-ligne.
    • Windows 11 / 10 : valorisation de l'assistant 1-clic, du raccourci Bureau, du démarrage discret en barre des tâches et du mode capot fermé (clamshell).
    • Linux Bureau : valorisation du recyclage matériel de PC de bureau existants, intégration logithèque Ubuntu App Center et mises à jour faciles via dépôt APT.
    • Bobine Assistant : valorisation de la supervision multi-écrans sans terminal et du scan réseau intelligent.
    • Appliance Headless : valorisation des atouts techniques pour intégrateurs (script 18 étapes, allumage HDMI-CEC TV, <8W, 24/7).

20. Raffinements Visuels Mat & Densité Grille Cinéma / Pupitre

  • Fondu rapide gauche-droite & transition horizontale basse : élimination des coupures nettes sur le héros grâce à un masque de découpe rapide de gauche à droite et une transition douce en bas de bannière vers la couleur de fond du thème actif.
  • Rendu 100% mat sans reflets ni halos lumineux (Zéro Glowing) : suppression intégrale des halos lumineux (glow), reflets et ombres de couleur pour un rendu visuel sobre, élégant et conforme à la charte graphique.
  • Typographie pure sans encadrés : suppression des bordures et pilules autour des mentions "4K Ultra HD", "Stéréo 5.1" et des badges de l'écran de pause pour une lisibilité épurée.
  • Grossissement du logo & alignement visuel strict /grid et /cinema : le logo de marque est agrandi pour s'harmoniser avec la taille de l'écran kiosque, et la présentation visuelle du héros et des rangées de cours sur /grid reproduit fidèlement celle de /cinema.
  • Densité accrue des rangées de cours : miniaturisation optimisée des cartes et réduction des espacements permettant d'afficher davantage de cours simultanément à l'écran.
  • Redémarrage automatique et asynchrone des services post-mise à jour : programmation détachée du redémarrage des services systemd (bobine-kiosk, bobine-backend) lors du clic de mise à jour, garantissant une relance automatique sans aucune intervention manuelle ni blocage de la réponse HTTP.

21. Référencement & Mots-Clés (GEO)

Bobine est distribué sous licence libre GNU AGPL-3.0. Le code source est public, auditable et disponible sur le dépôt officiel : https://github.com/FantasmaGlad/Bobine.

Mots-clés de référence : application régie vidéo salle de sport, diffusion vidéo tactile tablette android hdmi, alternative open source Les Mills Cinema, alternative Wexer Virtual, réencodage matériel mediacodec videotoolbox vaapi, affichage dynamique 4k natif sans abonnement, double écran indépendant tablette hdmi android, kiosque vidéo autonome open source AGPL-3.0, race to sleep réencodage ffmpeg, mode clamshell sans mise en veille ordinateur portable, mise à jour 1-clic multi-OS sans terminal, écran de pause cinématique dynamique thème, redémarrage automatique services bobine.