【发布时间】:2017-12-21 14:37:44
【问题描述】:
我正在尝试构建一个简单的 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 相机以使用又名 iPhone 的后续步骤。
p.s 需要为所有相机方向为横向
【问题讨论】:
-
我已经编辑了代码并将自定义视图连接到 IBOutlet,这意味着这现在适用于 mac 上的 Facetime 相机。不确定这是否能让我访问 USB 相机设备(也就是我的 iPhone)
标签: swift macos camera avfoundation