我创建了一个自定义相机工具。现在,我正在尝试检查相机是否存在,但是,我只有模拟器(没有相机)和iPhone(两个相机)。我没有处理过任何相机,但我无法理解它如何适用于一台相机,因此我也无法弄清楚如何帮助用户翻转相机
目前我正在使用以下外部库 dojo custom camera
位置.Back
和.Front
有效,我没有处理相机,但我不知道如何
处理 1 个摄像头的检查
根据后置和前置摄像头的存在分配一个变量来控制它们(这样我可以在VC中创建一个uibutton并控制摄像头后置和前置的翻转)。
// I call addVideoInput() while initializing
func addVideoInput() {
if let device: AVCaptureDevice = self.deviceWithMediaTypeWithPosition(AVMediaTypeVideo, position: AVCaptureDevicePosition.Front) {
do {
let input = try AVCaptureDeviceInput(device: device)
if self.session.canAddInput(input) {
self.session.addInput(input)
}
} catch {
print(error)
}
}
}
func deviceWithMediaTypeWithPosition(mediaType: NSString, position: AVCaptureDevicePosition) -> AVCaptureDevice? {
let devices: NSArray = AVCaptureDevice.devicesWithMediaType(mediaType as String)
if devices.count != 0 {
if var captureDevice: AVCaptureDevice = devices.firstObject as? AVCaptureDevice {
for device in devices {
let d = device as! AVCaptureDevice
if d.position == position {
captureDevice = d
break;
}
}
print(captureDevice)
return captureDevice
}
}
print("doesnt have any camera")
return nil
}
最佳答案
您需要删除该对象并使用少量值和 bool 值创建新对象。
在这里,我发布了创建相机位置时的代码 AVCaptureDevicePosition
。
在类的顶部添加enum
。
enum CameraType {
case Front
case Back
}
初始化变量。
var cameraCheck = CameraType.Back
只需更改以下功能即可。
func addVideoInput() {
if cameraCheck == CameraType.Front {
cameraCheck = CameraType.Back
let device: AVCaptureDevice = self.deviceWithMediaTypeWithPosition(AVMediaTypeVideo, position: AVCaptureDevicePosition.Front)
do {
let input = try AVCaptureDeviceInput(device: device)
if self.session.canAddInput(input) {
self.session.addInput(input)
}
} catch {
print(error)
}
}else{
cameraCheck = CameraType.Front
let device: AVCaptureDevice = self.deviceWithMediaTypeWithPosition(AVMediaTypeVideo, position: AVCaptureDevicePosition.Back)
do {
let input = try AVCaptureDeviceInput(device: device)
if self.session.canAddInput(input) {
self.session.addInput(input)
}
} catch {
print(error)
}
}
}
在您的 Storyboard
中创建一个按钮。
现在在您的 viewcontroller
中创建一个 @IBAction
函数。
@IBAction func changeCamera(){
self.camera = nil
self.initializeCamera()
self.establishVideoPreviewArea()
if isBackCamera == true {
isBackCamera = false
self.camera?.cameraCheck = CameraType.Front
}else{
isBackCamera = true
self.camera?.cameraCheck = CameraType.Back
}
}
这就是您的目标。
关于ios - AVFoundation 相机检查和翻转变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690872/