相機(jī)調(diào)整焦距 0.5x 1x 2.0x 2.5x 3x的獲取

獲取可以設(shè)置的焦距值

        let device: AVCaptureDevice = cameraManager.backFacingCamera()
        var arrTitleAll: [String] = []
        if #available(iOS 13.0, *) {
            let arrFactors = device.virtualDeviceSwitchOverVideoZoomFactors
            if arrFactors.isEmpty == false {
                arrTitleAll.append("0.5x")
                for factor in arrFactors {
                    let trueFactor = factor.floatValue * 0.5
                    let strFactor = NSString(format: "%@", NSNumber(value: trueFactor)) as String
                    let title = strFactor as String + "x"
                    arrTitleAll.append(title)
                }
            } else {
                arrTitleAll = ["0.5x", "1x"]
            }
            
        } else {
            arrTitleAll = ["0.5x", "1x"]
        }
        arrBtnFocusTitleAll = arrTitleAll
        btnFocalLength.tag = 1
        changeCameraZoom()

設(shè)置焦距

func changeCameraZoom() {
        //調(diào)整縮放因子
        let floatValue = ((btnFocalLength.currentTitle ?? "") as NSString).floatValue
        var factor = Float(floatValue)
        factor = factor >= 1 ? (factor * 2) : factor
        cameraManager.setZoom(CGFloat(factor))
        print(CGFloat(factor))
    }

獲取當(dāng)前設(shè)備(這部分為就代碼,為Objective-C實(shí)現(xiàn))

// 根據(jù)位置查找攝像頭
- (AVCaptureDevice *)cameraWithPosition:(AVCaptureDevicePosition) position {
    
    if (@available(iOS 13.0, *)) {
        AVCaptureDeviceDiscoverySession * session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInTripleCamera, AVCaptureDeviceTypeBuiltInTrueDepthCamera, AVCaptureDeviceTypeBuiltInDualWideCamera, AVCaptureDeviceTypeBuiltInDualCamera, AVCaptureDeviceTypeBuiltInUltraWideCamera, AVCaptureDeviceTypeBuiltInTelephotoCamera, AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack];
//        AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInTripleCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack];
        NSArray *devices = session.devices;
        AVCaptureDevice *deviceResult = nil;
        for (AVCaptureDevice *device in devices) {
            if ([device position] == position) {
                deviceResult = device;
                break;
            }
        }
        return deviceResult;
    } else {
        NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
        for (AVCaptureDevice *device in devices) {
            if ([device position] == position) {
                return device;
            }
        }
    }
    return nil;
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容