WebRTC流网络摄像头浏览器到C / C ++本机应用程序

时间:2014-05-19 20:08:55

标签: c++ video-streaming webrtc

我对WebRTC API(尤其是RTCPeerConnection)有些麻烦。

我已成功设法在两个浏览器之间进行视频通话:我知道如何使用getUserMedia获取网络摄像头流,我知道如何联系STUN服务器并对' onicecandidate'做出反应。事件,我知道如何创建报价(和其他同行的答案)并发送sdp。 我使用WebSockets作为信令通道。

我需要做的是使用C / C ++算法处理视频流,所以我正在寻找一种在C / C ++中接收RTCPeerConnection并在C / C ++中接收的呼叫的方法。

我一直在尝试构建和测试Google的libjigle库(虽然尚未取得成功(我在Archlinux上))。但即使我成功了,也不知道如何为我自己的案例重复使用代码。

到目前为止我做了什么:

  • 我了解STUN服务器如何工作,ICE候选人和SDP会话以及如何在javascript中创建/处理
  • 我设法在两个浏览器之间进行点对点调用(甚至在PC和我的Android之间,这非常有效)
  • 我设法使用libwebsockets创建一个简单的信令服务器,在其中我成功接收了浏览器的ICE候选者和sdp消息。

我在找什么:

  • 在C / C ++中接收/解析/处理的方法浏览器发送的内容 ICE候选人,sdp,offer
  • 创建答案的方法(浏览器始终是发起人)并接收/处理网络摄像头流。

我尝试过:

  • 我试图让网络摄像头在HTML5元素中播放,并定期(~33ms)在a中绘制帧,调用getImageData()并使用纯WebSocket发送(R,G,B,alpha)数组连接。但即使对于100x100像素的灰度帧(因此为10kB),我只能通过~600 kb / s的上传流实现~7fps。 这就是我想使用适用于UDP的RTCPeerConnection
  • 的原因

我的约束:

  • 我需要在C或C ++中运行本机应用程序,因为我有用C ++实现的图像/视频处理算法(我见过很多基于Node.js的服务器,但我可以&#t; t有这个:无法调用我的算法
  • 我希望能够以大约30 fps的速度运行,这样对于用户来说这是相对流畅的。
  • 我无法使用Flash或Silverlight:我需要为客户端保留HTML5 / javascript

结论:

  • 我失败的地方是处理ICE候选人,SDP会话和C / C ++中的联系STUN服务器的所有内容,因为与javascript不同,没有事件(' onicecandidates',' onaddstream'等等)。

提前感谢您的帮助!

0 个答案:

没有答案