HOMEPLAYER : 8 L'accès à Distance De HomePlayer
Un article de Wiki FreePlayer.org.
Sommaire |
Introduction
Depuis sa version 1.3,HomePlayer, a introduit un système d'accès distant ainsi que la possibilité de lire tout type de médias audio/vidéo/freeboxTV à partir d'un navigateur web incluant un plugin Windows Media Player, un plugin Quicktime, un plugin vlc pour Mozilla ou bien encore à partir de version stand-alone de logiciels de lecture audio/vidéo capablent de lire un flux à partir d'une URL
Dans la partie préférences du HomePlayer Manager 1.5.2 (cf fig 0), l'utilisateur va pouvoir sélectionner les différents réglages propres à son système et à son player.
fig 0 : préférences HomePlayer Manager, partie Accès Distant
L'interface de contrôle des options de diffusion comporte une checkbox (boite de sélection) pour spécifier si on veut que ce flux soit transcodé ou non, ainsi que 8 listes déroulantes qui permettront de sélectionner l'ensemble des options de réglages des flux audio et/ou vidéo disponibles.
- une checkbox "Activer/Désactiver" le transcodage : cette option permet de spécifier si on veut envoyer le flux brut sans traitement des parties audio et/ou vidéo
- une liste déroulante "protocole de diffusion" : cette option permet de définir quel sera le protocole de diffusion utilisé par le vlc de HomePlayer, cette liste propose 4 choix possibles parmi les standards de diffusion les plus couramment utilisés "mmsh" (utilisé en général pour Windows Media Player), "http", "udp", "rtp" (utilisé en général pour Quicktime).
- une liste déroulante "type d'encapsulation" : pour que le flux soit diffusé, il est nécessaire que celui-ci soit encapsulé dans un conteneur de diffusion, cette option permet de définir quel type d'encapsulation sera utilisé parmi 8 choix possibles "asfh" (utilisé en général pour des flux propres à Windows Media Player), "ts" (utilisé en général par les outils de diffusion de type DVB), "ps" (utilisé pour les DVD), "mpeg1", "ogg" (utilisé en général pour tous les médias au format open source ogg/ogm), " mp4" (utilisé très souvent avec Quicktime), "mov" (utilisé très souvent avec les anciennes versions de Quicktime), "wav" (pour les fichiers au format audio wav), "raw" (données brutes)
- une liste déroulante "Codec vidéo" : cette option permet de définir la valeur de transcodage du codec vidéo qui sera utilisée parmi 10 choix possibles "WMV2" (utilisé pour Windows), "WMV1" (utilisé pour Windows), "mp4v" (mpeg-4 vidéo), "mp2v" (mpeg-2 video), "DIV1", "DIV2", "DIV3", "h264" , "MJPG" (format souvent utilisé dans les appareils photos numériques ayant des fonctions vidéos), "theo" (format vidéo open source theora)
- une liste déroulante "Codec audio (Vidéo)" : cette option permet de définir la valeur de transcodage du codec audio pour une vidéo qui sera utilisée parmi 9 choix possibles "mp3" (mpeg-1 layer 3 supporté par un très grand nombre de lecteur vidéo y compris Quicktime), "mpga" (mpeg-1 audio), "mp2a" (mpeg-2 audio), "mp4a" (mpeg-4 audio), "a52" (format audio open source), "vorb" (codec audio open source vorbis généralement utilisé avec le conteeur ogg), "spx" (format audio open source speex généralement adapté au format voix) , "s16l", "fl32"
- une liste déroulante pour le "Bitrate vidéo" avec un choix de 12 valeurs possibles allant de 16 à 2048 (unités kbit/s)
- une liste déroulante pour les "Bitrate audio" (Musique et Vidéo) avec un choix de 8 valeurs possibles allant de 16 à 256 (unités kbit/s)
- une liste déroulante pour les codecs audio partie "Music" avec un choix de 9 codecs audio possibles "mp3", "mpga", "mp2a", "mp4a", "a52", "vorb", "spx", "s16l", "fl32"
Vous pouvez retrouver plus de détails sur les différents codecs audio et vidéo, type d'encapsulation, protocoles utilisés par VLC sur cette page :
http://leslivresoublies.free.fr/leslivresoublies/VLC/VLC/Table_generale.html
ou sur le wiki de videolan : http://wiki.videolan.org
ou sur le tutorial de keypad :
http://www.tvfreeplayer.com/?module=news&news_id=269
Interface Web de l'accès distant
HOMEPLAYER : Interface Web accès distant
Valeurs par défaut (Windows+Internet Explorer+ WMP)
- 1a) protocole utilisé
Le protocole utilisé par défaut est le le protocole mmsh, le type d'encapsulation du flux est asfh, l'accès client se fait soit via mmsh:// soit mms:// soit http:// (cela dépend du client)
- 1b) Valeurs pas défaut (Windows+Internet Explorer+WMP) :
Les valeurs par défaut sont optimisées pour un utilisateur Windows+ Internet Explorer + plugin Windows Media Player : partie "Vidéo" (mmsh, asfh, WMV2, mp3, 96, 32), partie "Music" (mp3, 128).
fig 1 : valeurs par défaut avec transcodage
fig 2 : valeurs par défaut sans transcodage
Côté client avec Windows Media Player l'accès au flux se fait via l'url
http://adresse_ip:1234 ou mms://adresse_ip:1234
On peut soit coller l'url dans le windows media player (ouvrir url), soit chargé automatiquement à partir du plugin pour internet explorer (transparent pour l'utilisateur final).
Cette configuration marche aussi avec le plugin vlc pour Mozilla/Mozilla-Firefox, il est possible que le mode d'encapsulation ne soit pas compatible avec certains types de codecs audio/video (cf tableau dans la partie 4) ou que le plugin WMV1/2 ne soit pas présent ou indisponible sur le système d'exploitation (cas GNU/Linux sans les win32codecs ou les cas Mac OS X/*nix/*BSD). Pour le plugin vlc ou via l'application stand-alone (ouvrir flux réseau -> mms) l'accès au flux se fait via l'url :
mmsh://adresse_ip:1234
Valeurs pour Quicktime
- 2a) protocole utilisé
Pour Quicktime le protocole de diffusion utilisé est rtp (cf figure 7) . Les données sont envoyés du PC diffuseur au PC cible en utilisant rtp/udp via les ports 1234 (données), 1230 (audio), et 1232 (vidéo), avec ce protocole HomePlayer va créer un fichier hp.sdp à la racine du site web et le PC cible accède aux informations en invoquant l'adresse du serveur hébergeant HomePlayer http://ip_pc_homeplayer:8080/hp.sdp. Ce fichier contiendra toutes les informations pour établir la communication rtp
entre les deux machines.
fig 3 : fonctionnement de rtp avec HomePlayer.
Quicktime dans sa version de base ne supporte que les flux avec des codecs videos mp4v et des codecs audio mp4a ou mp3.
L'encapsulation se fait avec le conteneur mp4.
Il est possible de lui adjoindre un plugin payant pour supporter les flux de type MPEG2-TS (ou peut-être directement inclus dans la version pro ?).
Exemple de fichier SDP :
v=0 o=- 1145825576891754 2 IN IP4 127.0.0.1 s=NONE t=0 0 a=tool:vlc 0.8.5-svn c=IN IP4 192.168.1.100 m=video 1232 RTP/AVP 96 a=rtpmap:96 MP4V-ES/90000 a=fmtp:96 profile-level-id=3; config=000001b003000001b50900000100000001200086c400670c281078518f; m=audio 1230 RTP/AVP 97 a=rtpmap:97 mpeg4-generic/44100 a=fmtp:97 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1210; SizeLength=13;IndexLength=3; IndexDeltaLength=3; Profile=1;
Les ports udp pour l'audio et pour la vidéo peuvent être forcés à des valeurs quelconques. Pour effectuer cette opération dans les "commands VLC options" on peut rajouter les options suivantes :
- pour le port audio : --rtp-port-audio numéro_de_port_udp_audio
- pour le port vidéo : --rtp-port-video numéro_de_port_udp_vidéo
On peut combiner 2 ports identiques pour les données+audio ou données+vidéo (par exemple port données 1234, port vidéo 1234,port audio 1233)
Exemple d'un extrait de fichier m3u :
#EXTM3U
#EXTVLCOPT:sout=#rtp{dst=192.168.1.100,port=1234,sdp=file:///home/.../hp.sdp}
/home/harisson/_videotest/tux.mp4
- 2b) valeurs à utiliser
Si le fichier est compatible Quicktime .mp4 avec les codecs mpeg4 A/V il n'est pas nécessaire de transcoder le flux, dans les autres cas le transcodage est nécessaire. Il peut toutefois y avoir des codecs A/V incompatibles avec le mode d'encapsulation ou les codecs A/V de transcodage (cf partie 4).
L'accès peut se faire via la version stand-alone de Quicktime (ouvrir url) ou via le plugin QT Mozilla sous Windows ou QT Safari sous Mac avec une URL de type :
http://adresse_ip_pc_homeplayer:8080/hp.sdp
figure 4 : valeurs à utiliser pour QT avec transcodage
figure 5 : valeurs à utiliser pour QT sans transcodage
Le plugin mozilla-vlc peut aussi utiliser ce protocole. Il est à noter que le codec video h264 ne marche pas encore (?) sous GNU/Linux.
Dans les deux cas l'accès côté client sera une URL de type (transparent pour les utilisateurs du plugin QT dans leur navigateur) :
http://adresse_ip_homeplayer:8080/hp.sdp
Le plugin QT est scriptable tout comme le plugin mozilla-vlc via javascript.
Exemple de fonctions d'appel du plugin QT, méthodes play et stop :
<a href="#" onclick="javascript:document.flux.play();return false">play</a> <a href="#" onclick="javascript:document.flux.stop();return false">Stop</a>
- 2c) extension possible (non implémenté dans HomePlayer)
Il est possible d'étendre le modèle en utilisant le protocole RTP/RTSP, ce modèle nécessite l'ouverture d'un port supplémentaire pour fonctionner (par exemple 8082) et ne créera pas de fichier SDP en dur sur la machine hôte (cf figure 6).
figure 6 : utilisation du protocole RTP/RTSP (non implémenté)
L'accès côté client se fera via une URL de type :
rtsp://adresse_ip_homeplayer:8082/hp.sdp
Le plugin mozilla vlc
Le plugin mozilla vlc est disponible pour le moment sur les plateformes Windows et GNU/Linux (la version Mac OS X est en cours pour les versions > vlc 0.8.5-test3/-test4), il a l'avantage d'accepter tous les types de flux qu'on peut lui envoyer ainsi que la majorité des codecs A/V et n'importe quel type d'encapsulation.
fig 7 : plugin vlc pour mozilla-firefox
Ce plugin est scriptable dans une page web via javascript avec comme exemple ci-dessous l'appel des méthodes play, stop, volume_up, volume_down :
<a href="#" onclick="javascript:document.flux.play();return false">play</a>
<a href="#" onclick="javascript:document.flux.stop();return false">Stop</a>
<AREA href="javascript:volume_up()" shape="poly" coords="120,88,130,78,120,68,120,78">
<AREA href="javascript:volume_down()" shape="poly" coords="30,88,30,78,30,68,20,78">
function volume_up()
{
var previous = document.flux.get_volume();
var newvolume = previous + 10;
if( newvolume > 200 ) newvolume = 200;
document.flux.set_volume( newvolume );
}
function volume_down()
{
var previous = document.flux.get_volume();
var newvolume = previous - 10;
if( newvolume < 0 ) newvolume = 0;
document.flux.set_volume( newvolume );
}
Il est à noter que pour le moment le plugin vlc de mozilla fournies avec HomePlayer sous windows est malheureusement inopérant :-( (des versions -test1 à -test4)
Il possède cependant un bug contraignant sous GNU/Linux avec des versions inférieures à vlc 0.8.5-test3 : quand un événement inattendu intervient au niveau du navigateur (crash de celui-ci ou fermeture de la fenêtre sans un arrêt explicite du flux etc) les fonctions javascript du plugin deviennent inaccessibles ("document.flux.play is not a function") rendant de fait le plugin inopérant.
Pour remédier à ce bug (uniquement sous GNU/Linux), il faut effectuer une succession de vidange du cache (clear cache) suivi d'un about:plugins dans la barre URL ou d'effacer le contenu du répertoire Cache du navigateur suivi d'un about:plugins dans la barre URL (opérations à effectuer dans une fenêtre unique ie pas dans un tab).
Remarques diverses
- Plus le taux d'upload de la machine hôte est élevé, plus on peut définir des bitrate audio/vidéos élevés.
- Pour une utilisation uniquement en local, il est recommandé de ne pas transcoder le flux pour garder la qualité initiale du média.
- Concernant l'accès aux FreeBoxTV : si votre machine se trouve derrière un routeur, il est important de spécifier le port client rtp pour que vlc puisse lire les chaines FreeboxTV.
- Pour que ce soit possible il suffit juste de rajouter dans les "command VLC options" de HomePlayer (cf figure 8 ci-après) l'option : --rtp-client-port numéro_de_port (par exemple 1234).
fig 8 : rajout du port rtp pour une utilisation FreeboxTV derrière un routeur externe
Incompatibilités recensées suivant le type de fichier
- 5a) incompatibilités fichiers audio/type d'encapsulation/codecs A/V :
- ogg/vorbis encapsulé dans du mp3
- 5b) incompatibilités fichiers vidéos/type d'encapsulation/codecs A/V :
- ogg/theora encapsulé dans autre chose que du ogg
(à compléter au fur et à mesure des tests).
Conclusion
La fonction playweb/accès distant de HomePlayer permet à un utilisateur de lire un média (Film, Musique, FreeboxTV) présent sur son ordinateur depuis un autre ordinateur de son réseau LAN ou depuis un ordinateur distant via Internet.
Les médias vidéos ayant des codecs de type theora et mpeg4 (x264, h264, mpeg4) nécessitent des ordinateurs puissants pour les opérations de décodage et de transcodage.
©Ce document est soumis à la licence Creative Commons 2.0 BY-NC-SA et appartient aux développeurs et aux contributeurs du mod HomePlayer.








