GPUImageMovie verwenden mehrere Bilder als Texturen und verarbeiten

8

Ich versuche, ein paar GPUImagePicture s als Texturquellen zusammen mit einem Fragment-Shader zum Filtern eines Video abzuspielen.

Ich bin in der Lage, Standbilder auf diese Weise großartig zu verarbeiten, aber ich kann nicht herausfinden, was mir fehlt, um dies an einem GPUImageMovie zu arbeiten. Ich würde mich über jede Hilfe freuen, die angeboten wird.

%Vor%     
klcjr89 30.06.2015, 22:34
quelle

3 Antworten

-1

Es gibt eine Methode, mit der Sie dasselbe erreichen können

  

CVOpenGLESTextureCacheCreateTextureFromImage

ermöglicht einen gemeinsamen Puffer zwischen einer GL-Textur und einem Film. In diesem Core Video OpenGLES Texture Caches werden CVOpenGLESTextureRef Texturen zwischengespeichert und verwaltet. Diese Textur-Caches bieten Ihnen die Möglichkeit, Puffer mit verschiedenen Pixelformaten wie 420v oder BGRA direkt aus GLES zu lesen und zu schreiben.

%Vor%

Diese Funktion erstellt entweder ein neues CVOpenGLESTextureRef-Texturobjekt, das dem CVImageBufferRef zugeordnet ist, oder gibt ein Cache-Objekt zurück. Diese Operation erstellt eine Live-Bindung zwischen dem Bildpuffer und dem zugrunde liegenden Texturobjekt.

Ich hoffe, dass Ihnen das dabei hilft, das zu schaffen, was erforderlich ist:)

    
N.K 07.07.2015 04:17
quelle
-2

Ich habe GPUImage 's Beispielcode ( SimpleVideoFileFilter ) versucht, um Ihre Ausgabe zu erreichen. Ich habe GPUImageFilterGroup erstellt und Filter hinzugefügt. Um Bilder als Textur hinzuzufügen, habe ich den Code von GPUImageMissEtikateFilter filter verwendet. Hier ist mein Code:

%Vor%

Ich hoffe, dies wird Ihnen helfen.

    
Bhushan 09.07.2015 14:09
quelle
-2

Nach der Initialisierung Ihres GPUImage:

%Vor%

Sie müssen anrufen:

%Vor%

, um das Bild effektiv zu laden und es der GPUImage-Pipeline zur Verfügung zu stellen.

Und machen Sie dasselbe für sourcePicture2 und sourcePicture3 .

Aktualisierung:

Was ich vor ein paar Jahren tun musste, als ich es mit Filmen und Bildern verwendete, war eine Benachrichtigung hinzuzufügen, wenn der Film geladen und spielbereit war (in GPUImageMovie.m, processAsset method, bevor self.decodeIsAllowed = YES; Nur wenn der Film fertig war, habe ich sein GPUImage-Pipeline-Ziel festgelegt.

    
Nicolas Buquet 09.07.2015 16:35
quelle

Tags und Links