macOS:作为 AVFoundation CaptureDevice 访问虚拟相机 (OBS)

标签 macos avfoundation avcapturedevice obs

在 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 不再加载使用 3rd 方凭据签名的框架或插件。这是 Hardened Runtime 的一部分,现在默认启用。不知道 OBS,但虚拟捕获设备通常实现为 CoreMediaIO 插件,在应用程序启动时加载并因此受此影响。
为了快速测试,您可以尝试禁用强化运行时或设置 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 .

关于macOS:作为 AVFoundation CaptureDevice 访问虚拟相机 (OBS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68161335/

相关文章:

iphone - 成功访问AVCaptureDevice Modes iOS7?

ios - 在 iOS 中为 AVCaptureDevice 的输出设置 GrayScale

ios - 在开发人员转移后保持现有的应用内购买产品可用性(Mac 和 iOS)

objective-c - AF网络检查响应

windows - 使用支持 NFC 的手机解锁计算机

macos - opencv 用 clang 编译好,用 gcc 编译不行 os x 10.9

ios - 从 MPRemoteCommandCenter 丢失 "Now Playing"状态

objective-c - Cocoa:将音频附加到现有文件

ios - 为什么我的 AVAudioPlayer 不播放?

swift - 如何在 macOS 上将 iPhone 设为 AVCaptureDevice?