Video streaming NW.js本机视频处理和显示

Video streaming NW.js本机视频处理和显示,video-streaming,html5-video,webgl,video-processing,nwjs,Video Streaming,Html5 Video,Webgl,Video Processing,Nwjs,我正在从事计算机视觉项目,并试图找到一种方法来构建一个具有现代UI的桌面应用程序,该应用程序将能够显示由我的算法处理的实时视频。创建视频流和web浏览器的代码将在同一台计算机上 我有一个本地C++代码,从IP摄像机捕获视频,对捕获的帧进行处理,并绘制结果。例如,它检测人脸并在视频帧上绘制边界框。视频处理代码相当繁重,无法翻译成javascript 之后,我想在使用NW.js构建的桌面应用程序中,在基于Web的GUI中显示这些框架和框 问题是如何以尽可能低的CPU使用开销显示已处理的帧 我可以将每

我正在从事计算机视觉项目,并试图找到一种方法来构建一个具有现代UI的桌面应用程序,该应用程序将能够显示由我的算法处理的实时视频。创建视频流和web浏览器的代码将在同一台计算机上

我有一个本地C++代码,从IP摄像机捕获视频,对捕获的帧进行处理,并绘制结果。例如,它检测人脸并在视频帧上绘制边界框。视频处理代码相当繁重,无法翻译成javascript

之后,我想在使用NW.js构建的桌面应用程序中,在基于Web的GUI中显示这些框架和框

问题是如何以尽可能低的CPU使用开销显示已处理的帧

我可以将每个帧压缩成JPG(PNG/BMP…)并将其发送到
标签,但这种方式会占用太多CPU,这是最糟糕的解决方案

完美的解决方案应该是通过本机代码将帧数据直接发送到GPU上的WebGL纹理中,但我找不到一种方法来实现

可能会有一些折衷,将RGB32(24)传输,但图像流相当重(约200 MB/秒),这是一个2MP/25fps IP摄像头的流。在未来,我希望能在一台电脑上使用多达4个摄像头

我有使用Qt的经验,这项任务可以用Qt解决,但我确实需要一些基于HTML5的GUI及其动画、样式和其他功能


我的目标操作系统是Windows,但有跨平台的解决方案会很好。如果Windows有问题,我可以使用Linux。

您可以使用sockets或WebRTC在后台应用程序和前端NW.js界面之间进行通信。一段时间以来我没有使用C++,但我确信有很多LIBS可以流到V8将处理的格式之一(例如WebM)。另一种方法是编写V8插件,用NW应用程序的最小接口来控制整个捕获/处理方面,以控制它。通过这种方法,您将可以直接访问GPU。@Blindman67,我认为,将FullHD/25fps实时压缩到vp8将需要大约8个英特尔i7处理器内核的满载。您知道如何减少压缩时的CPU使用吗?忘记vp8吧,现代webrtc可以与H264配合使用,但您需要严格的基线配置文件。WebRTC很好,因为它提供的延迟很小,只需在视频元素顶部的画布上绘制即可。@MaxLapshin,但我仍然需要在压缩上花费CPU。据我所知,h264很难压缩。可以发送原始RGB24/32吗?它的速度有多快?原始RGB帧是一个非常糟糕的主意。带全高清的25 fps将消耗1 gbit/s。没有一款浏览器能够承受如此大的流量。你需要创建一些浏览器和C++程序的组合,或者是从摄像机发送视频,然后在浏览器中在摄像机视频上画出你的信息。