AVCapture iOS - 以较低帧速率捕获时的用户体验

时间:2014-07-09 11:05:19

标签: ios avfoundation avcapturesession frame-rate

我正在使用一些计算机视觉算法,这些算法要求我使用较低的帧速率〜有时甚至是7-10 fps。

问题在于,我不希望用户在使用应用时体验不佳,但我仍希望以较低的帧速率处理。是否有内置API来执行此操作?

我不必进入委托方法并自行手动删除框架并处理所需的框架。

1 个答案:

答案 0 :(得分:1)

在没有搞砸视频的情况下手动删除帧有点困难/几乎不可能,但您可以像这样配置编码器

// in you initialisation code
NSError *err;
AVCaptureDevice* dev = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
[dev lockForConfiguration:&err];
[self configureCameraForFrameRate:dev frameRate:10];
[dev unlockForConfiguration];
 - (void)configureCameraForFrameRate:(AVCaptureDevice *)device frameRate:(NSInteger)rate;
{
    AVCaptureDeviceFormat *bestFormat = nil;
    AVFrameRateRange *bestFrameRateRange = nil;
    for ( AVCaptureDeviceFormat *format in [device formats] ) {
        for ( AVFrameRateRange *range in format.videoSupportedFrameRateRanges ) {
            if ( range.maxFrameRate > bestFrameRateRange.maxFrameRate ) {
                bestFormat = format;
                bestFrameRateRange = range;
            }
        }
    }
    if ( bestFormat ) {
        device.activeFormat = bestFormat;
        CMTime time = CMTimeMake(1, rate);
        device.activeVideoMinFrameDuration = time;
        //NSLog(@"%d %lld",bestFrameRateRange.minFrameDuration.timescale, bestFrameRateRange.minFrameDuration.value);
        device.activeVideoMaxFrameDuration = time;
    }
}

不确定这是实现这一目标的最佳方法,但是...... ^^'