La machine à bandes-annonces v3

Dolby Machin, DTS Truc

En préambule, parlons un peu des systèmes de son présents sur nos dvd et blu-ray. En dvd, les plus répandus sont Dolby Digital et DTS (jusqu’à 5.1 canaux). A l’époque on manquait de place sur les supports physiques et donc ce sont des protocoles qui compressent le son et occasionnent par là, une perte de qualité.

Avec le blu-ray, plus de problème de place. On peut donc passer à des formats de son plus gros et donc sans perte de qualité, appelés généralement « lossless ». C’est le Dolby TrueHD et encore plus répandu : les DTS-HD MA (Master Audio). Ces flux nécessitent quand même un décodage et donc du hardware ou du logiciel pour faire ce taf.

Le Passthrough

Le mode passthrough est généralement présent sur toutes les sources (lecteurs blu-ray, lecteurs multimédia, etc.). Cela signifie que la source envoie à l’ampli un flux numérique direct (du bitstream) non décodé et que l’ampli doit alors décoder.

Généralement, on utilise le passthrough quand on dispose d’un ampli « home cinéma ». Même les entrées de gamme ont maintenant le décodage intégré du Dolby TrueHD et DTSHD-MA.

Le Raspberry Pi 3 et le son HD

Je trouve bizarre que l’on ne trouve pas d’informations claires à ce sujet. J’ai parcouru pas mal de forums et souvent les gens confondent un peu tout, on entend tout et son contraire.

Le truc le plus juste et le plus argumenté que j’ai trouvé, c’est la prose de M. Noggin ici : https://forum.kodi.tv/showthread.php?tid=309301

Il dit en gros que le Pi 3 est limité par la bande passante de son port HDMI. Ceci ne permet pas le passage des flux DTS HD ou Dolby True HD. Par contre, il est possible de faire décoder le DTSHD sur le Pi et d’envoyer un flux LPCM (c’est du son direct) multi-canal.

A quelques exceptions près, puisque certaines pistes DTSHD peuvent utiliser un échantillonnage encore plus gourmand mais c’est très minoritaire et réservé aux audiophiles fous.

Autre exception : le Dolby Atmos et DTS:X, les dernières inventions des ingénieurs son. Celles-ci sont pour moi, un peu gadgets et réservés aux très gros films hollywoodiens uniquement.

Ce n’est pas très logique car à priori, il est plus facile d’envoyer un flux non décodé qu’un flux décodé. Mais sur le Pi c’est visiblement dû au port HDMI. C’est ce qui occasionne beaucoup de confusions.

J’ai fait des tests et pour moi tout cela est bien confirmé. J’ai utilisé l’OS LibreElec 9.2.4 contenant Kodi 18 (nom de code Leia) sur un Raspberry Pi 3. Kodi est une solution logicielle pour gérer et jouer ses vidéos et musiques.

Est-ce que le Raspi 3 + Kodi peuvent-ils envoyer du DTSHD et Dolby TrueHD en passthrough ?

La réponse est non. Quand on joue un fichier DTSHD, l’ampli détecte en sortie du Pi une piste DTS « simple ». C’est pas super grave mais il est fort probable qu’on ait une perte quelque part. Idem pour le Dolby TrueHD, on se retrouve dans l’ampli avec une piste Dolby Digital simple.

Cela est confirmé par la page de configuration de Kodi qui ne contient pas les lignes « Votre ampli est capable de recevoir du DTS HD  / Dolby True HD » :

Pour profiter d’une piste DTSHD ou DolbyTrueHD, il faut désactiver le passthrough et préciser le nombre de canaux dont on dispose sur l’ampli (5.1 dans mon cas). Ainsi on aura une piste LPCM en sortie du Hdmi du Pi. Bien sûr, il faut aussi régler l’ampli pour recevoir ce type de piste (c’est pas forcément détecté automatiquement parce que le signal n’est plus numérique). Sur le mien, ça s’appelle MultiCh (multi-channel). Et l’on voit pour chaque piste, les canaux utilisés.

Est-ce que le Raspi 4 peut-il envoyer du DTSHD en passthrough ?

En juillet 2019, c’était non mais le matos serait capable. Il faut donc attendre que LibreElec l’intègre. Cependant, il semble y a voir eu des nouvelles récemment (juillet 2020) avec une version « pré-alpha » expérimentale disponible :

