PS3mediaserver sur une Debian toute fraîche : serveur DLNA/uPNP/bidule pour la PS3

Hop,

J’ai rangé mon NAS (qui trainait en terme de firmware et ne me permettait pas de lire des photos de + de 12 Mpixels…) au profit d’un vieux PC avec une Debian et PS3 Media Server (PMS) comme interface entre la PS3 et mes « fichiers multimédia ».

Le principe de PMS est simple : utiliser tous les outils standards du monde libre (ffmpeg, mplayer, mencoder, vlc, tsmuxer) qui font déjà bien le boulot et simplement ajouter une surcouche (en Java, why not) pour faire l’interface DLNA / uPNP (je confonds un peu les 2, on s’en tape). Le but est de lire tout ça depuis la PS3.
Encore mieux, il permet de présenter à la PS3 des formats qu’elle ne sait pas lire en assurant derrière, à la volée, le transcodage ou le réencodage qui va bien. Attention : transcoder un mkv 1080p en réencodant la partie audio DTS à la volée ne se fait pas avec votre vieux PC pourri qui fait office de NAS… Là il faudra du multi-coeur qui envoie du gros !
Et fin du fin, vous choisissez depuis la PS3 la méthode de transcodage/réencodage, la langue etc, depuis la PS3 via des menus spécifiques qui apparaissent.

A noter que Twonky Media Server est aussi un bon logiciel, mais payant.
Je décris ici la procédure pour installer correctement l’outil, en partant d’une Debian Lenny absolument vide (ssh seulement, et wget). La « difficulté » est d’utiliser des outils un peu récents en Debian, côté multimedia. On ira voir du côté des dépôts www.debian-multimedia.org.
A noter qu’en Squeeze, ce sera encore plus la fête, car les outils Lenny de « debian multimedia » datent aussi un peu, pour certains.

J’ai installé l’outil sur un compte utilisateur dédié à cela. Afin d’avoir des permissions sur mes fichiers multimédia en cohérence et de ne pas faire tourner ça au nom du root, évidemment.

Ajout du dépôt multimedia

Le site décrit la procédure. Dans notre cas, on importe les clefs de signature des paquets :

$ wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/
$ dpkg -i debian-multimedia-keyring_2008.10.16_all.deb

Puis on ajoute le dépôt et on met à jour :

$ cat >> /etc/apt/sources.list
deb http://www.debian-multimedia.org lenny main non-free
<CTRL-D>
$ aptitude update

Installation des outils

On installe à la fois les outils vidéos et ce qu’il faut pour faire tourner le Java + 2/3 trucs annexes.

$ aptitude install screen rar unrar zip unzip bzip2 vlc mplayer mencoder ffmpeg sun-java6-jre

Là j’installe « screen », voir plus bas ; rar/zip pour pouvoir lire directement certaines archives ; les outils vidéos ; le java SUN.
A noter que tsMuxeR est fourni avec PMS.

Installation de PMS

En tant que l’utilisateur « pms » (appelons-le comme ça), j’installe PMS et règle 2/3 trucs.
Récupérez le depuis http://code.google.com/p/ps3mediaserver/downloads/list, actuellement avec un wget http://ps3mediaserver.googlecode.com/files/pms-linux-1.10.5.tgz
Puis :

pms@nas:~$ tar xzvf pms-linux-1.10.5.tgz
pms@nas:~$ ln -sf pms-linux-1.10.5 pms
pms@nas:~$ chmod u+x pms/PMS.sh pms/linux/tsMuxeR

Les permissions d’exécution ne sont pas bonnes et il manquerait notamment tsmuxer dans le panel d’outil.

Voilà, normalement c’est fini. Pas compliqué :)

Lancement graphique de PMS

La première fois, il faut le lancer graphiquement pour paramétrer 2/3 choses. Ensuite, on va scripter ce qu’il faut pour qu’il démarre au boot, en mode texte, dans un « screen ».
Si vous intervenez à distance, faites un tunnel SSH avec déport X11 pour récupérer l’interface graphique.
Le principe de PMS est le suivant : soit il voit un serveur X qui répond, alors il part en mode graphique, soit il n’en voit pas, alors il part en mode texte.

pms@nas:$ cd pms ; ./PMS.sh

Il faut faire 3 choses :

  • Passer dans tous les onglets (s’il ne voit pas votre PS3, sur le premier onglet, pensez à l’allumer… mais ce n’est pas nécessaire pour configurer) et réfléchir 2 minutes. Notez par exemple la génération des vignettes accompagnant les vidéos, vignettes générées en prenant l’image à la X-ième seconde du film grâce à mencoder….
  • Aller obligatoirement dans l’onglet « Transcoding settings » pour vérifier que tout est vert, que tous les outils vidéo/audio sont installés. Sinon, lire ce que ça raconte.
  • Aller dans « Folders Sharing », ajouter les répertoires qui vous intéressent et activer le partage, sans quoi, il ne va pas se passer grand chose…

