5

在 macOS 上,是否可以将虚拟相机(例如OBS)视为 CaptureDevice?例如,我看到 Google Chrome 或 Zoom 可以使用此相机,但使用 AVCaptureDevice.DiscoverySession 我看不到它。

我做错了吗?

    var deviceTypes: [AVCaptureDevice.DeviceType] = [.builtInMicrophone, .builtInWideAngleCamera]
    #if os(OSX)
    deviceTypes.append(.externalUnknown)
    #else
    deviceTypes.append(contentsOf: [.builtInDualCamera,
                                    .builtInDualWideCamera,
                                    .builtInTelephotoCamera,
                                    .builtInTripleCamera,
                                    .builtInTrueDepthCamera,
                                    .builtInUltraWideCamera])
    #endif
    let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: deviceTypes,
        mediaType: nil, position: .unspecified)

    result = discoverySession.devices.map { device in
        device.localizedName
    }
4

2 回答 2

4

这可能与强化运行时和库验证有关。

打开库验证时,macOS 不再加载使用 3rd 方凭据签名的框架或插件。这是强化运行时的一部分,现在默认启用。不了解 OBS,但虚拟捕获设备通常实现为 CoreMediaIO 插件,在应用启动时加载,因此受此影响。

对于快速测试,您可以尝试禁用强化运行时或设置一个权利,在 HR 打开的情况下禁用库验证。我不知道 Mac App Store 是否接受具有此权利的应用程序。
另一种方法是使用您的签名凭据重新签署 CoreMediaIO 插件(如果可能/允许):https ://developer.apple.com/forums/thread/126895?answerId=398061022#398061022

Camo的开发人员有一个很好的常见问题解答,其中包含一些关于库验证对 CoreMediaIO 插件的影响的技术细节,这里还有一个全面的 StackOverflow 答案。

于 2021-06-29T07:14:14.287 回答
0

尝试将 设置DiscoverSession mediaType.video,并确保您的 OBS 虚拟相机正常工作:您应该能够在 中的相机菜单中选择它Photo Booth.app

于 2021-06-29T05:25:16.503 回答