Raspberry Pi 3 et Serveur Plex : le transcodage

Le Raspberry Pi 3 est récent et beaucoup d’entre nous se sont posés des questions quant à sa capacité à faire un bon serveur Plex. Le bousin a beau être plus puissant que son prédécesseur, il reste loin d’un PC classique.

Petite vérification par moi-même de ses capacités (car pas facile de trouver des réponses claires sur le Net) :

Mon montage

Ces derniers temps, je me suis amusé à faire un petit montage sympa qui répond à quelques unes de mes (vos ?) questions. Je vous propose de partager les réponses, et j’étofferai au fur et à mesure.

Pour faire des économies d’électricité, je ne me sers plus de mon PC et de ses centaines de Watts comme serveur là ou un petit truc consommant 5W et un disque réseau peuvent suffire. J’ai donc sur mon réseau :

  • Un player Freebox Revolution connectée à la TV
  • Un mobile sous Android avec l’appli Plex
  • Un Raspberry Pi 2 connecté sur une autre TV
  • Un Raspberry Pi 3 hébergeant un serveur Plex (sous Raspbian)

Le Pi 3 est-il capable de faire du transcodage à la volée ?

Transcodage, conversion, optimisation : tout ça désigne la même chose : ré-encoder le fichier en un autre format compréhensible par le logiciel de lecture. C’est une opération qui nécessite une puissance de calcul conséquente et il est difficile pour des petites machine de réaliser cette conversion aussi vite que le film est lu. Pour un Pi 3, la question se pose légitimement :

Réponse : et bien oui et non. Plex sait manifestement transcoder jusqu’à un certain point. Pour la lire la vidéo ci-dessous (en 576×240) sur Chrome (qui grosso modo ne supporte que le H.264) ou sur l’app Android, notre courageux petit Pi se lance tout de même dans le transcodage :

Transcodage en direct avec Plex

Pour lire le fichier sur la freebox en revanche, pas de problème de conversion, la lecture est directe sans altération :

Plex lecture directe

Dans ces exemples, il n’y a aucun problème car soit la vidéo est déjà encodée au bon format et elle est lue directement (direct play, seconde image), soit elle est petite et ne nécessite pas une puissance plus importante que ce que peut fournir le Pi (première image). Mais il ne faut pas se leurrer, certains fichiers plus gros ne pourront jamais être transcodés en live.

Alors point de salut sans transcodage pour les gros fichiers ?

Les plus exigeants d’entre-vous voudront au minimum des fichiers en full HD (1080p) et en 5.1 (AC3). Problème, ces formats peuvent nécessiter une conversion et là, le Pi montre ses limites. Il ne transcodera pas assez vite la vidéo. La solution, c’est soit avoir un player compatible avec ces formats (direct play), soit la conversion en tâche de fond :

Le Pi peut transcoder en arrière plan grâce à la fonction « Optimiser » qui se trouve sur chaque film. Vous choisissez la qualité et vous cliquez sur « Optimiser ». Quelques temps plus tard, vous pourrez le regarder sur votre mobile par exemple en live et sans saccade. Sauf que vous vous doutez bien que ça prend du temps : un film en full HD et en AC3 de 2h m’a pris 7h à convertir. Vous voyez là pourquoi le temps réel est impossible sur un Pi sur des fichiers full HD.

Optimiser une vidéo avec Plex
Optimisation d’une vidéo avec Plex.

Dans le détail : les niveaux H264

A noter aussi, particulièrement pour le lecteur Android : le format H264 utilise des niveaux qui sont des limitations sur un certain nombre de paramètres qui permettent aux décodeurs de limiter les ressources mémoires et calculatoires nécessaires pour décoder une vidéo. Or, ces limitations du lecteur vont forcer le serveur à transcoder la vidéo. Il faut donc trouver le meilleur compromis entre :

  • avoir un niveau le plus élevé possible jusqu’à ce que le téléphone ne puisse plus supporter la lecture de la vidéo (tant au niveau bande passante que décodage processeur)
  • avoir un niveau trop bas qui provoque un transcodage du serveur Pi

Cela étant dit, ce type de transcodage est passé comme une fleur avec mon film HD (cf. capture en bas d’article).

Sur Android, vous pouvez définir ce niveau dans Paramètres / Avancé / Lecteur /Niveau maximum H264. Par défaut il est à 40 (4.0)

Petite expérience avec un film HD / AC3 :

Le film a pu être lu tel quel (direct play) sur :

  • la Freebox Revolution
  • mon client RaspPlex (Raspberry Pi2)

Et a nécessité un transcodage qui a mis à genoux le Pi sur :

  • mon application Plex Android
  • le site Plex.tv

Plex : serveur pas assez puissant

Après optimisation pour mobile, la vidéo s’est lue sans soucis sur l’app Android (mais pas Plex.tv, je ferai un nouveau test pour lui).

Sur Plex.tv, vous pouvez même choisir votre version. Sur mobile il prend logiquement celle optimisée pour… mobile.

