Я открываю свою камеру в пользовательском представлении (cameraView), и она работает нормально для задней камеры, но проблема возникает, когда я переключаю ее на передний план с помощью пользовательского поворота button(TurnCamera)
, я получил следующее:
input "AVCaptureFigVideoDevice: 0x1035c9e80 [Front Camera] [com.apple.avfoundation.avcapturedevice.built-in_video: 1]"
, но мой пользовательский вид камеры все еще показывает заднюю камеруи получая captureSession.canAddInput(input) = false
, Должен ли я дать какой-либо доступ в info.plist для передней камеры.
Мой код для открытой камеры: -
func camera(){
let devices = AVCaptureDevice.devices(for: AVMediaType.video)
currentCaptureDevice = (usingFrontCamera ? getFrontCamera() : getBackCamera())
print(currentCaptureDevice)
for device in devices{
do{
let input = try AVCaptureDeviceInput(device: currentCaptureDevice!)
if captureSession.canAddInput(input){
captureSession.addInput(input)
sessionOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if captureSession.canAddOutput(sessionOutput){
captureSession.startRunning()
captureSession.addOutput(sessionOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
previewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer)
previewLayer.position = CGPoint(x: self.cameraView.frame.width/2, y: self.cameraView.frame.height/2)
cameraView.contentMode = .scaleToFill
previewLayer.bounds = cameraView.frame
}
}
}
catch{
print("error")
}
}
}
Функция для получения задней камеры:-
func getBackCamera() -> AVCaptureDevice{
return AVCaptureDevice.default(for: AVMediaType.video)!
}
Функция для получения передней камеры: -
func getFrontCamera() -> AVCaptureDevice?{
let videoDevices = AVCaptureDevice.devices(for: AVMediaType.video)
for device in videoDevices{
let device = device as! AVCaptureDevice
if device.position == AVCaptureDevice.Position.front {
return device
}
}
return nil
}
Действие кнопки для переключения камеры: -
@IBAction func TurnCamera(_ sender: UIButton) {
usingFrontCamera = !usingFrontCamera
camera()
}
Найти демонстрационный проект на: - https://www.dropbox.com/s/6cfmbh3tnw5y4f7/SwitchingCamera.zip?dl=0
Заранее спасибо