Sto provando a utilizzare alcuni GPUImagePicture
s come origini di trama insieme a uno shader di frammenti per filtrare un video in riproduzione.GPUImageMovie utilizza più immagini come trame e processi
Sono in grado di elaborare fermi immagine in questo modo, ma non riesco a capire cosa mi manca per farlo funzionare su un GPUImageMovie
Apprezzerei qualsiasi aiuto offerto.
@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];
Si prega di provare a guardare questo potrebbe essere utile .. [GPUImageMovie] (http://stackoverflow.com/questions/23799836/gpuimagemovie-pause -while-apply-filter) – 0yeoj
Hai qualche progetto minimale da condividere per illustrare il tuo problema? –
Dove hai ottenuto l'implementazione di GPUImageFourInputFilter? supponendo che fosse basato sulle classi GPUImageTwoInputFilter o GPUImageThreeInputFilter fornite con il framework.Potresti voler controllare in quella classe per assicurarti che stia propagando opportunamente la data e l'ora per l'aggiornamento del contenuto. Prova quanto sopra con un GPUImageTwoInputFilter o GPUImageThreeInputFilter e un minor numero di immagini miste per vedere se questo è localizzato sulla tua implementazione GPUImageFourInputFilter. –