【问题标题】:macOS: Accessing a virtual Cameras (OBS) as AVFoundation CaptureDevicemacOS:以 AVFoundation CaptureDevice 访问虚拟相机 (OBS)
【发布时间】:2021-06-28 09:58:11
【问题描述】:

在 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
    }

【问题讨论】:

    标签: macos avfoundation avcapturedevice obs


    【解决方案1】:

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

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

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

    developers of Camoa good FAQ with some technical details 关于库验证对 CoreMediaIO 插件的影响,还有一个全面的 StackOverflow 答案here

    【讨论】:

    • 是的,通过禁用库验证,我得到了“OBS 虚拟相机”。我会检查是否允许提交到应用商店,或者插件是否可以重新签名!
    • 这很好 - 感谢您的确认!我还想知道您最终采用了哪种方法,以及在应用审核期间是否有任何问题。
    • 权利似乎不适用于 Mac Catalyst 应用程序,我将不得不在那里询问......
    • 还有一个问题:例如,zoom.app 可以加载相机并且它没有设置该权利
    【解决方案2】:

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

    【讨论】:

    • 谢谢。我在Photo Booth.app 中看不到 OBS 虚拟摄像头(但在 Zoom、Chrome 和 WebEx 中)
    • 我可以看到它,但我只记得我关闭了 SIP。我认为托马斯的回答是对的。
    猜你喜欢
    • 2022-10-23
    • 2020-07-21
    • 1970-01-01
    • 2020-08-11
    • 2021-06-15
    • 2015-12-17
    • 2013-09-16
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多