Tous les projets

ID Projet Ouverte Type Catégorie État Résumé
14680Freebox V5 HD17/04/2014AnomalieUPnP AVNouveauRajouter un header "User-Agent" à la demande de flux Description de la tâche

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.

Tâches 1 - 1 sur 1 Page 1 sur 1

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche