我正在尝试更改 OpenTok 中发布者的摄像头。在 Android 中它非常简单,但我不明白如何在 ios 的 objective c 中做到这一点。
我试过了:
if (_publisher.cameraPosition == AVCaptureDevicePositionFront)
{
_publisher.cameraPosition = AVCaptureDevicePositionBack; // back camera
} else
{
_publisher.cameraPosition = AVCaptureDevicePositionFront; // front camera
}
我不得不说我是 Objective C(和 OpenTok)的初学者。
我该怎么办?
谢谢你:)
最佳答案
试试这个:
func setCameraPosition(_ position: AVCaptureDevicePosition) -> Bool {
guard let preset = captureSession?.sessionPreset else {
return false
}
let newVideoInput: AVCaptureDeviceInput? = {
do {
if position == AVCaptureDevicePosition.back {
return try AVCaptureDeviceInput.init(device: backFacingCamera())
} else if position == AVCaptureDevicePosition.front {
return try AVCaptureDeviceInput.init(device: frontFacingCamera())
} else {
return nil
}
} catch {
return nil
}
}()
guard let newInput = newVideoInput else {
return false
}
var success = true
captureQueue.sync {
captureSession?.beginConfiguration()
captureSession?.removeInput(videoInput)
if captureSession?.canAddInput(newInput) ?? false {
captureSession?.addInput(newInput)
videoInput = newInput
} else {
success = false
captureSession?.addInput(videoInput)
}
captureSession?.commitConfiguration()
}
if success {
capturePreset = preset
}
return success
}
func toggleCameraPosition() -> Bool {
guard hasMultipleCameras else {
return false
}
if videoInput?.device.position == .front {
return setCameraPosition(.back)
} else {
return setCameraPosition(.front)
}
}
关于ios - 在 ios 的 opentok 上更改相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45506435/