OMXPlayer FULL HD 1080px raspberry pi

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"