влияние на видео с использованием графического процессора, но блок завершения видеозаписи никогда не вызывается?

#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 вместо этого.