Freebox V5 HD

  • État Nouveau
  • Type de tâche Anomalie
  • Catégorie UPnP AV
  • Assignée à Personne
  • Système d'exploitation Tous
  • Sévérité Basse
  • Priorité Normale
  • Basée sur la version 1.6.13
  • Due pour la version Non décidé
  • Date d'échéance Non décidé
  • Votes 0
  • Privée Non
Concerne le projet: Freebox V5 HD
Ouverte par F. Senis (fsenis) - 17/04/2014

FS#14680 - Rajouter un header "User-Agent" à la demande de flux

Les serveurs DLNA actuels sont puissants en particulier ils permettent le transcodage des fichiers présents sur le stockage dans des formats non reconnus par le lecteur.

La Freebox HD (V5) agit comme un tel lecteur (renderer on dit) mais il lui manque certains codecs ou containers. En particulier, le MP4 n’est pas digéré (il est même filtré à l’affichage dans la liste des fichiers alors qu’envoyés par le serveur).

Les serveurs se basent généralement sur une base de profils pour savoir quoi proposer à qui et dans quel format. Le choix du profil se fait habituellement sur la présence d’un champ d’entête “User-Agent” dans les requêtes.

La Freebox lors du parcours de l’arborescence met bien en place un User-Agent: “Linux/2.6 UPnP/1.0 fbxupnpav/1.0”, le serveur présente donc les fichiers dans les formats reconnus et ceux non reconnus dans le format destination du transcodage.

Cependant, lorsque la freebox demande le fichier (ou un byterange), elle n’indique plus son User-Agent, le serveur repasse donc en mode de base et propose au mieux le fichier dans le format original (éventuellement non compatible...) au pire, il ne sait plus comment générer le fichier demandé car n’a plus la notion des restrictions du renderer. Elle se prend donc une erreur 404 ou 400 en retour...

La solution est simple, il suffirait que la requête de streaming contienne aussi ce User-Agent, cela permettrait par exemple de créer un profil Plex ( https://forums.plex.tv/index.php/topic/73702-writing-profiles-for-dlna-devices/ ) supportant le trancodage ce qui est actuellement impossible.


Exemple de l’entête d’une requête UPNP (demande de contenu d’un répertoire) :

POST /ContentDirectory/51966528-f846-a974-f2d2-7d2caeb48766/control.xml HTTP/1.1
Content-Type: text/xml; charset="utf-8"
User-Agent: Linux/2.6 UPnP/1.0 fbxupnpav/1.0
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
Host: 192.168.5.113:32469
Content-length: 490

<...>

Exemple de l’entête d’une requête d’un media :

GET /object/9738a1d508787a45192d/file.avi HTTP/1.0
Host: 192.168.5.113:32469
Range: bytes=0-

Il suffirait donc que lors de la requête d’un média, la freebox envoye :

GET /object/9738a1d508787a45192d/file.avi HTTP/1.0
Host: 192.168.5.113:32469

User-Agent: Linux/2.6 UPnP/1.0 fbxupnpav/1.0

Range: bytes=0-

Oh petit démon dans la freeboite ! Implémente donc cette unique ligne de code et délivre nous d’heures de souffrance et de questionnement sur “pourquoi ca marche pô” ! On te fera une bise.

Cette tache ne dépend pas d'autre tache

dperetti (dperetti)
Friday 25 March, 2016 09:25:52

+1 . Incompréhensible que ce ne soit pas fait.

Chargement...