我正在尝试建立一个简单的macOS应用程序来使用连接到我的苹果电脑上的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需要是所有相机定位的景观
发布于 2021-03-29 11:20:56
根据this苹果开发者论坛的帖子,不支持从macOS应用程序捕获连接的iOS设备的摄像头。
你能做的最接近的事情(正如文章所建议的那样)是在相机(Camera.app)运行时捕获iOS设备的screen,有效地捕获实时相机预览(或者,如果你想从捕获的屏幕中删除相机应用程序的UI,也可以在iOS中滚动自己的相机应用程序)。
https://stackoverflow.com/questions/47927191
复制相似问题