D’avance, je précise que l’outil n’a pas besoin de parcourir à l’avance tous les répertoires, il génère à la volée lorsqu’on rentre dans un répertoire depuis la PS3. Enorme. Très dynamique.
Voyez les photos d’écran sur le site officiel s’il faut : http://code.google.com/p/ps3mediaserver/

Lancement en mode texte

Enfin, une fois que tout est paramétré et que ça fonctionne depuis la PS3, on passe à l’industrialisation en mode texte :)
Je recommande un petit script comme ceci :

pms@nas:~$ cat ~/lance_pms.sh
#!/bin/sh
cd /home/pms/pms
screen -S pms -d -m ./PMS.sh

Avec les permissions qui vont bien chmod u+x ~/lance_pms.sh

Une fois lancé, prenez la main sur votre screen (screen -r pms) et vérifiez que ça ne gueule pas. Ca doit ressembler à :

GUI environment no available
Switching to console mode
[main] TRACE 13:45:19.739 Starting Java PS3 Media Server v1.10.5
[main] TRACE 13:45:19.740 by shagrath / 2008-2009
[main] TRACE 13:45:19.740 http://ps3mediaserver.blogspot.com
[main] TRACE 13:45:19.740 http://code.google.com/p/ps3mediaserver
[main] TRACE 13:45:19.740
[main] TRACE 13:45:19.741 Java 1.6.0_20-Sun Microsystems Inc.
[main] TRACE 13:45:19.741 OS Linux i386 2.6.26-2-686
[main] TRACE 13:45:19.741 Encoding: UTF-8
[main] TRACE 13:45:19.748 Temp folder: /tmp/javaps3media
[main] TRACE 13:45:19.776 Registering transcoding engine FFmpeg Audio
[main] TRACE 13:45:19.789 Registering transcoding engine MEncoder
[main] TRACE 13:45:19.790 Registering transcoding engine MPlayer Audio
[main] TRACE 13:45:19.791 Registering transcoding engine MEncoder Web
[main] TRACE 13:45:19.791 Registering transcoding engine MPlayer Video Dump
[main] TRACE 13:45:19.792 Registering transcoding engine MPlayer Web
[main] TRACE 13:45:19.795 Registering transcoding engine TsMuxer
[main] TRACE 13:45:19.795 Registering transcoding engine Audio High Fidelity
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Audio Streaming
[main] TRACE 13:45:19.796 Registering transcoding engine VideoLan Video Streaming
[main] TRACE 13:45:19.797 Registering transcoding engine Raws Thumbnailer
[main] TRACE 13:45:19.912 Scanning network interface eth0 / eth0
[main] TRACE 13:45:19.914 Using address /192.168.x.y found on network interface: name:eth0 (eth0) index: 2 addresses: /192.168.x.y;
[main] TRACE 13:45:19.915 Created socket: /192.168.x.y:5001
[Thread-1] TRACE 13:45:19.924 Starting DLNA Server on host 192.168.x.y and port 5001...
[main] TRACE 13:45:19.933 Using database located at : /home/pms/pms-linux-1.10.5/database
[main] TRACE 13:45:20.448 Sending ALIVE...
[main] TRACE 13:45:20.454 Using following UUID: 00a29-blabla-3e839
[main] TRACE 13:45:25.422 It's ready! You should see the server appears on XMB
[Thread-8] TRACE 13:45:35.420 Sending ALIVE...

On voit qu’il a bien trouvé tous les outils

Divers

« crontab » pour un lancement/relance automatique

Ca vaut ce que ça vaut, mais au moins ça limite mes interventions du type « papaaaaaa, y’a les dessins animés qui marchent plus ». Dans la crontab de l’utilisateur « pms », j’ai ceci :

LANG=fr_FR.utf8
# m h  dom mon dow   command
* * * * * x=`ps u |grep java | grep -v grep` ; if [ "x$x" == "x" ]; then /home/pms/lance_pms.sh; fi

J’insiste sur le « UTF8″, sinon il zappe tout ce qui contient des accents… et ça, on s’en rend compte avec la lancement automatique, pas le lancement depuis le compte utilisateur qui lui, a bien la variable LANG comme il faut dans son environnement utilisateur.

bug

J’avais noté un bug : attention si vous avez lancé l’outil avec un autre utilisateur, le répertoire /tmp/javaps3media reste, avec des permissions restreintes. Donc ça plante lorsque vous voulez le lancer depuis un autre utilisateur.

Vus : 2778
Publié par Michauko : 64