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!
OMXPlayer
Alors pour le raspberry pi oublions VLC . OMXPlayer a spécialement été conçu pour le GPU raspberry pi.
Installer OXMPlayer
sudo aptitude install omxplayer
Lancer une video
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.
Controler la lecture
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
Controller votre lecteur depuis un projet Django
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"