Я пытаюсь закодировать преобразование двойной сферы ("рыбий глаз") в равностороннее (360°) видео
Я использовал код для преобразования двухсферных видео в 360-градусные видео. Моя проблема в том, что он останавливается для видео продолжительностью более 10 секунд. Если я использую его для небольших видео по 10 Мб, это нормально. Но если я попробую это на 70-мегабайтных видео, оно остановится, когда будет достигнуто 30 секунд. Он не хочет завершать преобразование.
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"R0010050_20160823192340" withExtension:@"MP4"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = NO;
filter = [[GPUImageDeFisheye alloc] init];
[movieFile addTarget:filter];
// Only rotate the video for display, leave orientation the same for recording
GPUImageView *filterView = (GPUImageView *)self.view;
[filter addTarget:filterView];
// In addition to displaying to the screen, write out a processed version of the movie to disk
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(1920, 960)];
[filter addTarget:movieWriter];
// Configure this for video from the movie file, where we want to preserve all video frames and audio samples
movieWriter.shouldPassthroughAudio = YES;
movieFile.audioEncodingTarget = movieWriter;
[movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter];
[movieWriter startRecording];
[movieFile startProcessing];
timer = [NSTimer scheduledTimerWithTimeInterval:0.3f
target:self
selector:@selector(retrievingProgress)
userInfo:nil
repeats:YES];
[movieWriter setCompletionBlock:^{
[filter removeTarget:movieWriter];
[movieWriter finishRecording];
dispatch_async(dispatch_get_main_queue(), ^{
[timer invalidate];
self.progressLabel.text = @"100%";
});
}];
У кого-нибудь есть идея?