Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在C+中处理用WebRTC(Socket.IO)捕获的视频数据+;服务器_Javascript_C++_Websocket_Webrtc - Fatal编程技术网

Javascript 在C+中处理用WebRTC(Socket.IO)捕获的视频数据+;服务器

Javascript 在C+中处理用WebRTC(Socket.IO)捕获的视频数据+;服务器,javascript,c++,websocket,webrtc,Javascript,C++,Websocket,Webrtc,我正试图找出做以下事情的最佳方法: (A)使用网络浏览器(如Chrome/Chrome)在客户端PC中捕获视频帧 (b)< /强>将它们发送到运行C++处理算法的服务器机器(例如基于OpenCV的突变松鼠检测例程)。< /P> (C)将处理结果发送回客户端PC中的浏览器,以便显示它们(实时性很好,但总体延迟当然是预期的) 到目前为止,我发现WebRTC非常适合做(A)(getUserMedia(),等等…)和理论上的(B)。当我把数据发送到C++服务器时,我的问题就出现了。我一直在研究WebR

我正试图找出做以下事情的最佳方法:

(A)使用网络浏览器(如Chrome/Chrome)在客户端PC中捕获视频帧

<强>(b)< /强>将它们发送到运行C++处理算法的服务器机器(例如基于OpenCV的突变松鼠检测例程)。< /P> (C)将处理结果发送回客户端PC中的浏览器,以便显示它们(实时性很好,但总体延迟当然是预期的)

到目前为止,我发现WebRTC非常适合做(A)(getUserMedia(),等等…)和理论上的(B)。当我把数据发送到C++服务器时,我的问题就出现了。我一直在研究WebRTC的基础知识(包括P2P通信和本地C++ API文档的例子),但是我还没有关于如何开始构建服务器和从浏览器发送数据的线索。虽然我在JavaScript中经验很少,但我已经在类似的场景中工作(JavaScript客户端C++服务器和WebSosits),但是我认为WebRTC解决方案应该更容易实现。p>
我在这个场景中使用webRTC对吗?我错过什么了吗?是否有任何教程或示例覆盖了我错过的场景?

< P>所以,所有您想使用WebRTC、Web套接字和C++服务器来进行视频共享。

我们需要信令服务器(在您的例子中是c++)来建立浏览器之间的连接,在建立连接之后,浏览器在没有服务器的情况下共享视频

您可以使用libwebsocket在浏览器之间建立连接

需要共享用户浏览器、计算机的各种数据,如音频视频信息、ip地址等

您需要通过
new rtpeerconnection(配置)创建peerConnection对象
在每个浏览器上,需要通过
CreateOffer()
createAnswer()
方法共享各种信息

在共享相关信息后,浏览器和视频之间的连接将开始共享

过程是什么?(做一些总结)

在客户端,您如何向c++服务器发送/从c++服务器获取请求

1) 在浏览器1和浏览器2上创建套接字

var websocket = new WebSocket('ws://127.0.0.1:9000', 'echo');
2) 浏览器1(为浏览器2创建优惠)

3) 服务器

在收到请求后,服务器会将响应广播给browser2

printf("received data: %s\n", (char *) in);
4) 浏览器2(在收到报价后为浏览器1创建答案)

这就是在浏览器和视频之间建立连接开始共享的方式

有关

带有c++WebSocket的库


有用的例子有,

从你的帖子中,我了解到你需要一个WebRTC C客户端来建立C客户端和浏览器之间的RTPeerConnection。之后,您可以处理流并使用另一个RTPeerConnection将其返回到浏览器


我通常不使用C/C++,但请检查此存储库:,也许它会有用。

webRTC的RTCPeer连接用于在客户端与客户端之间建立连接,而不需要在其间使用服务器来传输数据。对于客户端之间的这种连接,我们需要用于NAT遍历的服务器(Stun和Turn服务器),但一旦建立了连接,数据就可以从客户端双向发送到客户端,而无需存储在服务器中


若要将数据发送到服务器并进行处理,必须使用WebSocket

> P>看看你是否真的需要使用C++来处理数据(不太可能),因为如果你能很容易地实现它,破坏PEER 2Peer-Talk的优点,例如,它就产生了巨大的开销。不要给你的服务器增加负担

用javascript处理数据,在客户端进行面部识别(以及更多),有很多库可以做到这一点。看看webrtc.io模块,它们有用于处理数据的rtc videoproc ect


可以使用插件在浏览器中使用C++(慢加载)。谢谢,但是我不想在浏览器之间设置一个C++信令服务器。我只想将视频数据从点“a”(机器1中的浏览器)发送到点“b”(机器2中的c++服务器)来存储和处理它。我已经用WebSocket做了类似的事情,但我认为通过webrtc发送视频数据应该更有效,对吗?首先需要向服务器发送信号,以建立浏览器之间的连接。在浏览器之间建立连接后,视频将通过webrtc机制在没有服务器的情况下共享。这取决于您将使用哪个信号服务器。问题是如何将视频发送到其他计算机,只有在第一时间使用信号服务器建立浏览器之间的连接才有可能。@SumanBogati据我所知,没有第二个浏览器。只有一个浏览器和一个开放的简历处理服务器(或称之为c客户端),谢谢!我肯定是在找这样的东西。不过我还有很多东西要学。格蕾西娜·缪!:)您的另一个选择是强制视频通过TURN服务器,您将对其进行修改以捕获数据,并对其执行任何操作。

printf("received data: %s\n", (char *) in);
websocket.onmessage = function (message){
   if(messageAboutCreateOffer){
       websocket.send("createAnswerForVideo");
   }
}