Regarder une video en FULL HD 1080p + sous-titres avec son raspberry pi c'est tout à fait possible... Et en plus c'est très facile!
Alors pour le raspberry pi oublions VLC . OMXPlayer a spécialement été conçu pour le GPU raspberry pi.
sudo aptitude install omxplayer
Pour lancer une vidéo, vous pouvez le faire depuis un contrôle direct ou via ssh , tout se fait en ligne de commande, pas besoin d'ouvrir votre session graphique/
Voici un exemple de lancement de vidéo:
sudo omxplayer -o local -r mavideo.mkv
Dans cet exemple on lance la vidéo au niveau local, si vous êtes en ssh , préférez cette commande:
sudo omxplayer -o hdmi -r mavideo.mkv
Vous pouvez controler l'afficage des sous-titres :
sudo omxplayer -o hdmi -r mavideo.mkv --align center --font-size 65
Vous pouvez télécharger un client SSH sur votre smartphone pour lancer une vidéo / controler le player à distance.
Une fois votre vidéo lancée, vous pouvez effectuer des actions comme mettre en pause ou contrôler le son:
z Afficher informations 1 Augmente la vitesse 2 Diminue la vitesse j Flux audio précédent k Flux audui suivant i Chapitre précédent o Chapitre suivant n Soustitres précédents m Soustitres suivants s Toggle soustitres d Delais soustitres -250 ms f Delais soustitres +250 ms q Quitter OMXPlayer Espace or p Pause - Baisser Volume + Augmenter Volume
L'intérêt du site n'est pas que de proposer de regarder des vidéos mais d'essayer de créer des projets créatifs et apprendre à mélanger les technologies.
Il est possible de lancer une vidéo et d'intervenir dessus depuis d'autres sessions en passant par des pipes . Voyons comment créer ces pipes.
mkdir bin cd bin mkfifo omfifo
Voici un exemple de projet Django pour exécuter les commandes crées précédemment via une page web:
views.py
from django.shortcuts import render from django.views.generic import TemplateView import os from django.http import JsonResponse from omx.settings import MOVIES_FOLDER class IndexView(TemplateView): template_name = "templates/index.html" def get_context_data(self, **kwargs): context = super(IndexView, self).get_context_data(**kwargs) folder_path = MOVIES_FOLDER context['files'] = [] for path, dirs, files in os.walk(folder_path): for filename in files: if filename.endswith(('.avi','.mkv', '.mp4')): context['files'].append( ("{}/{}".format( path, filename ), filename) ) context['files'].sort() return context class ActionView(TemplateView): def post(self, request, **kwargs): action = request.POST['action'] if action == "play": f = request.POST['filepath'].replace(" ", "\ ").replace("(", "\(").replace(")", "\)") print f if f.startswith("/home/pi/torrent"): os.system("omxplayer -r -o hdmi {} --align center --font-size 70 /home/pi/bin/omfifo") elif action == "stop": os.system("echo -n q > /home/pi/bin/omfifo") elif action == "fast-backward": os.system("echo -n $'\x1b\x5b\x42' > /home/pi/bin/omfifo") elif action == "backward": os.system("echo -n $'\x1b\x5b\x44' > /home/pi/bin/omfifo") elif action == "pause": os.system("echo -n p > /home/pi/bin/omfifo") elif action == "forward": os.system("echo -n $'\x1b\x5b\x43' > /home/pi/bin/omfifo") elif action == "fast-forward": os.system("echo -n $'\x1b\x5b\x41' > /home/pi/bin/omfifo") elif action == "lang": os.system("echo -n k > /home/pi/bin/omfifo") elif action == "text": os.system("echo -n m > /home/pi/bin/omfifo") elif action == "volume-down": os.system("echo -n '-' > /home/pi/bin/omfifo") os.system("echo -n '-' > /home/pi/bin/omfifo") elif action == "volume-up": os.system("echo -n '+' > /home/pi/bin/omfifo") os.system("echo -n '+' > /home/pi/bin/omfifo") return JsonResponse({"success": 1})
Si vous utilisez le couple gunicorn & supervisor , créez un exécutable comme ceci
/home/pi/server.sh
#!/bin/bash sudo chmod a+rw /dev/vchiq sudo chmod a+rw /dev/fb0 source /home/pi/virenv/bin/activate cd /home/pi/omx gunicorn omx.wsgi:application --name "omx" \ --workers=4 \ --bind=0.0.0.0:8888 \ --user="pi" \ --group="pi"
Livres Raspberry Pi: conseil de lecture