https://forum.libreelec.tv/thread/22302-rpi4-testbuild-with-hd-audio-passtrhough-atmos-etc/

Une image très récente (20/08/2020) pourrait donc bien fonctionner :

https://test.libreelec.tv/

par exemple :

[ ] LibreELEC-RPi4.arm-9.80-nightly-20200816-6063236.img.gz

On se retrouve donc avec un Kodi 19 (nom de code Matrix) qui contient bien cette fois-ci les paramétrages :

Et même que ça fonctionne !! Par contre, c’est une version de test, donc l’auteur ne garantit pas que les add-ons et tout le reste va fonctionner « normalement ».

La machine à bandes-annonces Deluxe Edition

Sur la précédente machine à bandes-annonces, j’utilisais du vieux matériel pas très puissant, et une vieille distribution Linux (Jessie).

J’aimerais donc refaire la même chose mais avec LibreElec + Kodi sur un Raspberry Pi 3. Pour mémoire, il s’agissait de jouer des vidéos automatiquement dès le démarrage et dans un ordre aléatoire. Les vidéos étant présentes sur une clé USB.

Se connecter en ssh au Pi : root / libreelec (attention, ya deux « e »)

Pour lancer quelque chose au démarrage, Kodi impose de passer par un script python nommé autoexec.py à placer dans un répertoire spécial. Ce répertoire dépend du système utilisé (https://kodi.wiki/view/Userdata)

Mais pour libre Elec sur Raspberry, c’est donc dans /storage/.kodi/userdata/

Pour faire un premier test, je vais faire un truc tout simple : afficher la fenêtre des infos système.

import xbmc
xbmc.executebuiltin('ActivateWindow(systeminfo)')

On reboote et sauf erreur de syntaxe, ça doit fonctionner !

Pour faire des expérimentations, on peut utiliser la ligne de commande kodi-send, pour voir si la syntaxe est bonne. Par exemple, pour jouer une playlist :

kodi-send --action="PlayMedia(/storage/.kodi/userdata/toto.m3u)"

On va compliquer les choses et générer une liste « désordonnée » des fichiers présents sur la clé USB pour la mettre dans une playlist.

Si Libreelec est basé sur du Linux, cette distribution est épurée et ne contient pas toutes les commandes habituellement présentes. C’est notamment le cas de toutes les fonctions pouvant générer du « hasard ». Ça ne m’arrange pas mais j’ai trouvé un truc sur le net avec « awk » :

import os,xbmc
os.system("ls -d /media/USB\ DISK/*.m* > /storage/.kodi/userdata/toto.m3u")
os.system("cat /storage/.kodi/userdata/toto.m3u | awk 'BEGIN{srand();}{print rand()\"\t\"$0}' | sort -k1 -n | cut -f2 > /storage/.kodi/userdata/traile
xbmc.executebuiltin('PlayMedia(/storage/.kodi/userdata/trailers.m3u)')

Dans mon cas, j’ai réuni assez de bandes-annonces (sur une clé de 128 Go) pour que ça tourne plusieurs heures. Mais si on veut jouer la playlist en boucle, on pourrait ajouter à la fin :

xbmc.executebuiltin( "PlayerControl(repeat)" )

Mais j’ai remarqué que ça bugge de temps en temps et que seul le premier titre de la liste est en « repeat » !

Attention aussi aux noms des fichiers, certains accents ou caractères en langue étrangère peuvent poser problème.

J’ai rencontré à peu près les mêmes soucis que sur mon Raspberry Pi 2 + Jessie. Si l’ampli est allumé après le Pi, le signal n’est pas détecté sur le hdmi (écran noir, pas de son).

Il faut éditer le fichier /flash/config.txt pour y faire quelques réglages. Problème : dans le cas de LibreElec ces fichiers sont en lecture seule. On remonte donc temporairement ce répertoire en « read write » :

mount -o remount,rw /flash

Editer le fichier /flash/config.txt (attention, hdmi_mode et hdmi_group vont de pair) pour forcer le signal hdmi en 1080p.

hdmi_force_hotplug=1
hdmi_mode=16
hdmi_group=1

Remettre le système comme c’était avant :

mount -o remount,ro /flash

Il ne faut pas oublier de tuner un peu Kodi :

  • désactiver le passthrough (si on veut du DTSHD ou Dolby TrueHD!)
  • définir le nombre de canaux.

Masquer le GUI / OSD

A chaque changement de vidéo, pendant une seconde, on voit le GUI qui apparaît. C’est le menu avec le titre de la vidéo, les icones stop / pause / avance rapide / chapitre suivant, etc.

Pour masquer ça, c’est un peu compliqué car ces paramètres dépendent du « skin » utilisé. Dans Kodi 18, le skin par défaut s’appelle Estuary et c’est un « skin » système donc non modifiable.

On commence d’abord par faire une copie « utilisateur » dans un add-on :

cp -R /usr/share/kodi/addons/skin.estuary /storage/.kodi/addons/skin.toto

Dans la racine de skin.toto, se trouve le fichier addon.xml qu’il faut modifier :

<addon id="skin.estuary" version="1.9.16" name="Estuary" provider-name="phil65, Ichabod Fletchman"> 

devient :

<addon id="skin.toto" version="1.0" name="Estuary-mod" provider-name="Carl A. Rotwang">

Ensuite, dans le répertoire de l’add-on, j’ai modifié le fichier xml/DialogSeekBar.xml en supprimant toutes les lignes commençant par <visible>.

Pour finir, il ne faut pas oublier d’activer l’add-on dans Kodi et de changer de skin. Un coup de reboot et ça doit fonctionner.

Si on bouge la souris, on n’a plus le titre et l’heure mais il reste tout de même le menu de navigation en bas. Mais en tout cas, ça n’apparaît plus au lancement d’une vidéo.

Update 29/01/2022 :

Le script de mélangeage des fichiers ne marche pas trop bien. On se retrouve souvent avec la même liste dans le même ordre. J’ai donc amélioré les choses en utilisant la bibliothèque random de Python (je ne sais pas pourquoi j’avais dit que ce n’était pas dispo mais ça l’est…) :

import random, csv, os, xbmc
os.system("ls -d /media/USB\ DISK/*.m*  > /storage/.kodi/userdata/all.m3u")
os.system("ls -d /media/USB\ DISK/demo/*.m*  > /storage/.kodi/userdata/demo.m3u")
os.system("ls -t /media/USB\ DISK/*.m* | head -n 15 > /storage/.kodi/userdata/recent.m3u")

with open("/storage/.kodi/userdata/all.m3u") as file:
    list_all = [line.rstrip() for line in file]

with open("/storage/.kodi/userdata/demo.m3u") as file:
    list_demo = [line.rstrip() for line in file]

with open("/storage/.kodi/userdata/recent.m3u") as file:
    list_recent = [line.rstrip() for line in file]

random.shuffle(list_all)
random.shuffle(list_demo)
random.shuffle(list_recent)

fichier = open("/storage/.kodi/userdata/trailers.m3u", "w")
fichier.write(list_demo[0]+"\n")
fichier.write(list_recent[0]+"\n")
fichier.write(list_recent[1]+"\n")

for element in list_all:
    fichier.write(element+"\n")

fichier.close()

xbmc.executebuiltin('PlayMedia(/storage/.kodi/userdata/trailers.m3u)')

Rfxcom – jeedom : premiers pas

Introduction

Cela faisait longtemps que je voulais essayer la domotique dans un but expérimental principalement. On trouve plusieurs familles liées aux protocoles et aux fréquences utilisées.

Il faut absolument passer du temps pour choisir la technologie qui convient. La plus prometteuse est certainement le protocole Z-wave (sur la bande de fréquence 868 Mhz). Mais il y aussi l’Enocean qui figure en bonne place car il se donne pour objectif d’utiliser des équipements sans pile ou batterie.

Un peu plus vieux, les protocoles 433 Mhz fonctionnent bien et on trouve beaucoup de capteurs en tous genres à des prix plus attractifs que le Z-wave. Seulement il existe une tonne de protocoles en 433 Mhz. Mais il se trouve que le module Rfxcom, fabriqué aux Pays-bas, contient tous les protocoles les plus courants.

On peut acheter des packs tous faits avec des capteurs et une petite box centrale. Ici le but est de tout faire de A à Z, sinon c’est pas rigolo.

Établir une liste de courses :

  • un Raspberry Pi : il faut savoir que les capteurs vont communiquer en permanence. Il faut donc une machine qui soit allumée en permanence. Le Pi est un bon choix puisqu’il consomme peu et fait office de « vrai » PC sous Linux.
  • une carte micro-SD pour le système
  • un module Rfxcom qui sera connecté en usb (80 eur, c’est cher mais c’est le prix de l’interopérabilité maximum). Le modèle est le dernier RFXtrx433XL trouvé au moins cher chez https://www.espace-domotique.fr
  • un logiciel Open Source : il existe Domoticz ou Jeedom. Le choix est compliqué. Domoticz existe sur Windows et Linux. Il est facilement installable et paramétrable. Jeedom n’existe que sur Linux et il est très compliqué à paramétrer. Il ressemble à une usine à gaz. Mais si cet aspect peut rebuter, je crois qu’il cache en fait une modularité extrême, ce qui permet au final de faire énormément de choses différentes. Un temps de domptage est nécessaire.
  • Le plugin Rfxcom pour Jeedom (payant, mais 4 eur, ça va)
  • un capteur pour tester (voir plus bas)

Présentation du Rfxcom

J’ai choisi le Rfxcom car j’ai récupéré plusieurs vieux capteurs en 433 Mhz : un détecteur « porte ouverte » et un détecteur de mouvement provenant d’une ancienne alarme probablement datant des années 2000. Je spoile mais je ne suis jamais arrivé à décoder les trames de ces appareils, sans doute trop vieux pour être compris par Rfxcom ou Jeedom. Pourtant je voyais des informations circuler mais c’était le décodage qui posait problème.

Avant d’acheter un capteur, regarder si on le trouve dans la longue liste des produits compatibles:

Cliquer pour accéder à RFXtrx_User_Guide.pdf

Dans l’ordre il vaut mieux :

connecter le Rfxcom au raspberry

installer son Raspberry + Jeedom en suivant cette procédure :

https://www.habitat-domotique.fr/2018/01/03/installer-jeedom-raspberry-pi/

A noter :

  • certains déconseillent de faire tourner une base de données sur un Raspberry car la carte SD est alors trop sollicitée et risque de mourir. Je tente le coup, je suis un fou.
  • J’ai pris comme distribution Raspbian Stretch Lite : https://www.raspberrypi.org/downloads/raspbian/
  • L’installation de Jeedom est longue (> 20 mn)

Si on veut debugger ou tester dans un premier temps, Rfxcom fournit RfxManager, qui permet de voir si son module est bien reconnu et s’il voit des capteurs. Cet outil permet aussi de mettre à jour le firmware du module. D’ailleurs Jeedom propose le flashage du Rfxcom mais c’est déconseillé.

Voilà quelques capteurs qui ont fonctionné sans problème :

Bresser Capteur thermo/hygro RC 5CH: sonde de température / hygrométrie à 17,90 eur

Topker 433MHz sans fil Station météo : idem, une sonde de température et un hygromètre. Typiquement le produit chinois générique pas cher (6,55 eur) mais… qui fonctionne sans problème !

Détecté sous Jeedom comme Température et Humidité TH13 / Protocole 6 (Rubicson, etc.)

Celui qui m’a posé problème :

Chacon 34946 Détecteur d’ouverture porte ou fenêtre, à 8,99 eur. Le prix peut être un indice concernant les soucis… En fait, il doit bien fonctionner mais c’est juste que sa portée est limitée à environ 5 mètres et encore… sans obstacle. Les autres capteurs sont donnés plutôt pour 30 à 50m, ce qui n’est pas du tout le cas de celui-là.

J’ai compris à ce moment-là que c’était un peu la jungle dans les capteurs et que si on veut quelque chose d’un peu correct, il faut y mettre le prix (20 à 30 eur).

Pour mes capteurs d’ouverture de porte et détecteur de présence, je me suis alors dirigé vers les produits belges DiO. On trouve un large choix chez https://www.domotique-store.fr/

J’ai pris un mini détecteur de mouvement : CHACON DiO 54704

Et un mini détecteur d’ouverture de porte (l’aspect mini est sympa et discret) : CHACON DiO 54784

Les deux n’ont posé aucun problème et ont été détectés tout de suite par le Rfxcom + Jeedom.

Le protocole associé est le 22 / ARC (Chacon, etc.)

 

Enlarge your partition

Par défaut, la Raspbian s’installe avec une partition d’un peu plus de 2 Go et l’on se retrouve vite à l’étroit si on décide de stocker des fichiers sur la carte SD. C’est mon cas, puisque je veux stocker des vidéos de bandes-annonces en HD à diffuser en boucle.

Heureusement, il est possible d’étendre la partition jusqu’à atteindre la pleine capacité de la carte SD (8, 16, 32 Go?).

sudo raspi-config

sélectionner expand filesystem

expand

Puis rebooter.

Vérifier que l’on a bien récupéré nos octets :

pi@raspberrypi ~ $ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 15G 2.4G 12G 18% /

 

Raspberry versus Arduino

Je me suis renseigné récemment sur les micro-contrôleurs Arduino. J’ai trouvé un livre qui est sorti récemment et qui présente le sujet de manière assez exhaustive : Projets créatifs avec Arduino, co-écrit par Jean-No dont le blog est passionnant pour qui s’intéresse aux nouvelles technologies et à la science-fiction : le dernier blog.

2617-Arduino.indd

Le bouquin n’est pas un recueil de tuto (qu’on peut trouver par centaines sur le net) mais explique les bases et donne les clefs essentielles pour créer soi-même ses projets. Je regrette un peu que le livre ne soit pas plus fourni pour un prix moyen (20 eur), et qu’il ne soit pas possible d’avoir à disposition la version pdf proposée à 14 eur quand on achète la version papier. Cela dit, la qualité rédactionnelle est là et l’objectif est atteint : acquérir une connaissance technique suffisante pour débuter sur Arduino à quelqu’un qui n’y connait rien.

La présentation vidéo du livre par l’un de ses auteurs :

Le « versus » du titre de l’article est évidemment provocateur car Raspberry et Arduino ne sont pas vraiment comparables. Le Raspberry Pi est un véritable ordinateur, qui peut faire office de serveur, et qui a les avantages et les inconvénients d’un ordinateur. Il est possible de lui adjoindre clavier, écran, modules wifi, etc. Malgré un coût faible pour un ordinateur (40 eur), c’est tout de même plus cher qu’un module Arduino (20 eur). Il a besoin d’une « vraie » alimentation secteur.

Les cartes Arduino sont plus petites (en fait, il en existe plusieurs variantes dont certaines toutes petites) et elles sont dédiées au fonctionnement des capteurs et actionneurs. Si l’on peut facilement envoyer ou recevoir des données de ce qu’on branche sur un Arduino, le traitement de ces informations ne pourra pas se faire sur le micro-contrôleur lui-même qui a très peu de puissance de calcul. Il faudra les transmettre à un serveur (Raspberry ou autre).

On voit donc qu’Arduino et Raspberry peuvent être complémentaires. Pour faire mumuse, faire clignoter des diodes, tester un montage, faire des choses simples, les deux sont équivalents. Je vais prochainement essayer de réaliser des projets utilisant les deux en complémentarité. Par exemple déporter un capteur connecté sur un arduino et envoyer les données à un Raspberry via un émetteur/récepteur 443 Mhz. Un des gros avantages d’Arduino (je crois) est de demander peu de puissance électrique et donc de le faire fonctionner sur pile ou sur batterie, ce qui moins faisable avec un Raspberry (mais pas impossible, tout dépend de l’autonomie recherchée).

Pour faire mes courses (capteurs, câbles, arduino, accessoires), j’ai trouvé un nouveau site (basé à Toulouse) qui m’a l’air sérieux, rapide et bien fourni en matos : http://snootlab.com/

Et en plus ils ont un forum bien rempli : http://forum.snootlab.com/

Acheter un Raspberry pi ?

Un raspberry, pour quoi faire ?

Tout et n’importe quoi. J’ai l’impression que pas mal de gens l’achètent pour en faire un mediacenter. Effectivement si on regarde le coût, c’est un prix défiant toute concurrence. 

L’intérêt du raspberry est son interface Gpio qui vise les bricoleux du dimanche. Il s’agit d’une série de broches qui permettent de faire des montages électroniques. Les possibilités sont infinies et l’on peut y connecter tout plein de choses : led, résistances, micro-contrôleurs, périphériques z-wave (domotique), capteurs (infra-rouge, humidité, température, etc.), modules wifi ou 3G. On peut même transformer le Raspberry en robot ! Et j’ai vu récemment un Raspberry devenu smartphone !

Mais ce que je trouve cool avec le Raspberry, c’est sa philosophie. Pour la première fois, le but n’est pas le progrès technologique, la course à la performance, comme c’est le cas pour les PC classiques où il ne se passe pas un mois sans qu’apparaissent de nouvelles cartes mères et de nouveaux processeurs, qui font gagner 0.001% de performance. Le Raspberry oblige les développeurs et les utilisateurs à être efficaces, inventifs, intelligents. En d’autres termes, les contraintes technologiques du matériel favorisent l’imagination et l’émergence d’idées. C’était la philosophie des « démo makers » sur Atari et Amiga, qui parvenaient à créer des choses spectaculaires qui n’étaient même pas dans les spécifications des machines !

Quel revendeur ?

Il y a des revendeurs en France. Le plus célèbre est sans doute kubii.fr qui vend des packs pour débuter avec différents accessoires (adaptateur secteur, caméra, wifi) à des prix raisonnables. Si vous voulez juste le Raspberry, on peut en trouver sur Amazon également.

Cependant, le site le plus cool (selon moi) est thepihut.com. Situé en Angleterre, les délais de livraison sont grosso modo d’une semaine, voire un peu moins. Ils ont un large choix de kits. Pour faire des gros trucs mais aussi des petits trucs, genre un paquet de diodes ou de résistances pour réaliser des maquettes électroniques. Evidemment, on peut trouver tout ça en France dans les magasins d’électronique mais il faut s’y connaître et s’y retrouver dans les milliers de références.

Ce revendeur fait aussi des promo de temps en temps et l’on trouve des accessoires swaggy comme de jolis boitiers pour votre Pi.

En plus d’un design sexy du site web, ces gens sont très réactifs et pour ma part, les commandes ont été expédiées dans la demi-journée suivant l’enregistrement ! Les frais de port sont minimes.

logo

Accessoires indispensables

Sans accessoire, la petite machine ne fait pas grand chose et dans sa petite boîte, la bête est livrée toute nue.

Il vous faudra donc au minimum :

– un bloc d’alimentation. On sera tentés de prendre un chargeur de téléphone portable puisque le connecteur est compatible avec le raspberry (micro-usb). Cependant, pour assurer la longévité de la framboise, il vaut mieux prendre une alimentation spécifique. Généralement, les chargeur de portable délivrent du 5V (c’est ce qu’attend le Pi) mais seulement 1A en intensité maximum. C’est suffisant si vous n’avez rien d’autre sous la main et que vous ne chargez pas le Pi, notamment en connectant des périphériques usb gourmands. Mais pour assurer une bonne longévité au matériel, il vaut mieux prendre une alimentation 5A / 2V spécifique au Raspberry.

L’alim Aukru sur Amazon

L’alim de Thepihut

– une carte micro-sd : celle-ci contiendra le système d’exploitation. Sachez qu’il est impossible de démarrer un raspberry sans carte micro-sd. Je pensais avoir accès tout de même à une sorte de bios mais non. Pas de carte, pas de boot.

– un clavier, une souris : ça peut être de la récup vu que c’est de l’usb standard. 

– un écran : le raspberry a une interface hdmi, donc compatible avec la grande majorité des moniteurs et télé actuels.

 

B_Pi_1_of_4_1024x1024

Utiliser un Raspberry comme mediacenter

Il existe plusieurs système d’exploitation permettant de transformer un raspberry pi en centre multimédia. Tous ces systèmes utilisent le logiciel Xbmc, une interface un peu swaggy qui permet de retrouver ses fichiers (vidéo, photos, musique) facilement, de les gérer et de les lire. D’ailleurs Xbmc vient de changer de nom et s’appelle désormais Kodi.

kodi-splash-600x336

Vous pouvez installer Xbmc sur à peu près n’importe quel système d’exploitation mais il existe aussi des distributions « clé en main » :

– Raspbmc (http://www.raspbmc.com/)

– Xbian (http://www.xbian.org/)

– Openelec (http://openelec.tv/)

Je vais m’intéresser à Openelec car c’est la distribution la plus légère (environ 170 Mo) et la plus rapide à installer.

En premier lieu, on télécharge l’image d’Openelec pour Raspberry ici :

http://openelec.tv/get-openelec/download/viewcategory/10-raspberry-pi-builds

J’ai choisi la version :

[Diskimage] OpenELEC Stable – Raspberry Pi ARM Version:4.0.7

Si vous voulez vous amuser ou tester, prenez les versions bêta, sinon prenez une version « stable ». Une fois récupérée, il faut décompresser l’archive et on récupère un fichier .img.

On va transférer cette image vers la carte micro-sd. Attention, ça va effacer tout ce qu’il y a dessus. Il vous faut bien entendu un lecteur de carte micro-sd (ou sd standard si la carte micro est livré avec un adaptateur).

Le transfert se fait avec l’utilitaire Win32DiskImager. On choisit le fichier .img puis la destination (on se trompe pas dans la lettre sinon ça croûte totalement un lecteur). Une fois qu’on est sûr, on clique sur « write » et le transfert se fait. Ca peut durer quelques minutes suivant les performances du lecteur, de la carte et la taille du fichier).

Ca doit se terminer par un « write successful ». Ejecter le lecteur de carte via l’explorateur windows pour être sûr de ne pas corrompre les données transférées. Après quoi, il ne reste qu’à insérer la micro-sd dans le raspberry et à brancher ce dernier sur le secteur.

Le premier démarrage est un peu laborieux, c’est normal. Si on voit le super logo Openelec des années 80, c’est que ça fonctionne. Il faut ensuite répondre à quelques questions simples (langue utilisée).

openelec_logo

La grande question est de savoir où chercher vos documents. Dans mon cas, je vais essayer d’aller streamer directement depuis un NAS (serveur réseau) via le protocole smb (partage windows).

Donc ma source sera : smb://admin:toto@192.168.1.101/Videos/kids

smb = le protocole utilisé

admin:toto =login / mdp pour accéder à mon lecteur réseau

192.168.1.101 = adresse ip du NAS

Videos/kids = le répertoire auquel je veux accéder

A noter que Xbmc est doté d’un clavier virtuel et qu’il est donc possible de le paramétrer en utilisant une simple souris sur le raspberry. Pas besoin de vrai clavier.

On va dans Vidéos / Files / Add Videos / Browse

On peut entrer directement la source : smb://admin:toto@192.168.1.101/Videos/kids et choisir un nom, ici ce sera kids par défaut, un répertoire qui contient des dessins-animés.

Après quelques secondes, le répertoire kids doit apparaître dans la liste et on peut voir son contenu.

Ensuite, il suffit de double-cliquer pour visualiser la vidéo ! Ca fonctionne du premier coup et c’est fluide. Seule l’interface rame un peu mais c’est normal. Rappelons que le Raspberry est un ordinateur à 40 eur et que son processeur n’est pas dimensionné pour faire plein de choses à la fois. Décoder et afficher de la vidéo et du son, c’est déjà beaucoup.

J’ai essayé de stresser le nas en visualisant des photos sur un autre ordinateur mais il n’y a pas eu d’impact sur la fluidité de la vidéo.

Regardons de plus près le format de la vidéo. Il s’agit d’un rip de dvd au format h264 aussi appelé mpeg4 ou mpeg4-avc avec une résolution de 720×540. Avec ces données, le débit est de 1,5 Mbs, ce qui n’est pas énorme à faire passer sur le réseau.

Il faut garder en tête que le raspberry est limité à 100 Mbs et qu’il va probablement avoir quelques soucis si on monte dans les débits. Sans compter le NAS qui peut aussi ne pas suivre à un moment donné.

Donnons-lui alors un fichier un peu plus costaud à manger. On reste avec le codec h264, qui est très répandu et bien géré par le raspberry. On augmente la résolution avec une vidéo en 1280×720, de la hd standard, avec un débit de 8 Mbs, soit bien plus que la vidéo précédente. Eh bien ça passe nickel aussi. Un coup de stress NAS à nouveau, et celui-ci n’a pas d’impact sur la vidéo. Plutôt cool. A noter aussi que le NAS est relié en réseau par du Gigabits et pas du « simple » 100 Mbs.

8 Mbs c’est pas mal mais peut-on faire mieux ? Rappelons que les blu-ray ont un débit maximum théorique de 40 Mbs !

Essayons un fichier encore plus gourmand. Il s’agit d’un rush de caméscope. Toujours au format h264 mais cette fois-ci en full-hd (1920×1080) et avec un débit de 15 Mbs. Le raspberry met 10 secondes avant de commencer la vidéo et une fois celle-ci lancée, elle saccade et se bloque par moments. On a donc atteint une limite. Depuis un PC, le streaming de cette même vidéo ne pose pas de problème. C’est donc bien le décodage du raspberry ou sa gestion du réseau qui pose problème.

Pour déterminer d’où vient le souci, on va copier le fichier coupable sur la carte sd. La distribution Openelec créé des répertoires par défaut sur la carte. Ca permet de stocker les fichiers directement sur la sd si on n’a pas envie de streamer via le réseau ou si on ne dispose pas d’un nas.

Cliquer sur la maison pour revenir au menu principal. Aller dans system / file manager / add source. Là il faut à nouveau entrer notre lecteur réseau smb://admin…blablabla. A nouveau on fait Add source et là on choisit « home folder/videos » (ou storage/videos). Il s’agit du stockage local sur la carte sd. Ensuite dans la partie A (gauche), on choisit le fichier sur le lecteur réseau et dans la partie B (droite), on choisit le répertoire storage/videos. Ensuite bouton droit sur le fichier puis copy !

On lit cette fois-ci le fichier sur la carte sd et… Ca fait la même chose mais avec un peu moins de saccade. Un débit de 15 Mbs en h264 semble être de trop pour le processeur du raspberry.

D’après ce que j’ai trouvé sur les forums la puce graphique du raspberry est limitée au niveau 4.1 du format h.264 (http://en.wikipedia.org/wiki/H264#Levels), ce qui correspond à :

1,280×720@68.3 images/s
1,920×1,080@30.1 images/s
2,048×1,024@30.0 images/s
Et si j’ai bien compris le tableau (not sure), le débit peut aller jusqu’à 150 Mb/s ?!
Ma vidéo (25 images/s) devrait donc pouvoir être lue sans problème.
A tout hasard, j’ai essayé de lire mon fichier depuis une clé usb. Et ça donne la même chose, toujours des freezes audio/vidéo.
Ensuite, je me suis intéressé à la piste sonore. Mes deux premières vidéos étaient au format aac tandis que mes rushes vidéos sont en ac3. Le processeur du raspberry a peut-être du mal avec ce format ?
Je réencode ma vidéo en essayant d’être le plus proche de l’original. Le débit a baissé un tout petit peu (14 Mbs). En audio, on a maintenant de l’aac. Pour faire au plus vite, je copie le fichier sur la clé usb. Et bingo ! C’était bien le format de la piste sonore qui posait problème. La vidéo est lue sans aucune saccade.
Je teste également via mon nas avec partage smb et… Ca passe tout aussi bien.
Dernier test pour mettre KO le raspberry : un fichier vidéo directement issu d’un blu-ray (encodé en vc1, container m2ts, avec de l’audio en dts) avec un débit de 40 Mbs. Il s’agit de Hard Target, aka Chasse à l’homme, réalisé par John Woo et avec Jean-Claude Vandamme et son mulet.
hard-target-2
Je ne me fais pas trop d’illusions. Ca va sans doute chouiner.  Bizarrement, le son passe nickel mais la vidéo refuse d’être lue (peut-être à cause de la licence vc1, voire plus bas).
En conclusion, utiliser le raspberry comme un mediacenter n’est pas une folle idée. Xbmc est mature et il est possible d’ajouter des accessoires sympa comme une télécommande infra-rouge. Cependant, si on a des formats différents, voire exotiques, si on veut lire des rushes de camescope, des fichiers audio multicanal, le raspberry ne sera pas l’outil approprié. Et il faudra se tourner vers des choses plus polyvalentes et forcément plus onéreuses. Ou alors l’autre solution est de convertir les sources dans le format h264 pour la vidéo et aac pour l’audio, deux formats que le raspberry gère très bien nativement.
Des pistes pour améliorer le bouzin : utiliser le protocole NFS au lieu de SMB. A priori NFS est plus adapté pour le Raspberry en terme de performance. Le NFS est disponible sur les NAS mais plus difficile à faire sur du windows.
On pourra aussi overclocker le Raspberry. A fouiller !
Enfin il existe des licences payantes (pas chères) pour permettre au Raspberry de décoder du mpeg2 en hardware (les dvd sont en mpeg2) et du vc1 (format microsoft mais apparemment utilisé sur certains blu-ray).