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

时间:2014-05-13 10:13:16

标签: html5 stream webcam webrtc webcam-capture

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

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

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

提前感谢您的帮助

1 个答案:

答案 0 :(得分:8)

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

前端侧

我使用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 ++库。

希望这有帮助!