AVCaptureDevice的方法,之前查了網上和stackoverflow上,沒有,於是自己試著做了下,成功了,分享下。
//實例化
AVCaptureDevice *captureDevice = [[AVCaptureDevice alloc] init];
//先進行判斷是否支持控制對焦
if (captureDevice.isFocusPointOfInterestSupported &&[captureDevice.isFocusModeSupported:AVCaptureFocusModeAutoFocus]) {
NSError *error = nil;
//對cameraDevice進行操作前,需要先鎖定,防止其他線程訪問,
[self.recorder.cameraDevice lockForConfiguration:&error];
[self.recorder.cameraDevice setFocusMode:AVCaptureFocusModeAutoFocus];
[self.recorder.cameraDevice setFocusPointOfInterest:CGPointMake(pointX,pointY)];
//操作完成後,記得進行unlock。
[self.recorder.cameraDevice unlockForConfiguration];
}
由於我做的的視頻拍攝時手動對焦,
用了TapGestureRecognizer 的實例,添加到self.view上,
獲得點擊的坐標,然後用坐標對屏幕的尺寸進行數據處理,應為focusPointOfInterest是從左上到右下(0~1,0~1)范圍內
比如點擊的點tap.x 和tap.y
豎屏時候對焦點應是(tap.x/self.view.frame.size.width, tap.y/self.view.frame.size.height)
另外,這樣或許對用戶來說不夠只管,看過系統相機都知道,點擊對焦點時,有個方塊縮小
我的實現方法是,用了uiview的實例,邊框黃色,2像素寛,背景色clearColor,先添加到self.view上,大小為0,tap手勢的方法裡,設置uiview大小為40,然後加個動畫設置uiview大小為20,這樣當你點擊屏幕某處的時候,有個黃色框縮小,同時,鏡頭進行對焦。