使用webRTC的IP摄像机

我想用webrtc使用IP摄像机。 但webrtc似乎只支持networking摄像头。 所以我尝试将IP摄像机的stream转换为虚拟摄像头。

我发现像IP摄像机适配器这样的软件,但是它们不能正常工作(每秒2-3帧,延迟2秒),而且它们只能在Windows上工作,我更喜欢使用Linux(如果可能的话)。

我试试ffmpeg / avconv:

  • 首先,我使用v4l2loopback创build了一个虚拟设备(命令是: sudo modprobe v4l2loopback )。 检测到虚拟设备,并可以使用类似于以下命令的video(.avi)提供: ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1

  • 来自IP摄像机的数据stream可用:Dlink DCS-5222L摄像机的rtsp://IP/play2.sdp 。 这个stream可以被ffmpeg捕获。

我的问题是使这两个步骤之间的联系(接收rstpstream,并将其写入虚拟摄像头)。 我试过ffmpeg -re -i rtsp://192.168.1.16/play2.sdp -f video4linux2 -input_format mjpeg -i /dev/video0但是v4l2(v4l2找不到)有错误。

有没有人知道如何使用webRTC的IP摄像头?

Solutions Collecting From Web of "使用webRTC的IP摄像机"

简短的回答是,不。 在WebRTC的IETF标准中没有提到RTSP目前还没有浏览器有计划支持它。 链接到Chrome的讨论 。

更长的答案是,如果你真的被这个想法卖光了,你将不得不建立一个使用本地WebRTC API的webrtc网关/断路器。

  1. 在浏览器和断路器之间启动WebRTC会话
  2. 用网关/断路器抓取网络摄像头
  3. 通过WebRTC API对从断路器收集的RTSP流中的rtp流加密并推送到您的WebRTC会话。

这就是其他人如何做到这一点以及如何做。

更新7/30/2014:

我已经尝试了janus-gateway ,我相信这个流式插件完全可以做到这一点,因为它可以抓取一个rtp流并将其推送到webrtc对等体。 对于RTSP,您可以创建RTSP客户端(可能使用像gstreamer这样的库 ),然后将RTP和RTCP从连接中推送到WebRTC对等端。

我创建了一个将RTSP或HTTP视频源转换为WebRTC流的简单示例。 这个例子是基于Kurento媒体服务器 (KMS),并要求安装它的例子工作。

安装KMS并享受…

https://github.com/lulop-k/kurento-rtsp2webrtc

更新22-09-2015。 查看这篇文章的技术解释为什么转码只是解决这个问题的一部分。

自此次提交以来, Janus-gateway最近添加了一个简单的RTSP支持(基于libcurl)到它的流式插件

然后可以配置网关与摄像机协商RTSP,并转发RTP认为WebRTC添加到流式插件配置中<prefix>/etc/janus/janus.plugin.streaming.cfg

 [camera] type = rtsp id = 99 description = Dlink DCS-5222L camera audio = no video = yes url=rtsp://192.168.1.16/play2.sdp 

接下来,您将可以使用流式演示页面http://…./demos/streamingtest.html访问WebRTC流

如果您安装了video4linux,则以下命令将从rtsp流创建一个虚拟摄像头:

  gst-launch rtspsrc location=rtsp://192.168.2.18/play.spd ! decodebin ! v4l2sink device=/dev/video1 

你在正确的轨道上,“解码器”是缺少的环节。