Raspberry PI 3 – Compiler VLC avec accélération matérielle

VLC est l’un des meilleurs lecteurs video, il s’agit d’un incontournable. Il est dispo sur toutes les plateformes: windows, mac, android, iphone… et même sur raspberry! oui il est disponible sur raspberry, mais entre nous la version installable depuis les dépôts officiels est quasi inutilisable.

Vous avez fraîchement installé une distribution sur votre Raspberry PI et vous vous empressez d’installer tous les logiciels essentiels dont VLC bien sûr.

Non, pour avoir un VLC qui lit correctement les videos sur Raspberry, il ne suffit pas de taper dans le terminal:

sudo apt-get install vlc

 
Confiant, vous faites un petit test de lecture video pour vérifier que tout fonctionne bien et c’est la catastrophe. La lecture même en 480P est saccadée alors ne parlons même pas d’une video en Full HD… presque impossible d’avoir une image, le CPU qui tourne à 130% jusqu’au freeze du raspberry et un bon gros hard reboot. Mais pourquoi tant de haine?? tout simplement parce que la version de VLC media player disponible sur le repository de Raspbian ne prend pas charge OpenMax chargé de l’accélération matérielle. Voilà pourquoi il est incapable de lire la moindre vidéo un peu « gourmande ».

Bon voilà, triste constatation, pas d’accélération matérielle avec VLC sur le raspberry! c’est le CPU qui se charge de la lourde tâche et bien sûr il n’est pas du tout fait pour çà.

vlcraspberry
vlcraspberry_no hardware acceleration

On pourrait s’arrêter là et se dire, bon – tant pis pas de vidéo avec VLC sur le Raspberry. Mais non! même pas peur, on est des ingénieurs ! Nous allons donc compiler notre VLC optimisé pour le raspberry PI 3 en prenant en compte l’accélération matérielle. On veux regarder nos films de vacances sur le Raspberry PI!

 


1- Prérequis

Tout d’abord vous avez besoin d’une distribution Raspbian Stretch (version desktop bien entendu) et d’un Raspberry PI 3. Bien qu’il soit possible de compiler sur une autre version du Raspberry, ici ce tutorial présente la compilation sur la version 3 uniquement avec Raspbian Stretch.

Si vous avez déjà installé VLC depuis le repository (en constatant misérablement l’échec de la lecture – d’où votre présence sur cette page), désinstallez la:

sudo apt-get purge vlc

Téléchargez les sources de VLC (actuellement 2.2.6). dans le terminal tapez:

cd Downloads
wget http://download.videolan.org/vlc/2.2.6/vlc-2.2.6.tar.xz
tar -xJf vlc-2.2.6.tar.xz

 

2- Installation des dépendances

Une grosse liste de dépendances est à installer. En même temps c’est VLC qu’on va compiler sur le Raspberry PI 3! c’est pas un Hello World… Etant donné la liste conséquente, j’y suis allé en plusieurs fois, les téméraires peuvent regrouper pour installer en une seule fois bien sûr…

sudo apt-get update

sudo apt-get install autopoint gettext liba52-0.7.4-dev libaa1-dev libasound2-dev libass-dev libavahi-client-dev libavc1394-dev libavcodec-dev libavformat-dev libbluray-dev libcaca-dev libcddb2-dev libcdio-dev libchromaprint-dev libdbus-1-dev libdc1394-22-dev libdca-dev libdirectfb-dev libdvbpsi-dev libdvdnav-dev libdvdread-dev libegl1-mesa-dev libfaad-dev libflac-dev libfluidsynth-dev libfreerdp-dev libfreetype6-dev libfribidi-dev

sudo apt-get install libgl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev libgnutls28-dev libgtk2.0-dev libidn11-dev libiso9660-dev libjack-jackd2-dev libkate-dev liblircclient-dev liblivemedia-dev liblua5.2-dev libmad0-dev libmatroska-dev libmodplug-dev libmpcdec-dev libmpeg2-4-dev libmtp-dev libncursesw5-dev libnotify-dev libogg-dev libomxil-bellagio-dev libopus-dev

sudo apt-get install libpulse-dev libqt4-dev libraw1394-dev libresid-builder-dev librsvg2-dev libsamplerate0-dev libschroedinger-dev libsdl-image1.2-dev libsdl1.2-dev libshine-dev libshout3-dev libsidplay2-dev libsmbclient-dev libspeex-dev libspeexdsp-dev libssh2-1-dev libswscale-dev libtag1-dev libtheora-dev libtwolame-dev libudev-dev libupnp-dev

sudo apt-get install libv4l-dev libva-dev libvcdinfo-dev libvdpau-dev libvncserver-dev libvorbis-dev libx11-dev libx264-dev libxcb-composite0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xv0-dev libxcb1-dev libxext-dev libxinerama-dev libxml2-dev libxpm-dev libzvbi-dev lua5.2 oss4-dev pkg-config zlib1g-dev libpng12-dev libtool build-essential autoconf

 

