Завершение приложения из-за памяти GPUImageChromaKeyBlendFilter ios - PullRequest
0 голосов
/ 15 марта 2019

Моя концепция - объединить два видео с помощью фильтра смешивания GPUImage Chroma Key.Мой код здесь.

NSString *normalstr=[[NSBundle mainBundle]pathForResource:@"normal" ofType:@"mp4"]; // 25 second video
NSString *greenpath=[[NSBundle mainBundle]pathForResource:@"green" ofType:@"mp4"]; // 25 second video

NSString* finalMoviePath= [DOCUMENTPATHSTORAGE stringByAppendingPathComponent:@"filter.mp4"];

GPUImageMovie *Normalmovie = [[GPUImageMovie alloc] initWithURL:[NSURL fileURLWithPath:normalstr]];
GPUImageMovie *GreenMovie = [[GPUImageMovie alloc] initWithURL:[NSURL fileURLWithPath:greenpath]];

Normalmovie.playAtActualSpeed = YES;
GreenMovie.playAtActualSpeed = YES;

GPUImageChromaKeyBlendFilter *chromakeyfilter = [[GPUImageChromaKeyBlendFilter alloc] init];

[GreenMovie addTarget:chromakeyfilter];
[Normalmovie addTarget:chromakeyfilter];

GPUImageMovieWriter *movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:[NSURL fileURLWithPath:finalMoviePath] size:CGSizeMake(720,1280)];
[chromakeyfilter addTarget:movieWriter];
[movieWriter startRecording];
[GreenMovie startProcessing];
[Normalmovie startProcessing];

[movieWriter setCompletionBlock:^{
    NSLog(@"Movie writing complete : %@",finalMoviePath);
    [movieWriter finishRecording];
    [GreenMovie endProcessing];
    [Normalmovie endProcessing];
    [movieWriter endProcessing];

    [GreenMovie removeAllTargets];
    [Normalmovie removeAllTargets];
    [chromakeyfilter removeAllTargets];

}];

Этот код достигает объема памяти более 1,5 ГБ и после этого происходит сбой приложения.Можете ли вы предложить мне, как это сделать?

...