我正在尝试构建一个简单的swift(4)macOS应用程序,以使用连接到Mac的iPhone相机。 我已经启动了一个空白的macOS模板应用程序,并打开沙箱以允许摄像头,麦克风和USB,并将以下代码添加到我的ViewController。
import Cocoa
import AVFoundation
class ViewController: NSViewController {
@IBOutlet weak var camera: NSView!
override func viewDidLoad() {
super.viewDidLoad()
camera.layer = CALayer()
let session:AVCaptureSession = AVCaptureSession()
session.sessionPreset = AVCaptureSession.Preset.high
let device:AVCaptureDevice = (AVCaptureDevice.default(for: AVMediaType.video))!
// let listdevices = (AVCaptureDevice.devices())
do {
try session.addInput(AVCaptureDeviceInput(device: device))
//Preview
let previewLayer:AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: session)
let myView:NSView = self.view
previewLayer.frame = myView.bounds
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
self.camera.layer?.addSublayer(previewLayer)
session.startRunning()
// print(listdevices)
// print(device)
} catch {
print(device)
}
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
}
在故事板中,我已经放入了自定义视图。
应用程序构建正常并使用facetime相机没有问题,但是连接iPhone我不会看到AVFoundation可以使用的设备。在接下来的步骤中不确定如何让previewLayer选择使用USB相机的USB相机。
p.s需要成为所有摄影机的景观
答案 0 :(得分:1)
根据 this Apple Developer Forum 帖子,不支持从 macOS 应用捕获连接的 iOS 设备的相机。
您可以做的最接近的事情(如帖子所建议的)是在相机 (Camera.app) 运行时捕捉 iOS 设备的屏幕,有效地捕捉实时相机预览(或如果您想从捕获的屏幕中删除相机应用的 UI,您可以在 iOS 中推出自己的配套相机应用)。