mediafoundation 能否允许多个客户端同时访问单个网络摄像头设备?
Posted
技术标签:
【中文标题】mediafoundation 能否允许多个客户端同时访问单个网络摄像头设备?【英文标题】:Can mediafoundation allow multiple clients to simultaneously access a single webcam device? 【发布时间】:2017-08-03 18:14:37 【问题描述】:我打算使用 mediafoundation 构建一个适配器来公开诸如“StartCapture”和“StopCapture”之类的方法,并希望多个客户端能够从单个网络摄像头设备同时访问这些方法。
目前,我在示例中看到的代码仅允许 1 个流捕获文件中的数据(另一个最终为空)。
mediafoundation 是否允许同时访问设备?如果有怎么办?
【问题讨论】:
【参考方案1】:视频输入设备历来是专用资源。一旦一个客户端启动会话,其他客户端在运行会话释放之前无法使用相机。
Windows 10 周年更新引入了所谓的 Frame Server,它是一个中间件层,正如宣传的那样,在某些情况下在客户端之间共享摄像头。
This puts an end to the "exclusive" use of devices, and it's arguably a change that Windows should have made long ago. Third-party software for sharing cameras between applications exists, but the operating system should support this scenario natively, as it already does for audio devices.
据我所知,这是行不通的。至少它不适用于我尝试过的几台相机,而且截至目前,共享不适用于 Windows 10 Creators Update。尽管存在某些相机/模式,但可能会引用该功能正在实现共享的某些相机/模式。
【讨论】:
以上是关于mediafoundation 能否允许多个客户端同时访问单个网络摄像头设备?的主要内容,如果未能解决你的问题,请参考以下文章
gRPC Java 客户端能否通过长期存在的 gRPC 流并行发送多个请求以及如何管理 N 个流
SharpDx:无法从“System.IntPtr”转换为“SharpDX.MediaFoundation.IByteStream”