GPU-beschleunigte Videodecodierung in einem Browser. Ist es möglich?


8

Angenommen, ich habe ein RPI (B +) und möchte, dass es als Kiosk fungiert, in dem ein Video in einer Schleife im Vollbildmodus abgespielt wird. Das Video wird sich programmgesteuert ändern, daher benötige ich eine API, um es zu steuern. Ich habe dies zuvor auf x86-Computern ohne Probleme in einer webbasierten Anwendung (Javascript und HTML5) getan.

Das Problem, das ich habe, ist, dass KEIN Browser (anscheinend) die GPU verwendet, um das Video zu dekodieren. Event ihr Webbrowser , der "Hardware-beschleunigte Videodecodierung" unterstützen sollte, kann keine Videos abspielen. Ich habe gerade Raspbian (NOOBS) installiert und der Browser sollte mindestens das gleiche Video abspielen wie auf dem Video.

Omxplayer läuft gut, flackert aber, wenn es sich wiederholt und Text anzeigt ("Seek ...").

Da dies ein Projekt wäre, an dem rund 400 Raspberry PI (wenn es das kann, was ich brauche) an verschiedenen Standorten beteiligt sein werden, brauche ich wirklich eine solide Lösung.

Gibt es eine Möglichkeit, ein Loop-Video mit GPU-Beschleunigung in einem Browser auf RPi zu haben?

BEARBEITEN: Ich habe eingebettete mp4 / h.264-Videos mit einem regulären Tag ausprobiert. Jeder Browser kann das Video nicht abspielen. Epiphany und Chromium zeigen nur einen schwarzen "Bereich" und die Kontrollen. Kein Video. Midori bekommt einige Frames, aber die CPU-Tops. Youtube / Vimeo kann ebenfalls nicht abgespielt werden.

BEARBEITEN 2: Nachdem ich eine Neuinstallation durchgeführt und den GPU-Speicher auf 128 MB anstelle der Standard-64 MB eingestellt hatte, konnte ich ein Video problemlos auf Epiphany abspielen. Die CPU erreichte nicht 100% (70% -95%). Als ich ein Full-HD-Video ausprobierte, sank die Leistung zwar stark (<1 FPS), aber die CPU lag nur bei 50%. Der Engpass war wahrscheinlich der Speicher. Ich werde ein RPI2 auswählen und es testen.


Sie müssen genauer wissen, was genau die Videoquelle hier ist - wie sie codiert ist und wie Sie sie eingebettet haben. "Hardware-beschleunigte Videodecodierung" Ich bin sicher, dass dies nicht für jede mögliche Codierungsmethode gilt, da die GPU selbst dies nicht kann.
Goldlöckchen

Ich nehme jedes Videoformat / Codec, das in einem Webbrowser reibungslos funktioniert. Die Quelle ist nur eine Datei, die Art und Weise, wie die Datei auf die Festplatte gelangt, ist eine andere Geschichte.
Mario Cesar

Was mich am meisten stört, ist, dass sie ein Video in einem Browser abspielen können und theoretisch dasselbe Video und derselbe Browser nicht auf meinem Computer. Könnte das Problem sein, dass ich RPI 1 (B +) verwende und sie ein RPI 2 verwenden könnten?
Mario Cesar

Zu dieser Zeit gab es keine 2. Wenn Sie wirklich glauben, dass Sie den Testfall dupliziert haben und er nicht mithalten kann, haben Sie wahrscheinlich kein Glück. Ich würde denken, dass .h264, das über HTML5 auf Raspbian abgespielt wird epiphany, "hardwarebeschleunigte Videodecodierung" aktivieren würde, wenn überhaupt.
Goldlöckchen

1
Versuchen Sie, Ihre Videodateien mit nginx zu hosten, und dann sollten Sie in der Lage sein, den src als HTML5-Video-Tag in den Browser einzubetten. Ich dachte, Hardware-Rendering wurde vor langer Zeit gelöst. Ich benutze X überhaupt nicht, also keinen weiteren Kommentar. Ich bin sicher, Sie können OSD auf Omxplayer deaktivieren. Der Flimmerteil ist allerdings eine Schande, nicht sicher, wie man das mit omx überwinden kann. Dies hängt mit dem erneuten Laden und erneuten Puffern von Dateien durch den Treiber zusammen.
Piotr Kula

Antworten:


5

Ja, es ist möglich, dass ich dieses Projekt vor einiger Zeit gestartet habe, aber ich musste wegen unzureichender Zeit aufhören.

Dies ist das beste Ergebnis, das ich erzielen konnte (1080p): https://youtu.be/fVM1GRDhXGw . Es basiert auf dieser offenen Bibliothek: https://github.com/carlonluca/pi . Weitere Infos hier .

Die Demo verwendet diese Bibliothek mit WebKit1 in QtWebKit, die alle ohne X11 ausgeführt werden. Es scheint viel schwieriger zu sein, dies mit WebKit2 zu tun. Leider war die Qualität nicht perfekt, ich weiß nicht, ob es möglich ist, sie zu verbessern. Ich verstehe jedoch nicht, warum ich überhaupt einen Browser verwenden soll, wenn ich nur ein Vollbildvideo abspielen möchte.

Beachten Sie, dass ich der Autor des Projekts bin und es deshalb melde, nur weil ich es weiß. Es kann eine Million anderer Ansätze geben.


Ich danke Ihnen für das Teilen! Möchten Sie unserem kommenden Community-Blog beitreten :)
Ghanima
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.