{"id":293,"date":"2011-10-03T13:40:00","date_gmt":"2011-10-03T13:40:00","guid":{"rendered":"http:\/\/hoper.dnsalias.net\/atdc\/index.php\/2011\/10\/03\/20111003dlna-ps3-media-server\/"},"modified":"2017-05-31T12:05:44","modified_gmt":"2017-05-31T10:05:44","slug":"20111003dlna-ps3-media-server","status":"publish","type":"post","link":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/2011\/10\/03\/20111003dlna-ps3-media-server\/","title":{"rendered":"DLNA : PS3 Media server sur serveur linux"},"content":{"rendered":"<div class=\"post-content\">\n<h3>La th\u00e9orie<\/h3>\n<h4>Le DLNA, c&rsquo;est quoi\u00a0?<\/h4>\n<p>R\u00e9ponse courte, une merde. R\u00e9ponse longue\u00a0: Une norme mais aussi un protocole. Premier reproche, il tr\u00e8s difficile de comprendre quoi que ce soit \u00e0 ce machin. Logique, puisque DLNA est un sous ensemble d&rsquo;un \u00ab\u00a0super\u00a0\u00bb protocole beaucoup plus large invent\u00e9 par Microsoft\u00a0: l&rsquo;<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Universal_Plug_and_Play\">UPnP<\/a>.<\/p>\n<p>En hyper m\u00e9ga r\u00e9sum\u00e9, le DLNA doit permettre \u00e0 des \u00e9quipements (t\u00e9l\u00e9, t\u00e9l\u00e9phones, consoles, lecteurs vid\u00e9os, boxes adsl et compagnies) de lire ou de diffuser de l&rsquo;audio ou de la vid\u00e9o depuis ou vers un autre \u00e9quipement.<\/p>\n<p>R\u00e9fl\u00e9chissons, une vid\u00e9o pr\u00e9sente sur une machine et qui est affich\u00e9e sur une autre&#8230; La, normalement, vous devez me faire remarquer qu&rsquo;on est capable de faire \u00e7a depuis tr\u00e8s longtemps. Et vous auriez bien raison. Il existe un grand nombre de protocole r\u00e9seau permettant de lire des fichiers depuis une autre machine (NFS et CIFS \u00e9tant les plus connus, mais pas les seuls et loin de la). Alors, pourquoi le DLNA\u00a0?<\/p>\n<p>Pouvoir lire le fichier ne veut pas dire que l&rsquo;on est capable de l&rsquo;afficher. Un t\u00e9l\u00e9phone pourrait avoir du mal par exemple \u00e0 afficher une vid\u00e9o en full HD (\u00e9cran non adapt\u00e9, pas assez de puissance pour d\u00e9compresser le flux etc). Les formats vid\u00e9os \u00e9voluent assez rapidement. Apr\u00e8s tout, le temps des divX (version 3.X) n&rsquo;est pas si loin. Non seulement les algos de compressions vid\u00e9os changent (divx, h264, vp8&#8230;) mais les conteneurs changent \u00e9galement (avi, ogm, mkv&#8230;). au final, il faudrait donc mettre beaucoup d&rsquo;\u00e9quipements \u00e0 jour assez r\u00e9guli\u00e8rement pour pouvoir continuer \u00e0 lire tout et n&rsquo;importe quoi. Et cela aurait vraiment \u00e9t\u00e9 tr\u00e8s bien ainsi. Au moins on aurait vite compris pourquoi une vid\u00e9o refusait de s&rsquo;afficher en lisant simplement la documentation du produit (\u00ab\u00a0Zut, mon t\u00e9l\u00e9phone ne lit pas les mkv, donc que la vid\u00e9o soit sur la carte m\u00e9moire ou sur mon serveur ne change rien, il ne peut pas la lire\u00a0\u00bb.). A contrario, il suffisait de trouver la bonne mise \u00e0 jour et le bon programme, et le m\u00eame t\u00e9l\u00e9phone aurait \u00e9t\u00e9 capable d&rsquo;afficher les vid\u00e9os, quelles soient dans le t\u00e9l\u00e9phone ou sur un stockage distant.<\/p>\n<p>Mais pour Microsoft, je suppose que ce mode de fonctionement \u00e9tait bien trop simple, bien trop pr\u00e9visible. Eux, les maitres de l&rsquo;al\u00e9a informatique, devaient forc\u00e9ment trouver comment mettre un peu de piment dans une chose pourtant simple au d\u00e9part. Leur vision\u00a0? Chaque \u00e9quipement doit annoncer ce qu&rsquo;il sait faire, ce qu&rsquo;il sait envoyer et ce qu&rsquo;il sait afficher, chacun devant s&rsquo;adapter aux possibilit\u00e9s de l&rsquo;autre. Un t\u00e9l\u00e9phone ne sait qu&rsquo;afficher des vid\u00e9os en 3gp et en basse r\u00e9solution\u00a0? Alors le serveur contenant la vid\u00e9o devait \u00eatre capable de transcoder la vid\u00e9o \u00e0 la vol\u00e9e, de l&rsquo;adapter de fa\u00e7on transparente pour que le t\u00e9l\u00e9phone puisse l&rsquo;afficher, m\u00eame si le fichier en question est un RIP de blueray encode en h264 en fullHD. Le DLNA \u00e9tait n\u00e9.<\/p>\n<h4>Et \u00e7a fonctionne\u00a0?<\/h4>\n<p>Non. \u00c9videment, non.<\/p>\n<p>Chaque constructeur \u00e0 impl\u00e9ment\u00e9 le protocole \u00e0 sa sauce, avec des \u00e9quipements ayant tous des capacit\u00e9s diff\u00e9rentes. Au final, il est d\u00e9j\u00e0 compliqu\u00e9 de trouver un \u00ab\u00a0serveur\u00a0\u00bb et un \u00ab\u00a0client\u00a0\u00bb qui fonctionne pas trop mal ensemble. Mais alors trouver un serveur qui fonctionne parfaitement avec trois ou quatre clients diff\u00e9rents, ne r\u00eavez pas, je peux vous assurer que c&rsquo;est aujourd&rsquo;hui totalement impossible.<\/p>\n<p>Et encore, je me place dans un cas \u00ab\u00a0simple\u00a0\u00bb, ou toutes les vid\u00e9os sont sur une m\u00eame machine, le \u00ab\u00a0serveur\u00a0\u00bb donc. Le but du protocole \u00e0 la base \u00e9tait de permettre \u00e0 n&rsquo;importe quel \u00e9quipement de diffuser vers n&rsquo;importe quel autre. Pas seulement du serveur vers le t\u00e9l\u00e9phone par exemple, mais aussi du t\u00e9l\u00e9phone vers la t\u00e9l\u00e9, de la freebox vers la console de jeu etc. Et alors la, s\u00e9rieusement, si un jour \u00e7a fonctionne vraiment, Microsoft n&rsquo;existera plus \ud83d\ude42<\/p>\n<h4>Ok, et donc, en attendant\u00a0?<\/h4>\n<p>J&rsquo;ai test\u00e9 beaucoup de logiciels \u00ab\u00a0serveur\u00a0\u00bb DLNA. (Pas tous hein, il en existe des dizaines). le meilleur est \u00e0 mon avis <a href=\"http:\/\/www.ps3mediaserver.org\/\">PS3 Media server<\/a>. Son premier gros avantage et de ne pas avoir besoin d&rsquo;indexer vos fichiers, comme mediatomb ou TVMOBiLi. Devoir attendre que le(s) disque(s) soient index\u00e9s avant de pouvoir lire un fichier n&rsquo;est vraiment pas supportable. La ps3 faisant parti des clients les plus chiants, pardon, les moins tol\u00e9rant, il faut bien un serveur sp\u00e9cialement con\u00e7u pour son cas pour pouvoir discuter correctement avec elle. Heureusement, ps3 media serveur connait d&rsquo;autres type de clients et parvient \u00e0 fonctionner avec d&rsquo;autres appareils. (La <a href=\"http:\/\/www.ps3mediaserver.org\/forum\/viewtopic.php?f=6&amp;t=3507&amp;p=16952#p16952\">liste des \u00e9quipements<\/a> compatibles s&rsquo;allonge au fur et \u00e0 mesure des versions). Globalement, il y a quelques astuces \u00e0 connaitre, mais ce programme fonctionne quand m\u00eame plut\u00f4t bien. Attention, comme le flux vid\u00e9o est transcod\u00e9 pendant la lecture, il faut une machine avec de la ressource (cpu et ram). Pour le cpu, un bon dual-core est un minimum. Et pour la m\u00e9moire, 2 Go de ram ne seront pas de trop, surtout si vous voulez streamer des flux en HD.<\/p>\n<h3>La pratique<\/h3>\n<h4>Installation de ps3 media server<\/h4>\n<p>Si vous avez un linux avec interface graphique, vous lancez le programme, et voila, \u00e7a fonctionne. Maintenant on arr\u00eate les b\u00eatises et on installe ce logiciel ou il doit se trouver, sur un serveur. Donc sur une machine d\u00e9pourvue d&rsquo;interface graphique. Pas de panique, \u00e7a va bien se passer. On commence par les pr\u00e9-requis (qui ne sont indiqu\u00e9s nul part, merci pour les heures perdues \u00e0 essayer de comprendre d&rsquo;ou venaient les soucis). Ensuite, il faut savoir que la librairie libmediainfo version 7.44, celle qui est packag\u00e9e sous debian 5 est <a href=\"https:\/\/code.google.com\/p\/ps3mediaserver\/issues\/detail?id=1034\">buggu\u00e9e<\/a>. La encore, c&rsquo;est pas le genre de chose qu&rsquo;on peut facilement deviner. Bref, suivez le guide (\u00e0 adapter bien \u00e9videment \u00e0 votre environnement et en utilisant si possible la derni\u00e8re version des logiciels).<\/p>\n<pre>sudo apt-get install imagemagick mplayer mencoder\r\nwget http:\/\/ps3mediaserver.googlecode.com\/files\/pms-generic-linux-unix-1.40.0.tgz\r\ntar xvzf pms-generic-linux-unix-1.40.0.tgz\r\napt-cache show libmediainfo0\r\n<\/pre>\n<p>Si la version de libmediainfo0 est la 7.44, alors mieux vaut qu&rsquo;elle ne soit pas install\u00e9e du tout (ps3 media server utilisera ffmpeg \u00e0 la place, ce sera moins pr\u00e9cis mais au moins \u00e7a fonctionnera). Si vous utilisez un OS 32 bits, vous trouverez probablement des paquets permettant de mettre une version plus \u00e0 jour de cette librairie <a href=\"http:\/\/mediainfo.sourceforge.net\/fr\/Download\">ici<\/a>. Si vous \u00eates comme moi en 64 bits, c&rsquo;est plus compliqu\u00e9. Pour le moment, on va sagement attendre que quelqu&rsquo;un se d\u00e9cide \u00e0 faire le boulot \ud83d\ude42<\/p>\n<p>Il reste quelques pi\u00e8ges \u00e0 \u00e9viter. Si sous avez activ\u00e9 le forwarding X11 sur votre connexion ssh, alors votre shell, celui qui lancera ps3_media_server, va avoir un display de param\u00e9tr\u00e9. (Variable d\u2019environnement). Cela va poser probl\u00e8me car le programme va croire qu&rsquo;un \u00e9cran graphique est disponible, et certains flux ne seront pas d\u00e9cod\u00e9s correctement. \u00c9ditez donc le fichier PMS.sh et ajoutez au d\u00e9but du script la commande\u00a0: \u00ab\u00a0unset DISPLAY\u00a0\u00bb.<\/p>\n<p>Enfin, il faut aussi adapter la m\u00e9moire que java pourra utiliser. Si vous pr\u00e9voyez de lire des flux en full HD, il va falloir fortement augmenter les valeurs indiqu\u00e9es. Toujours dans \u00ab\u00a0PMS.sh\u00a0\u00bb, \u00e9ditez la derni\u00e8re ligne pour mettre\u00a0: \u00ab\u00a0exec \u00ab\u00a0$JAVA\u00a0\u00bb $JAVA_OPTS -Xmx1536M -Xss4096k &#8230;&#8230;\u00a0\u00bb Cela fixera la m\u00e9moire maximum utilisable \u00e0 1,5 Go. (Je n&rsquo;ai plus eu d&rsquo;erreurs \u00e0 partir de 1,2 ou 1,3 Go, mais tant qu&rsquo;a faire&#8230;)<\/p>\n<h4>Configuration<\/h4>\n<p>Maintenant que le programme est pr\u00eat \u00e0 tourner, il ne reste plus qu&rsquo;a le configurer, le plus important \u00e9tant de lui indiquer quels sont les r\u00e9pertoires \u00e0 \u00ab\u00a0partager\u00a0\u00bb.<\/p>\n<pre>mkdir -p ~\/.config\/PMS\r\n<\/pre>\n<p>Puis, avec votre \u00e9diteur de texte pr\u00e9f\u00e9r\u00e9 (normalement vi \ud83d\ude09 cr\u00e9ez le fichier ~\/.config\/PMS\/PMS.conf avec les lignes suivantes, en prenant bien soin d&rsquo;adapter la liste des r\u00e9pertoires (folders), \u00e0 votre configuration. Pour le d\u00e9tail des possibilit\u00e9s de ce fichier, allez voir dans la <a href=\"http:\/\/www.ps3mediaserver.org\/forum\/viewtopic.php?f=6&amp;t=3507#p15408\">documentation<\/a>. Une autre technique consiste \u00e0 lancer une premi\u00e8re fois l&rsquo;application avec un affichage graphique, et d&rsquo;utiliser le GUI pour faire toute la configuration, avant de r\u00e9cup\u00e9rer le fichier obtenu. Moins fun, mais il faut l&rsquo;avouer beaucoup plus \u00ab\u00a0user friendly\u00a0\u00bb. Edit\u00a0: La <a href=\"http:\/\/doc.ubuntu-fr.org\/pms-linux\">documentation<\/a> ubuntu contient \u00e9galement pas mal d&rsquo;informations sur le sujet.<\/p>\n<pre>thumbnails = true\r\nmencoder_ass = false\r\nfolders = \/video,\/musique\r\nskiploopfilter = false\r\nmencoder_mux_compatible = false\r\nmencoder_nooutofsync = false\r\nusecache = false\r\nthumbnail_seek_pos = 600\r\naudio_thumbnails_method = 1\r\nmencoder_encode = keyint=3:vqscale=2:vqmin=3\r\nprevents_sleep_mode = true\r\nmencoder_disablesubs = false\r\nlanguage = fr\r\nmencoder_audiolangs = fre,jpn,eng\r\nmencoder_subcp = ISO-8859-1\r\nautoloadsrt = true\r\nmencoder_sublangs = fre,eng,jpn\r\nmencoder_subfribidi = false\r\nmaxvideobuffer = 300\r\nuuid = 5f5dd1ef-45b8-387c-a803-844dae1cd777\r\n<\/pre>\n<p>Une fois le fichier de configuration cr\u00e9e et enregistr\u00e9 \u00e0 sa place, il ne reste plus qu&rsquo;a lancer le programme en tapant\u00a0: .\/PMS.sh. Surveillez les fichiers de log pour voir comment tout fonctionne. Si vous avez de la chance, vos vid\u00e9os seront envoy\u00e9es \u00e0 vos clients. Si \u00e7a ne fonctionne qu&rsquo;en partie, vous venez de d\u00e9couvrir le cot\u00e9 \u00ab\u00a0Microsoftien du DLNA\u00a0\u00bb \ud83d\ude42<\/p>\n<p>EDIT\u00a0: Les versions se succ\u00e8dent mais pour moi rien ne vaut la version 1.50. Toutes les versions sup\u00e9rieurs posent des probl\u00e8mes que n&rsquo;a pas cette version. Pourquoi\u00a0? Je sais pas.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>La th\u00e9orie Le DLNA, c&rsquo;est quoi\u00a0? R\u00e9ponse courte, une merde. R\u00e9ponse longue\u00a0: Une norme mais aussi un protocole. Premier reproche, il tr\u00e8s difficile de comprendre quoi que ce soit \u00e0 ce machin. Logique, puisque DLNA est un sous ensemble d&rsquo;un \u00ab\u00a0super\u00a0\u00bb protocole beaucoup plus large invent\u00e9 par Microsoft\u00a0: l&rsquo;UPnP. En hyper m\u00e9ga r\u00e9sum\u00e9, le DLNA [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[],"class_list":["post-293","post","type-post","status-publish","format-standard","hentry","category-geekitude","category-hack-ps3"],"_links":{"self":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/comments?post=293"}],"version-history":[{"count":1,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/293\/revisions"}],"predecessor-version":[{"id":906,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/posts\/293\/revisions\/906"}],"wp:attachment":[{"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/media?parent=293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/categories?post=293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hoper.dnsalias.net\/atdc\/index.php\/wp-json\/wp\/v2\/tags?post=293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}