Décodage vidéo accéléré par GPU sur un navigateur. C'est possible?

8

Disons que j'ai un Rpi (B +) et que je veux qu'il agisse comme kiosque, où une vidéo sera lue en boucle en plein écran. La vidéo changera par programme, j'ai donc besoin d'une API pour la contrôler. Je l'ai déjà fait auparavant, sur des machines x86, sans problème, dans une application web (Javascript et HTML5).

Le problème que j'ai, c'est qu'aucun navigateur n'utilise (apparemment) le GPU pour décoder la vidéo. Événement leur navigateur Web qui devrait prendre en charge le «décodage vidéo accéléré par le matériel» ne peut pas lire les vidéos. Je viens d'installer Raspbian (NOOBS) et le navigateur devrait au moins lire la même vidéo que sur la vidéo.

Omxplayer le fait bien fonctionner, mais scintille quand il boucle et montre du texte ("Seek ...").

Comme ce serait un projet qui impliquera environ 400 Raspberry PI (s'il peut faire ce dont j'ai besoin) sur différents emplacements, j'ai vraiment besoin d'une solution solide.

Existe-t-il un moyen d'avoir une vidéo en boucle, accélérée par GPU, sur un navigateur sur RPi?

EDIT: J'ai essayé des vidéos mp4 / h.264 intégrées avec une balise régulière. Chaque navigateur ne parvient pas à lire la vidéo. L'Epiphanie et le Chrome ne montrent qu'une "zone" noire et les contrôles. Pas de vidéo. Midori obtient quelques cadres, mais le dessus du processeur. Youtube / Vimeo échoue également à jouer.

EDIT 2: Après avoir fait une nouvelle installation et réglé la mémoire du GPU à 128 Mo au lieu des 64 Mo par défaut, j'ai réussi à lire une vidéo, en douceur, sur Epiphany. Le CPU n'a pas atteint 100% (70% -95%). Bien que, lorsque j'ai essayé une vidéo Full HD, les performances aient chuté considérablement (<1 FPS) mais que le processeur n'était qu'à 50%, le goulot d'étranglement était probablement la mémoire. Je vais choisir un RPI2 et le tester.

Mario Cesar
la source
Vous devez être plus précis sur ce qu'est exactement la source vidéo ici - comment elle est encodée et comment vous l'avez intégrée. "Décodage vidéo accéléré par le matériel" Je suis sûr que cela ne s'applique pas à toutes les méthodes d'encodage possibles, car le GPU lui-même ne peut pas le faire.
goldilocks
Je prendrai n'importe quel format / codec vidéo qui fonctionnera sans problème sur un navigateur Web. La source n'est qu'un fichier, la façon dont le fichier arrive sur le disque est une autre histoire.
Mario Cesar
Ce qui me dérange le plus, c'est qu'ils peuvent lire une vidéo sur un navigateur, et, théoriquement, la même vidéo, et le même navigateur ne peut pas sur ma machine. Le problème pourrait-il être que j'utilise RPI 1 (B +) et qu'ils pourraient utiliser un RPI 2?
Mario Cesar
Il n'y avait pas de 2 à ce moment-là. Si vous croyez vraiment avoir dupliqué le cas de test et qu'il n'est pas à la hauteur, vous n'avez probablement pas de chance. Je pense que .h264 joué via HTML5 sur Raspbian epiphanyengagerait le "décodage vidéo accéléré par le matériel" si quelque chose le permet.
goldilocks
1
Essayez d'utiliser nginx pour héberger vos fichiers vidéo, puis vous devriez pouvoir intégrer le src en tant que balise vidéo HTML5 sur le navigateur. Je pensais que le rendu matériel avait été résolu il y a longtemps. Je n'utilise pas du tout X donc aucun autre commentaire. Je suis sûr que vous pouvez désactiver l'OSD sur omxplayer. La partie scintillement est une honte cependant, je ne sais pas comment surmonter cela avec omx. Cela a à voir avec le rechargement et la remise en mémoire des fichiers du pilote.
Piotr Kula

Réponses:

5

Oui, c'est possible, j'ai commencé ce projet il y a quelque temps mais j'ai dû m'arrêter faute de temps.

C'est le meilleur résultat que j'ai pu obtenir (1080p): https://youtu.be/fVM1GRDhXGw . Il est basé sur cette bibliothèque ouverte: https://github.com/carlonluca/pi . Plus d'infos ici .

La démo utilise cette bibliothèque avec WebKit1 dans QtWebKit, tous fonctionnant sans X11. Il semble beaucoup plus difficile de le faire avec WebKit2. Malheureusement la qualité n'était pas parfaite, je ne sais pas s'il est possible de l'améliorer. Cependant, je ne vois pas pourquoi utiliser un navigateur en premier lieu si le désir est simplement de lire une vidéo en plein écran.

Notez que je suis l'auteur du projet, donc je le rapporte juste parce que je le connais. Il peut y avoir un million d'autres approches.

Luca Carlon
la source
Merci pour le partage! Aimeriez-vous rejoindre notre prochain blog communautaire :)
Ghanima