macOS App使用iPhone相机

时间:2017-12-21 14:37:45

标签: swift macos camera avfoundation

我正在尝试构建一个简单的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需要成为所有摄影机的景观

1 个答案:

答案 0 :(得分:1)

根据 this Apple Developer Forum 帖子,不支持从 macOS 应用捕获连接的 iOS 设备的相机。

您可以做的最接近的事情(如帖子所建议的)是在相机 (Camera.app) 运行时捕捉 iOS 设备的屏幕,有效地捕捉实时相机预览(或如果您想从捕获的屏幕中删除相机应用的 UI,您可以在 iOS 中推出自己的配套相机应用)。