使用WebRTC从IP摄像机广播视频流

分享于 

4分钟阅读

多媒体

  繁體

使用WebRTC从IP摄像机广播视频流

从技术上讲,从IP摄像机进行的在线广播不需要WebRTC。摄像机本身就是一台服务器,能够连接到路由器并在线传输视频内容。为什么需要WebRTC?

至少有两个原因:

  • 随着观看以太网广播的观众数量的增加,如果观众数量持续增长,他们将逐渐遇到带宽不足和摄像机资源不足的问题。
  • 如上所述,IP摄像机是服务器。但是它使用什么协议将视频传输到浏览器或移动设备?最有可能的是,相机使用HTTP流技术,视频帧或JPEG图像通过HTTP传输,但是,HTTP流并不完全适合实时视频流。对于交互性和延迟不是很关键的视频点播,它确实表现良好。的确,如果您看电影,则5 -10秒后再接收也没关系。嗯,除非你和其他人同时观看,哦,不!是Jack,他在看到tragic结果之前,在与Bob 10秒的聊天中暗杀了她的+alice

另一个选项是RTSP/RTP加上H.264,但是在这种情况下,浏览器应安装视频播放器插件,例如VLC或QuickTime。但是我们需要真正的基于浏览器的流传输,而没有任何其他麻烦。

当我们登录到相机的管理面板,我们可以看到web界面:

该图片会在所有浏览器中打开,并且每秒显示几乎相同的延迟。运行Wireshark来确认猜测:

这里我们可以看到一个TCP Fragments 1514字节长度的序列

和完成的HTTP 200 ok响应,包含接受JPEG的长度:

然后,我们打开Chrome/Developer Tools/Network,看到实时的get请求和通过HTTP传输的图像:

它不流畅,它反复请求HTTP。相机可以处理多少这样的请求?

查看camera的管理面板的HTML源代码,可以发现以下代码:

if(browser_IE)
 DW('<OBJECT CLASSID="CLSID:'+AxUuid+'" CODEBASE="/VDControl.CAB?'+AxVer+'#version='+AxVer+'" width="0" height="0"> </OBJECT>');else{
 if(mpMode == 1)
 var RTSPName = g_RTSPName1;
 elseif(mpMode == 2)
 var RTSPName = g_RTSPName2;
 elseif(mpMode == 3)
 var RTSPName = g_RTSPName3;
 var o='';
 if(g_isIPv6)
 //because ipv6 not support rtsp.var host = g_netip;
 elsevar host = g_host;
 o+='<object id="qtrtsp_object" width="0" height="0" codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
 o+='classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" type="video/quicktime">';
 o+='<param name="src" value="http://'+host+":"+g_Port+'/qt.mov"/>';
 o+='<param name="autoplay" value="true"/>';
 o+='<param name="controller" value="false"/>';
 o+='<param name="qtsrc" value="rtsp://'+host+':'+g_RTSPPort+'/'+RTSPName+'"/>';
 o+='</object>';
 //alert(o); DW(o);
}

连接网络摄像机

在浏览器192.168.1.34中打开指定的IP地址,以进入摄像机的管理Web界面。默认情况下密码为空。

正如你所看到的,摄像头的视频在管理面板上播放得很好。

配置相机

现在通过RTSP测试cam操作,打开VLC Player(或任何其他支持RTSP的设备-QuickTime,Windows Media Player,RealPlayer等),然后在"打开URL"对话框中指定摄像机的RTSP地址。rtsp://192.168.1.34/live1.sdp

摄像头使用RTSP将视频流发送到播放器。


WEB  str  bro  视频  摄像头  Webrtc