Ich versuche, ein paar GPUImagePicture
s als Textur-Quellen zusammen mit einem Fragment-Shader zum Filtern eines Video spielen.GPUImageMovie verwenden mehrere Bilder als Texturen und Prozess
Ich bin in der Lage, Standbilder auf diese Weise großartig zu verarbeiten, aber ich kann nicht herausfinden, was ich vermisse, um dies auf einer GPUImageMovie
arbeiten zu lassen, würde ich jede Hilfe, die angeboten wird, schätzen.
@property (nonatomic, strong) GPUImageView *gpuPlayerView;
@property (nonatomic, strong) GPUImageMovie *gpuMovie;
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:self.video];
self.player = [AVPlayer playerWithPlayerItem:playerItem];
self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[self.player play];
self.gpuMovie = [[GPUImageMovie alloc]initWithPlayerItem:playerItem];
self.gpuMovie.playAtActualSpeed = YES;
GPUImagePicture *sourcePicture1 = [[GPUImagePicture alloc]initWithImage:
[UIImage imageNamed:@"FilterBG"]];
GPUImagePicture *sourcePicture2 = [[GPUImagePicture alloc]initWithImage:
[UIImage imageNamed:@"FilterOverlay"]];
GPUImagePicture *sourcePicture3 = [[GPUImagePicture alloc]initWithImage:
[UIImage imageNamed:@"Filter1Map"]];
GPUImageFilter *filter = [[GPUImageFourInputFilter alloc]initWithFragmentShaderFromString:
kFilter1ShaderString];
[self.gpuMovie addTarget:filter atTextureLocation:0];
if (sourcePicture1)
{
[sourcePicture1 addTarget:filter atTextureLocation:1];
}
if (sourcePicture2)
{
[sourcePicture2 addTarget:filter atTextureLocation:2];
}
if (sourcePicture3)
{
[sourcePicture3 addTarget:filter atTextureLocation:3];
}
[filter addTarget:self.gpuPlayerView];
[self.gpuMovie startProcessing];
Bitte versuchen Sie, dies zu suchen, hilfreich sein .. [GPUImageMovie] (http://stackoverflow.com/questions/23799836/gpuimagemovie-pause -while-applying-filter) – 0yeoj
Haben Sie ein minimales Projekt zur Veranschaulichung Ihres Problems? –
Woher haben Sie Ihre Implementierung von GPUImageFourInputFilter? Angenommen, es basiert auf den GPUImageTwoInputFilter- oder GPUImageThreeInputFilter-Klassen, die mit dem Framework ausgeliefert werden.Möglicherweise möchten Sie diese Klasse einchecken, um sicherzustellen, dass Zeitstempeln für die Aktualisierung von Inhalten entsprechend weitergegeben werden. Testen Sie das obige mit einem GPUImageTwoInputFilter oder GPUImageThreeInputFilter und weniger Blend-Bildern, um zu sehen, ob dies in Ihrer GPUImageFourInputFilter-Implementierung lokalisiert ist. –