代码 tips

摄像头的一些关键词

曝光

白平衡

测光

调焦

防抖

采集帧率设置

先判断摄像头支持的帧率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (BOOL)supportsVideoFrameRate:(NSInteger)videoFrameRate
{
if (!_device) {
return NO;
}

AVCaptureDeviceFormat* format = [_device activeFormat];
NSArray *videoSupportedFrameRateRanges = [format videoSupportedFrameRateRanges];
for (AVFrameRateRange *frameRateRange in videoSupportedFrameRateRanges) {
if ( (frameRateRange.minFrameRate <= videoFrameRate) && (videoFrameRate <= frameRateRange.maxFrameRate) ) {
return YES;
}
}

return NO;
}

然后设置最大、最小的帧间间隔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

- (void)doSetFrameRate:(int32_t)frameRate
{
if (![self supportsVideoFrameRate:frameRate]) {
// NSLog(@"CameraCaptureFilter not support framerate %d", newFrameRate);
return;
}
AVCaptureDevice *videoDevice = _device;

if ([videoDevice lockForConfiguration:NULL]) {
[videoDevice setActiveVideoMinFrameDuration:CMTimeMake(1, frameRate)];
[videoDevice setActiveVideoMaxFrameDuration:CMTimeMake(1, frameRate)];

[videoDevice unlockForConfiguration];
_frameRate = frameRate;
_cameraJustChanged = YES;
}
}