Si vous essayez maintenant de configurer et compiler VLC, vous risquez d’obtenir une erreur concernant Libavutils dont VLC 2.2.6 ne supporte pas les version égale ou supérieure à la version 55. Bravo, jackpot, si vous avez ce message, c’est qu’il faut compiler FFMPEG d’abord 🙂

 

3- Compilation de FFMPEG

Nous allons télécharger les sources de ffmpeg en version 2.7.7 (Nash) et le compiler. Libre à vous d’ajouter des codecs (libmp3lame, x264…) à cette compilation pour FFmpeg.

cd Downloads
wget https://www.ffmpeg.org/releases/ffmpeg-2.7.7.tar.xz
tar -xJf ffmpeg-2.7.7.tar.xz
cd ffmpeg-2.7.7
sudo ./configure –enable-gpl –enable-nonfree –bindir=/usr/local/bin
make
sudo make install

Vous avez le temps de ranger le garage et celui des voisins en attendant… ca va prendre un peu de temps. Une fois compilé, testez ffmpeg pour voir les version des librairies désormais installées:

 

4- Compilation de VLC media player

Ca y est nous y sommes enfin:

cd vlc-2.2.6
./bootstrap CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -I/opt/vc/include/GLES2 -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/mmal -I/opt/vc/include/interface/vchiq_arm -I/opt/vc/include/IL -mfloat-abi=hard -I/opt/vc/include/GLES2 -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib" ./configure –prefix=/usr –enable-omxil –enable-omxil-vout –enable-rpi-omxil –disable-mmal-codec –disable-mmal-vout –enable-gles2


Déosrmais plus d’erreur. Si il vous dit qu’il manque une dépendance à ce stade, installez la. Il m’est déjà arrivé de devoir installer gles2 à cette étape.

make -j3

La compilation prend une vingtaine de minutes, vous pouvez donc désormais aller tondre la pelouse…

sudo make install

Voilà désormais VLC avec OpenMax pour l’accélération matérielle est installé sur votre Raspberry PI 3 sous Raspbian Stretch. Félicitations!
Un petit reboot est je crois nécessaire avant d’utiliser VLC.
 

5- modification des paramètres dans VLC

Ouvrez VLC (celui qu’on vient de compiler hein !) et allez dans:

Outils > Préférences > Video

Vous aurez désormais l’option « Sortie Video OpenMax IL » disponible dans la section « Sortie ».

 

Désormais la lecture de video HD ne pose aucun problème et le CPU n’est plus à 100%. La seule limite est que la video est jouée dans une fenêtre overlay et pas dans la fenêtre principale de VLC. Vous pouvez donc uniquement contrôler la video avec les touches clavier (Ctrl+Q pour sortir).

Voilà, n’hésitez pas à laisser un commentaire ne serait-ce que pour savoir si votre voisin était content de voir son garage rangé 😉

5 commentaires sur « Raspberry PI 3 – Compiler VLC avec accélération matérielle »

  • Bonjour,

    J’ai un problème quand j’arrive à ce niveau là :

    sudo apt-get install libv4l-dev libva-dev libvcdinfo-dev libvdpau-dev libvncserver-dev libvorbis-dev libx11-dev libx264-dev libxcb-composite0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xv0-dev libxcb1-dev libxext-dev libxinerama-dev libxml2-dev libxpm-dev libzvbi-dev lua5.2 oss4-dev pkg-config zlib1g-dev libpng12-dev libtool build-essential autoconf
    J’obtiens ces erreurs :

    Les paquets suivants contiennent des dépendances non satisfaites :
    libpng-dev : Est en conflit avec: libpng12-dev mais 1.2.54-6 devra être installé
    libpng12-dev : Est en conflit avec: libpng-dev mais 1.6.28-1 devra être installé
    E: Erreur, pkgProblem::Resolve a généré des ruptures, ce qui a pu être causé par les paquets devant être gardés en l’état.

    J’ai effectué plusieurs recherches mais impossible d’en venir à bout. Pourtant mon OS (Raspbian Stretch donc) vient d’être fraîchement installé (hier) et la seule modification que j’ai fais c’est d’installer VLC (que j’ai désinstallé et purgé donc).

    Merci 🙂

    • as-tu essayé la désinstallation de libpng-dev ? ensuite un update et un upgrade et enfin retenter l’installation de libpng12.
      Rageant à la dernière librairie nécessaire. Tiens moi au jus

  • Merci pour ta réponse !

    libzvbi-dev : Dépend: libpng-dev mais ne sera pas installé

    Et quand j’installe libzvbi-dev il me remet l’erreur précédente.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *