使用带有webRTC的IP摄像头

Min*_*inz 14 linux ffmpeg ip-camera webrtc

我想使用带有webrtc的IP摄像头.然而,webrtc似乎只支持网络摄像头.所以我尝试将IP摄像机的流转换为虚拟网络摄像头.

我找到了像IP Camera Adapter这样的软件,但它们不能正常工作(每秒2-3帧,延迟2秒),而且它们只适用于Windows,我更喜欢使用Linux(如果可能的话).

我尝试ffmpeg/avconv:

  • 首先,我用v4l2loopback创建了一个虚拟设备(命令是:)sudo modprobe v4l2loopback.检测到虚拟设备,可以使用以下命令通过视频(.avi)提供虚拟设备: ffmpeg -re -i testsrc.avi -f v4l2 /dev/video1

  • 来自IP摄像机的流可用于:rtsp://IP/play2.sdp用于Dlink DCS-5222L摄像机.ffmpeg可以捕获此流.

我的问题是在这两个步骤之间建立链接(接收rstp流并将其写入虚拟网络摄像头).我试过ffmpeg -re -i rtsp://192.168.1.16/play2.sdp -f video4linux2 -input_format mjpeg -i /dev/video0但是v4l2有错误(找不到v4l2).

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

Ben*_*ent 6

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

更长的答案是,如果您真的对这个想法感到满意,那么您将不得不使用原生WebRTC API构建一个webrtc网关/断路器.

  1. 在浏览器和断路器之间启动WebRTC会话
  2. 使用网关/断路器抓取IP摄像机馈送
  3. 从断路器通过WebRTC API收集的RTSP流加密并将rtp流推送到WebRTC会话.

这就是别人如何做到以及如何做到这一点.

更新2014年7月30日:

我已经尝试了janus-gateway,我相信流媒体插件确实可以实现这一点,因为它可以获取rtp流并将其推送到webrtc对等体.对于RTSP,您可以创建RTSP客户端(可能使用像gstreamer这样),然后将RTP和RTCP从连接推送到WebRTC对等端.


lul*_*lop 5

我创建了一个简单的示例,将RTSP或HTTP视频源转换为WebRTC流.此示例基于Kurento Media Server(KMS),并且需要安装它才能使示例正常工作.

安装KMS并享受......

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

更新22-09-2015.查看这篇文章,了解为什么转码只是此问题解决方案的一部分的技术说明.


mpr*_*net 5

自此提交以来,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
Run Code Online (Sandbox Code Playgroud)

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