标签:ios开发
视频的合成,透明通道是大家所熟知的
_movieFile.runBenchmark = YES; _movieFile.playAtActualSpeed = NO; _movieFile2 = [[GPUImageMovie alloc] initWithURL:url2]; _movieFile2.runBenchmark = YES; _movieFile2.playAtActualSpeed = NO; _filter = [[GPUImageScreenBlendFilter alloc] init]; // filter = [[GPUImageUnsharpMaskFilter alloc] init]; [_movieFile addTarget:self.filter]; [_movieFile2 addTarget:self.filter]; // Only rotate the video for display, leave orientation the same for recording // In addition to displaying to the screen, write out a processed version of the movie to disk NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/last.mov"]; unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie NSLog(@"file = %@",pathToMovie); NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie]; self.movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(640.0, 360.0)]; [self.filter addTarget:self.movieWriter]; // Configure this for video from the movie file, where we want to preserve all video frames and audio samples self.movieWriter.shouldPassthroughAudio = YES; //movieFile.audioEncodingTarget = self.movieWriter; [_movieFile enableSynchronizedEncodingUsingMovieWriter:self.movieWriter]; [self.movieWriter startRecording]; [_movieFile startProcessing]; [_movieFile2 startProcessing]; __block mlkiMovie * sself = self; [self.movieWriter setCompletionBlock:^{ [sself.filter removeTarget:sself.movieWriter]; [sself.movieFile endProcessing]; [sself.movieFile2 endProcessing]; [sself.movieWriter finishRecording]; NSLog(@"ok"); }];
标签:ios开发
原文地址:http://blog.csdn.net/think_ma/article/details/43513427