Plex choix de version

Les bons formats

Je conclue que pour être lues partout, il vaut mieux que nos vidéos soient en HD et en H264 (niveau 40) / AAC. Ou au pire, on « optimisera ».

Pour les exigeants fans de HD, il faut que votre player prenne en charge les codecs pour passer en direct play (sans transcodage). Là, c’est à vous de vous renseigner sur les codecs pris en charge.

Screenshot Civil War
La version transcodée pour mobiles tourne maintenant parfaitement en direct play.
Screenshot Zootopia
Attention, même en H264, la lecture peut nécessiter un transcodage (ici toutefois supporté correctement).

Voili voilou. Je reviendrai peaufiner l’article au fur et à mesure. Il faudrait tâtonner un peu pour connaître les limites du Pi en terme de conversion à la volée. ++ 🙂

Edition du 20 mars 2017 : transcodage et puissance processeur 

J’ai aujourd’hui un peu plus de recul sur le bouzin et force est de constater qu’un Raspberry Pi, même 3ème du nom ne peut pas tout. En effet, si l’on souhaite se passer du transcodage, il faut préparer son film en amont. Or, je cherche à la fois un confort lors de la sélection et du visionnage du film, mais aussi lors qu’il faut l’ajouter dans ma bibliothèque. Et là, vérifier que le film est en mp4, que le son est supporté, que le Plex ne prendra pas l’initiative d’incruster des sous-titres ou de changer le débit (et donc pour tout ça de transcoder), c’est fatigant.

Le Pi supporte certes des transcodages légers (les sous-titres, certains contenus audio), mais ce n’est pas suffisant. Vous imaginez bien que les transcodages Full HD sont tout bonnement impossibles en temps réel et nécessite tellement de puissance qu’il faut un processeur de PC pour les assumer (ou « optimiser » le film pendant plusieurs heures).

Pour avoir une idée de ce qui est nécessaire, Plex se fie au score « PassMark », un comparateur de « puissance de calcul ». Le Raspberry n’est pas intégré, mais on peut imaginer qu’il se trouve quelque part aux alentours de 500. Il vous faut minimum du 2000 pour espérer transcoder du Full HD. Mon fixe (un vieux core i7 4770k) a un score de plus de 10 000, un très vieux Core2 Quad (Q9400 @ 2.66GHz) atteint les 3 400. Moralité, il vous faut un PC, même un vieux, mais un PC.

La légende dit qu’il faudrait un score de 4 000 à 5 000 pour transcoder de la 4k. Je confirmerai peut-être un jour. 🙂

Bref, perso, j’ai retourné ma veste du bon côté et ai pris le parti de la facilité en choisissant de revenir sur un bon vieux PC des familles. Inconvénient : il faut l’allumer et l’éteindre. Le plus : ça dépote du yuka. 🙂

Edition du 24 août 2017 : le réseau

Vous allez peut-être trouvé ça un peu bête, mais ça vaut le coup de le mentionner : vérifiez la bande passante de votre réseau.

Si le processeur faiblard de votre serveur n’est pas en cause, sachez que les CPL et les WIFI n’ont pas forcément toujours un débit suffisant pour diffuser une vidéo en Full HD de 25 Mbps. Damned.

Par exemple, chez moi avec mon débit Internet de 3 Mbps, je ne me posais pas vraiment de question sur la rapidité de mon réseau domestique et on diffusait des vidéos en HD (720 lignes) stéréo au mieux (bêtement car elles sont 3 fois plus rapides à télécharger).
Puis nous avons acheté une télé plus grande et reçu la (sainte) fibre. Nous avons donc voulu diffuser via Plex des vidéos Full HD (1080p / 5.1) et : Mouhahaha, marche pas.

Et pourquoi ? Parce que mon CPL comme mon Wifi ont un débit ridicule : 10 à 20 Mbps. Comme une vidéo full HD peut atteindre facilement un débit supérieur à 20 Mbps sur des scènes riches, ça crée un goulot d’étranglement et hop : bufferisation.

Pourquoi un débit si pourri ? C’est peut-être dû à la configuration des pièces, mais plus probablement à l’encombrement de la bande Wifi des 2.4Ghz (et à l’utilisation normes WiFi obsolètes par mes appareils sur cette fréquence).
J’en déduis ça car des appareils plus récents fonctionnant avec le Wifi de la box en 5Ghz tournent à plus de 150 Mbps.

Voilà qui explique pourquoi (paradoxalement) je pouvais voir la TV Orange en Full HD via Internet et pas mes vidéos sur mon réseau local : le player et la box Orange sont connectés en Wifi ac 5 Ghz alors que mon serveur Plex est rattaché au réseau en vieux 2.4Ghz.

CQFD, il fallait le trouver !

Dans mon cas, j’ai deux choix :

  • changer mon matériel pour être complètement compatible avec les dernières normes Wifi,
  • ou passer au filaire.

