如何将网络摄像头流式传输到服务器并操纵流

nsc*_*hoe 7 webcam html5 stream webrtc webcam-capture

我想将用户的网络摄像头(从浏览器)流式传输到服务器,我需要服务器能够操作流(在该视频流上运行一些C算法)并向用户发回信息.

我非常关注WebRTC和MediaCapture,并在此处阅读示例:https://bitbucket.org/webrtc/codelab/overview .

然而,这是为了点对点视频聊天.根据我的理解,getUserMedia的MediaStream通过RTCPeerConnection传输(使用addStream); 我想知道的是:我可以使用它,但在服务器上处理视频流吗?

在此先感谢您的帮助

nsc*_*hoe 9

这是我设计的解决方案.我在这里发布寻求同样信息的人:-)

前端侧

我使用WebRTC API:获取网络摄像头流getUserMedia,打开RTCPeerConnection(以及RTCDataChannel下行信息).该流是DTLS加密的(强制的),多媒体流使用RTP和RTCP.视频采用VP8编码,Opus编码音频.

后端侧

在后端,这是复杂的部分.我能找到的最佳(尚)替代方案是Janus Gateway.它需要处理很多事情,比如DTLS握手,RTP/RTCP多路分解等.基本上,每次传输RTP数据包时都会触发一个事件.(RTP数据包通常是MTU的大小,因此视频帧和RTP数据包之间没有 1:1的映射).

然后我构建了一个GStreamer(版本1.0)来解包RTP数据包,解码VP8,确保视频缩放和颜色空间/格式转换以发出BGR矩阵(与OpenCV兼容).AppSrc管道的开头有一个组件,最后有一个组件AppSink.

还剩下什么

我必须采取额外措施来确保良好的可伸缩性(线程,内存泄漏等),并找到一种干净有效的方法来使用我在此程序中使用的C++库.

希望这可以帮助 !

  • 对不起@Dabbas,我不在我正在开发解决方案的公司工作,但如果你花时间仔细实施每一步,你应该能够做到这一点.我发现很多人都在为WebRTC而苦苦挣扎,所以我开始在http://nschoe.com上写一些非常详细的文章,我最后会谈到这样的代码,尽管在一瞬间.它现在有点不活跃,但我很快就会恢复它:-)最好的希望. (2认同)