Próbuję użyć kilku źródeł GPUImagePicture
jako źródła tekstur wraz z shaderem fragmentów do filtrowania odtwarzanego wideo.GPUImageMovie używać wielu obrazów jako tekstury i procesu
Jestem w stanie przetwarzać w ten sposób obrazy doskonałe, ale nie mogę zrozumieć, czego mi brakuje, aby to zadziałało na GPUImageMovie
. Doceniam każdą oferowaną pomoc.
@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];
Proszę spróbować tego może być pomocny .. [GPUImageMovie] (http://stackoverflow.com/questions/23799836/gpuimagemovie-pause -to-apply-filter) – 0yeoj
Czy masz jakiś mały projekt do zaprezentowania swojego problemu? –
Skąd wziąłeś swoją implementację GPUImageFourInputFilter? zakładając, że był oparty na klasach GPUImageTwoInputFilter lub GPUImageThreeInputFilter, które są dostarczane ze strukturą.Możesz sprawdzić tę klasę, aby upewnić się, że propaguje znaczniki czasu odpowiednio do aktualizacji treści. Przetestuj powyższe za pomocą GPUImageTwoInputFilter lub GPUImageThreeInputFilter i mniej obrazów mieszania, aby zobaczyć, czy jest to zlokalizowane w twojej implementacji GPUImageFourInFiltr. –