GPUImage - низкий FPS

В настоящее время я использую графический процессор для записи видео вместе с фильтрами WhiteBalance и Exposure, но FPS очень плохой (около 12 FPS). Я использовал вышеупомянутые фильтры в оригинальном демонстрационном коде GPUImage (SimpleVideoFilter), но результаты те же.

Вот метод, который я использую для записи видео с комбинированными фильтрами. Это результаты для iPhone 5, iPod Touch, который поддерживает до 30 FPS.

Любые идеи для достижения FPS до 28 или что-то с AVCaptureSessionPresetHigh и WhiteBalance, фильтр экспозиции вместе!! Спасибо!!

-(void)recordVideo{

    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPresetHigh cameraPosition:AVCaptureDevicePositionBack];
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
    videoCamera.horizontallyMirrorFrontFacingCamera = NO;
    videoCamera.horizontallyMirrorRearFacingCamera = NO;

    filter = [[GPUImageFilterGroup alloc] init];
    [videoCamera addTarget:filter];

    GPUImageFilterGroup *group = (GPUImageFilterGroup *)filter;
    GPUImageWhiteBalanceFilter *whiteBalance = [[GPUImageWhiteBalanceFilter alloc] init];
    [group addFilter:whiteBalance];

    GPUImageExposureFilter *exposureFilter = [[GPUImageExposureFilter alloc] init];
    [group addFilter:exposureFilter];
    [whiteBalance addTarget:exposureFilter];

    [group setInitialFilters:[NSArray arrayWithObject:whiteBalance]];
    [group setTerminalFilter:exposureFilter];

    filter = group;
    [videoCamera addTarget:filter];

    GPUImageView *filterView = (GPUImageView *)self.view;
    NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
    unlink([pathToMovie UTF8String]);
    NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
    movieWriter.encodingLiveVideo = YES;
    movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(1080.0, 1920.0)];
    [filter addTarget:movieWriter];
    [filter addTarget:filterView];

    [videoCamera startCameraCapture];

    double delayToStartRecording = 0.5;
    dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, delayToStartRecording * NSEC_PER_SEC);
    dispatch_after(startTime, dispatch_get_main_queue(), ^(void){
        NSLog(@"Start recording");

        videoCamera.audioEncodingTarget = movieWriter;
        [movieWriter startRecording];

        double delayInSeconds = 10.0;
        dispatch_time_t stopTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
        dispatch_after(stopTime, dispatch_get_main_queue(), ^(void){

            [filter removeTarget:movieWriter];
            videoCamera.audioEncodingTarget = nil;
            [movieWriter finishRecording];
            NSLog(@"Movie completed");
        });
    });

}

0 ответов

Другие вопросы по тегам