/// 设置最大帧率
/// - 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 {
}
}