1

我有一个 C#/C++ 应用程序,它从连接到用户 PC 的摄像头捕获视频流。然后,它使用英特尔实感 SDK 进行用户细分,以自动移除用户的背景。我需要知道的是如何将自己插入到视频传输链中,以便获取每一帧,对其进行处理,然后将其发送到 WebRTC 模块。

整个期望的效果是使用户看起来像是叠加在网页上。请注意,我需要支持的唯一浏览器是 Chrome,因为我在嵌入式浏览器中运行 Chromium DLL,这要感谢 CefSharp 项目。

我想不通的一件事情是将自己放入视频中,以便在有新视频帧可用时收到通知,对其进行修改,然后将其传递给 Chromium 中的 WebRTC。我下载了 Chromium 源代码,但在任何地方都找不到关键字 getUserMedia。

4

1 回答 1

1

由于您使用的是 Chromium 端口,这意味着您应该可以通过 WebKit 访问 WebGL 调用。

不要在应用程序端执行此操作,而是尝试在您的 HTML 上执行此操作。

由于问题是“在 WebRTC 会话中截取视频帧以进行效果处理?” 我认为这篇文章和它在 github 上的演示完全符合您的要求:

使用 WebGL 对 WebRTC 视频帧应用效果

由于 WebGL 着色器基本上是用 C++ (GLSL) 编写的,因此您可以轻松创建一个片段/像素着色器来移除背景。很可能已经有一个了,值得尝试用谷歌搜索那个。

此外,如果您担心性能问题,这样做会同样快,因为着色器在 GPU 上工作;即使在手机中。

于 2015-08-14T15:49:28.227 回答