您的位置:首页 > 移动开发 > IOS开发

iOS 中正确切换摄像头&正确实现设置帧率的方式

2013-09-04 22:14 453 查看
以前编写【魔拍】应用的时候,发现一个问题,设置相机按每秒20帧的速度输出视频。开始时一切正常,但是切换摄像头后,帧率就变成动态的了且小于20帧/s。解决方式:

[_captureSession stopRunning];
[_captureSession beginConfiguration];

[_captureSession removeInput:videoInput];
if ([_captureSession canAddInput:newVideoInput]){
videoInput = newVideoInput;
[_captureSession addInput:videoInput];
}

[self setFrameRate];

[_captureSession commitConfiguration];
[_captureSession startRunning];


-(void) setFrameRate;
{

float rate = currentCameraPosition == 1 ? 20 : 30;

if ([_inputCamera respondsToSelector:@selector(activeVideoMinFrameDuration)]) {
[_inputCamera lockForConfiguration:nil];
_inputCamera.activeVideoMinFrameDuration = CMTimeMake(1, rate);
_inputCamera.activeVideoMaxFrameDuration = CMTimeMake(1, rate);
[_inputCamera unlockForConfiguration];

}else{
AVCaptureConnection *conn = [[_captureSession.outputs lastObject] connectionWithMediaType:AVMediaTypeVideo];
if (conn.supportsVideoMinFrameDuration)
conn.videoMinFrameDuration = CMTimeMake(1,rate);
if (conn.supportsVideoMaxFrameDuration)
conn.videoMaxFrameDuration = CMTimeMake(1,rate);

}
}


Tips: 在切换摄像头的时候Stop Seesion,然后重新设置FrameRate,最后重新Run Seesion。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: