Ich versuche, die GPU zu verwenden, um Videoverarbeitung zu machen. Ich war bisher erfolgreich darin, die Bilder aus einem Video zu extrahieren und sie mit der GPU zu verarbeiten. Bitte denken Sie daran, dass ich eine vollständige OpenGL-Noob bin.Videoframe von GPU-Textur speichern
Ich bin jedoch auf folgenden Flaschenhals gestossen: den fertigen Frame von der GPU holen und in ein Video aufnehmen.
Ich kenne this Beispiel, aber es entspricht nicht genau meinen Bedürfnissen.
Mein openGL Kontext ist javax.microedition.khronos.egl.EGLContext, die mich daran hindert, Texturen zwischen dem beschriebenen durch Bigflake Beispiel und Mine zu teilen, die die Textur i, um das Video schreiben möchten, enthält.
Gibt es eine Möglichkeit, die MediaCodec-Encoderdaten direkt von der GPU zu speisen? Aus meinen Nachforschungen geht hervor, dass man eine vom Geber selbst zur Verfügung gestellte Oberfläche nur als Quelle unter Verwendung der this Methode einstellen kann.
Kann ich irgendwie meine Textur auf die Oberfläche des Encoders zeichnen?
Ich werde versuchen, weitere Details auf Anfrage zur Verfügung zu stellen.
Meinst du - du hast keine Kontrolle über den EGL-Kontext-Erstellungsschritt (dh EGL_RECORDABLE_ANDROID-Flag kann nicht in der aktuellen Konfiguration hinzugefügt werden)? – prabindh
Zwei unterschiedliche Kontexte werden mit unterschiedlichen Konfigurationen benötigt. Eine zum Extrahieren und Verarbeiten von Rahmen und eine zum Schreiben der neuen Filmdatei. Ich kann keine Texturen zwischen den beiden teilen. – Rakatan
Warum benötigen Sie zwei Kontexte mit unterschiedlichen Konfigurationen? EGLSurface nicht mit Surface zusammenführen, sie sind unabhängig. – fadden