Avec l’expérience, après avoir abandonné le Pi pour sa faible puissance, je vais abandonner le Wifi et le CPL pour leur lenteur et câbler la maison en ethernet. Parce qu’à un moment, ça va bien hein.
Si vous avez la possibilité et la volonté de le faire, c’est votre meilleure option. Sinon, il vous reste à mettre à niveau complètement votre équipement WiFi, si possible en norme ac 🙂

Voilà, ainsi se termine le tour de mes mystères mystérieux sur Plex. Mon installation sera bientôt parfaite. 🙂

Nos amis les animaux (qui Dieu merci crèvent loin de chez nous)

Préface

Hello tout le monde, je suis loin d’être autant l’ami des animaux que peuvent l’être les végans, mais à un moment il ne s’agit plus d’empathie mais de responsabilité. Adopter un animal ne doit pas être le même acte qu’acheter un lecteur DVD et pourtant, les SPA sont remplies de staffs qui sont uniquement achetés pour compenser des organes mâles atrophiés, ou d’autres dont « on n’a pas désiré assumer l’impact sur nos vies ». Ces chiens ont généralement une fin peu enviable, je vous laisse lire le reste de l’article.

Spi.

Message de Ludie

Bonsoir tout le monde,

Tous les gens qui me connaissent savent que les grands débats ne sont pas mon fort mais là, il m’est arrivé quelque chose cet après midi, et j’aimerais m’exprimer (si Spi me le permet 🙂 ).

Alors voilà, tout à l’heure en promenant mon fidèle toutou qui n’attendait que ça depuis un moment, j’ai croisé un chien sans laisse. Ma chienne étant en chaleur, mon premier reflex fut de partir en courant mais là surprise, le chien ne bouge pas d’un centimètre. En le regardant de plus prés, je me rends compte qu’il est maigre, il tremble et finit par se coucher dans l’herbe. Et là, je me dis que si je le laisse là, il va mourir dans l’herbe, sur le bord de la route.

Je retourne vite fait chez moi, chercher de l’aide, des croquettes, de l’eau et une laisse. Nous retournons le voir, il n’a pas bougé. Mon mari appelle tous les vétérinaires du coin, fermés à cette heure, on finit par avoir le numéro du vétérinaire de garde, qui nous dit qu’on peut venir, qu’il regardera s’il est pucé, mais qu’il ne pourra pas le garder pour la nuit et que les éventuels soins seront à notre charge. Impossible pour nous de laisser ce chien mourir là, nous voilà partis chez le véto.

Verdict : c’est un jeune chien, moins d’un an, non pucé. Le vétérinaire nous confirme qu’il est très mal en point, il souffre énormément. Il a attrapé un virus qui cause des gastro entérite très graves contre lesquelles les chiens sont vaccinés… en théorie. La parvovirose si je me souviens bien. Il a probablement été abandonné par ses maîtres, qui n’ont pas pu ou voulu assumer les frais du traitement. Mais puisqu’ils ne l’avaient pas non plus vacciné, j’imagine qu’ils n’en avaient tout simplement rien à faire….

Il va le mettre sous perfusion, commencer le traitement et le bourrer d’antalgiques pour qu’il ne souffre plus, mais il est quasiment certain qu’il ne passera pas la nuit… J’appellerai demain pour savoir. S’il vit toujours, nous sommes prêts à payer ses soins et même à le prendre chez nous, mais on ne se fait pas trop d’illusion…

Voilà mon histoire, et maintenant voilà ce que je voudrais dire :

  • Un chiot, c’est très mignon derrière la vitre de l’animalerie, mais ce n’est pas une peluche, et encore moins un cadeau pour un enfant. C’est un être vivant. Comme vous et moi, il a besoin de manger et de voir le docteur au moins une fois par an, parce que oui, lui aussi, il tombe malade ! Mais attention, pas de sécurité sociale pour les animaux, si vous voyez ce que je veux dire…
  • Avoir un chien, c’est également faire quelques sacrifices vis-à-vis des vacances, on ne peut emmener son chien partout. Tous les ans on le dit, et pourtant, de plus en plus de chiens sont abandonnés. Vous avez un cerveau ? Alors servez-vous en bordel de m….
  • Je voudrais également dire quelque chose aux maîtres de ce chien, si jamais ils venaient à lire ceci, mais l’être humain étant ce qu’il est, ils n’iront probablement pas jusque là :

« Vous avez abandonné votre chien sur le bord de la route à une mort certaine et extrêmement douloureuse qui plus est, je vous souhaite de vivre les mêmes souffrances, je vous hais du fond du cœur… »

Sur ce, je m’en vais faire le double de câlins à mon chien, qui me fait la fête tous les jours quand je rentre du boulot, et qui, rien que pour ça, le mérite bien :).

Tchao

Ludie, l’amie des bêtes.

Postface

Et pour ceux qui s’interrogent sur le dénouement de cette histoire, bonne nouvelle (pour les propriétaires), il est mort une demie-heure après son entrée à la clinique vétérinaire.

Spi.