iOS视频输出设置帧率

464 阅读1分钟
/// 设置最大帧率
/// - Parameters:
///   - maxFrameRate: 最大帧率
///   - device: 摄像头设备
- (void)setMaxFrameRate:(Float64)maxFrameRate forDevice:(AVCaptureDevice *)device
{    
    @try    
    {        
        NSError *lockError = nil;
        if ([device lockForConfiguration:&lockError])
        {
            NSArray *videoSupportedFrameRateRanges = device.activeFormat.videoSupportedFrameRateRanges;
            AVFrameRateRange *minFrameRateRange = videoSupportedFrameRateRanges.firstObject;
            for (AVFrameRateRange *range in device.activeFormat.videoSupportedFrameRateRanges)
            {
                if (range.minFrameRate < minFrameRateRange.minFrameRate)
                {
                    minFrameRateRange = range;
                }
            }
            CMTime minFrameDuration = CMTimeMake(1, maxFrameRate);
            //超出范围就取默认值
            if (maxFrameRate < minFrameRateRange.minFrameRate || maxFrameRate > minFrameRateRange.maxFrameRate)
            {
                minFrameDuration = kCMTimeInvalid;
            }
            device.activeVideoMinFrameDuration = minFrameDuration;
            [device unlockForConfiguration];
            NSLog(@"OnboardingScan--打印帧数最小: %@, 最大:%@", @((int32_t)device.activeVideoMinFrameDuration.timescale).stringValue, @((int32_t)device.activeVideoMaxFrameDuration.timescale).stringValue);
        }
    } @catch (NSException *exception) {

     } @finally {

    }
}