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



我想流用户的网络摄像头(从浏览器)到服务器,我需要服务器能够操纵流(运行一些C算法的视频流),并向用户发送回信息。

我仔细研究了WebRTC和MediaCapture,并阅读了这里的示例:https://bitbucket.org/webrtc/codelab/overview .

然而,这是为点对点视频聊天制作的。据我所知,来自getUserMedia的MediaStream是通过RTCPeerConnection(与addStream)传输的;我想知道的是:我可以使用这个,但在服务器上处理视频流吗?

提前感谢您的帮助

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

前端侧

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

最新更新