#ios #objective-c #gpuimage
#iOS #objective-c #gpuimage
Вопрос:
self.movie = [[GPUImageMovie alloc]initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"merge_video" ofType:@"mp4"]]];
self.sketchFilter = [[GPUImageSketchFilter alloc]init];
[self.movie addTarget:self.sketchFilter];
self.movie.runBenchmark = YES;
self.movie.playAtActualSpeed = NO;
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyMovie.m4v"];
unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
self.writer = [[GPUImageMovieWriter alloc]initWithMovieURL:movieURL size:CGSizeMake(320, 320)];
[self.sketchFilter addTarget:self.writer];
[self.writer setShouldPassthroughAudio:YES];
[self.movie setAudioEncodingTarget: self.writer];
__weak GPUImageMovieWriter *weakSelf = writer;
[self.movie enableSynchronizedEncodingUsingMovieWriter: weakSelf];
[ weakSelf startRecording];
[self.movie startProcessing];
[weakSelf setCompletionBlock:^{
NSLog(@"Effecting Completed Succefully");
[self.sketchFilter removeTarget:weakSelf];
[weakSelf finishRecording];
}];
Комментарии:
1. Отформатируйте это соответствующим образом!
2. Это не сайт для просмотра кода. Пожалуйста, объясните, что вы пробовали и что происходит.
3. @BaummitAugen здесь я применяю эффект к видео и сохраняю файл в каталог документов, но видеофайл создан размером 0 байт
Ответ №1:
Вы не показываете, где вы определяете переменную writer
экземпляра, но я уверен, что вы создали это как переменную экземпляра, а затем создали writer
свойство, которое вместо этого поддерживается сгенерированной _writer
переменной.
Это означает, что writer
в приведенном выше значении это равно нулю, и ваш фильм даже не начинает обработку. Используйте self.writer
вместо этого.