So sparen Sie SurfaceTexture als bitmap
Wenn ich Dekodieren ein video, das auf einer Oberfläche möchte ich zum speichern der frames möchte ich als bitmap/jpeg-Dateien. Ich will nicht auf dem Bildschirm zeichnen und wollen einfach nur speichern Sie den Inhalt der SurfaceTexture als image-Datei.
Was haben Sie versucht. Haben Sie gesehen, ALSO Frage: stackoverflow.com/questions/12600023/...
Ich bin ganz neu bei GLES, so korrigieren Sie mich bitte, wenn ich falsch Liege: ich dachte direkt konvertieren Sie die Inhalte der SurfaceTexture RGB-basierend auf Oberflächen-Farbe-format, ohne tatsächlich rendering der textur.
Ich bin ganz neu bei GLES, so korrigieren Sie mich bitte, wenn ich falsch Liege: ich dachte direkt konvertieren Sie die Inhalte der SurfaceTexture RGB-basierend auf Oberflächen-Farbe-format, ohne tatsächlich rendering der textur.
InformationsquelleAutor feisal | 2013-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zum Rendern der textur.
Wenn es eine normale textur, und Sie waren mit GLES 2 oder höher, könnten Sie es anbringen, um ein FBO und Lesen Sie direkt ab. Ein
SurfaceTexture
wird unterstützt durch eine "externe textur", und möglicherweise in einem format, das die GL-Treiber bietet keine Unterstützung für einen vollständigen Satz von Operationen auf, so dass Sie nicht tun können. Sie müssen es machen, und Lesen Sie das Ergebnis.FWIW, die Art, wie Sie gehen über die Rettung der Rahmen kann erhebliche Auswirkungen auf die Leistung. Ein vollständiges Beispiel, das die Verwendung von
MediaExtractor
,MediaCodec
,glReadPixels()
- und PNG-Datei-Erstellung ist jetzt bis auf bigflake (ExtractMpegFramesTest).InformationsquelleAutor fadden
Habe ich dies in letzter Zeit, auf der Android-Plattform. Fasst man die verschiedenen Optionen und warum sind Sie/sind nicht anwendbar.
glReadPixels()
Die einzige option, die Android-Java-Entwickler derzeit wirklich haben. Sagte, langsam zu sein. Liest aus einem framebuffer, nicht eine textur (so muss man das Rendern der textur auf eine interne frame-buffer ersten, es sei denn, man will einen Rekord der Bildschirm selbst). Okay. Habe Dinge zu arbeiten.
EGL_KHR_image_base()
Eine Erweiterung, die scheint auf die native (NJK) - Ebene, aber nicht in Java.
glGetTexImage()
Sah vielversprechend aus, aber nicht in OpenGL 2.0 ES-Variante.
Pixel-Buffer-Objekte
Wahrscheinlich die 'richtige' Art und Weise, Dinge zu tun, aber OpenGL 3.0 ES (D. H. ausgewählten Android 4.3+ Geräte).
Ich sage nicht, dies ist das hinzufügen der info wäre, die nicht verfügbar sind anderswo. Aber nachdem so viele scheinbar ähnliche Optionen (, die noch nicht funktionieren würde) war verwirrend. Ich bin nicht eine OpenGL-Experte, so dass alle Fehler, die oben gerne korrigiert.
EGL_KHR_image_base() scheint nicht in der DDR,so kann ich die EGLImage.
InformationsquelleAutor akauppi