Bonjour, j'ai une route HTTP dans un projet Nodejs qui pipe un stream dans une réponse (un flux video mp4).
La route fonctionne le fichier est lisible dans le navigateur, par contre au niveau du navigateur je ne peux pas naviguer dans la "duration" (timeline) de la video.
Les clicks sur la "timeline" qui est encadré en rouge ne fonctionne pas le déplacement via "drag and drop" non plus,
en faite la timeline change et revient quasi-immédiatement à l'endroit précédent.
En cherchant un peut j'ai vue qu'il fallait définir un en-tête
pour indiquer au navigateur que la ressource est "navigable"
Est au niveau de la requête il faut envoyer un en-tête Content-Range et passé en valeur l'éventail de données qu'on veut récupéré puis parser les valeurs côté serveur ect, ect...
Mais en faite ça ne permet pas au player "native" de fonctionner, ça me sert juste à faire des requêtes personnaliser pour "manuellement" avancer/reculer dans la "timeline" du fichier, non ?
J'ai un paramètre startAt qui peut être passé dans l'URL c'est un timecode de la vidéo qui permet de facilement changer la timeline,
mais du coup j'ai le même problème le player native du navigateur, il y comprend rien à mon paramètre du coup il marche pas.
J'imagine que je peux plus où moins le faire fonctionner d'une façon où d'une autre en bricolant un player en Javascript qui va écouter les changement dans la timeline est mettre à jour l'url du stream, met j'aimerais quand même que le player par défaut du navigateur puisse fonctionner.
Si quelqu'un à déjà manipuler des flux dans un contexte HTTP(s) est a déjà eu ce problème (même si c'est dans un autre langages j'imagine que la logique du problème est transposable et doit se situer au niveau des Headers HTTP notamment) et qu'il pourrait me partager l'expérience de sont problème, cela pourrait surement m'aider, merci d'avance.
Normalement la balise <video> est sensée faire des requêtes avec des Range lorsque c'est possible. Si le serveur répond avec un code 206 et un chunk correct, cela devrait fonctionner sans soucis.
Voici un exemple avec Node qui envoie des chunks de 1Mo à chaque requête disposant d'une en-tête "Range" :
Oui, en effet le Content-Range + Accept-Range avec un status 206 suffit à faire comprendre au navigateur comment naviguer dans la ressource,
je me doutais que cela venais des en-têtes car ces les résultats qui revenait le plus dans les recherches que j'avais faites, mais j'avais pas bien compris comment les faire fonctionner correctement.
L'article que tu as trouvé est assez explicite j'ai réussie à le faire fonctionner, merci.
suggestion de présentation.
suggestion de présentation.