如何在网页上显示RTSPvideostream?

我有一个提供实时RTSPvideostream的networking摄像头。 我可以使用VLC媒体播放器通过提供URL来查看提要:

rtsp://cameraipaddress 

但是我需要在网页上显示Feed。 相机供应商提供了一个我正在使用的ActiveX控件,但它确实是越野车,并导致浏览器频繁挂起。

有谁知道我可以使用哪些支持RTSP的替代video插件?

相机可以configuration为以H264或MPEG4格式进行stream式传输。

VLC还带有一个ActiveX插件,可以在网页中显示Feed:

http://wiki.videolan.org/ActiveX/HTML

 <OBJECT classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab" width="640" height="480" id="vlc" events="True"> <param name="Src" value="rtsp://cameraipaddress" /> <param name="ShowDisplay" value="True" /> <param name="AutoLoop" value="False" /> <param name="AutoPlay" value="True" /> <embed id="vlcEmb" type="application/x-google-vlc-plugin" version="VideoLAN.VLCPlugin.2" autoplay="yes" loop="no" width="640" height="480" target="rtsp://cameraipaddress" ></embed> </OBJECT> 

粗略地说,你可以有3个select在网页上显示RTSPvideostream:

  1. Realplayer的
  2. Quicktime播放器
  3. VLC播放器

你可以find代码来通过谷歌searchembedded的ActiveX。

据我所知,每个玩家都有一些限制。

  1. Realplayer本身不支持H.264video,您必须安装Realplayer的Quicktime插件才能实现H.264解码。
  2. Quicktime播放器不支持RTP / AVP / TCP传输,而RTP / AVP(UDP)传输不包含NAT穿孔。 因此,唯一可行的传输是WAN部署中的HTTP隧道。
  3. VLC不支持RTP / AVP传输的NAT穿孔,但RTP / AVP / TCP传输可用。

要在网页上显示来自networking摄像机的实时videostream并不容易,因为您需要宽广的互联网带宽和与主stream浏览器兼容的出色的video播放器。

幸运的是,有一些基于云的服务可以为我们完成这项工作。 其中最好的一个是IPCamLive 。 此服务可以从IP摄像机接收RTSP / H264videostream,并将其广播给观众。 IPCamLive具有Flash / HTML5video播放器组件,可在PC,MAC,平板电脑或手机上显示video。 最棒的是,这个网站生成所需的HTML代码片段来embedded实时video,如下所示:

 <iframe src="http://ipcamlive.com/player/player.php?alias=szekesfehervar" width="800px" height="600px"/> 

所以我们只需要复制粘贴到我们的HTML文件没有任何修改。

如果您想将RTSP直接传输到网页上,那么恐怕您唯一的select就是使用相机附带的ActiveX控件查看器。 这是一个直接连接IP Cam – > Viewer,应该是最快的。 不知道为什么你有问题; Axis ActiveX对我来说非常好。

但是,这个选项不是真正的带宽效率,并且不能为多个并发观看者提供服务(大多数IP摄像头有10个观众限制)。 更好的select是将单个RTSPstream上传到集中托pipe的stream媒体服务器,该服务器将您的媒体stream转换为RTMP / MPEG-TS并将其发布到Flash播放器/机顶盒。

Wowza,Erlyvideo,Unreal Media Server,Red5是你的select。

试试QuickTime Player! 下面是我的JavaScript,在网页上生成embedded对象并播放stream:

 //SET THE RTSP STREAM ADDRESS HERE var address = "rtsp://192.168.0.101/mpeg4/1/media.3gp"; var output = '<object width="640" height="480" id="qt" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">'; output += '<param name="src" value="'+adsress+'">'; output += '<param name="autoplay" value="true">'; output += '<param name="controller" value="false">'; output += '<embed id="plejer" name="plejer" src="/poster.mov" bgcolor="000000" width="640" height="480" scale="ASPECT" qtsrc="'+address+'" kioskmode="true" showlogo=false" autoplay="true" controller="false" pluginspage="http://www.apple.com/quicktime/download/">'; output += '</embed></object>'; //SET THE DIV'S ID HERE document.getElementById("the_div_that_will_hold_the_player_object").innerHTML = output; 

从VLC官方文档为web插件find一个简单而有效的解决scheme

https://wiki.videolan.org/Documentation:WebPlugin/

修改了一下代码,并得到它的工作。 这是我的代码 –

 <embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" autoplay="yes" loop="no" width="300" height="200" target="rtsp://10.20.50.15:554/0/888888:888888/main" /> <object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab" style="display:none;"></object> 

注意:上面的代码片段使用我的IP摄像机支持的rtsp url格式。 所以你需要为你的相机得到相同的。 您可以通过咨询您的相机供应商支持获取这些信息。 另外请记住,我在Chrome上进行了testing(使用适用于Chrome的activeX插件),而其他浏览器(包括手机浏览器)可能不受支持。

Wowza

  1. 将RTSP重新stream式传输至RTMP(Flash Player)无法使用Android Chrome或FF(不支持Flash)
  2. 将RTSP重新传输到HLS

networking电话服务器 (Flashphoner)

  1. 将RTSP重新stream式传输到WebRTC(Android或桌面上的Chrome和FF本机浏览器function)

  2. 将RTSP重新stream式传输到Websockets(iOS Safari和Chrome / FF桌面)

看看这篇文章 。

你也可以尝试开源Webrtc媒体服务器Kurento

谁可以播放rtspvideostream,并将其发送到Webrtc或转码为rtmp或保存在服务器上。

我们在生产案例中使用它:

  -  WebRTC到Webrtc(多对多)
  -  WebRTC到RTMP
  -  RTSP到WebRTC

微软Mediaplayer可以做所有,你需要。 我使用2003/2008 Server的MS Mediaservices将video作为广播和单播stream传送。 这项服务可以从摄像机获取stream,并播放它。 比你在所有的OS系统上“全部显示”所有的图片都有问题

我的提示:首先检查操作系统,比加载你的插件。 在Windows上很容易 – 采取WMP,其他采取MS Silverligt …

对于这样的目的,我使用VLC作为重新分配服务器。 你说你用VLC来看video吗? 右键单击VLC中的媒体,select“stream”并select您的选项。 你也可以通过命令行来实现,这为你提供了各种选项(代码转换,缩放,压缩,去隔行)的潜在好处。 这是一个从源码开始到自己555端口的VLC分发的批处理(所以你必须在网页的src选项中inputrstp:// myvlcserveripaddress:555才能获得stream)

 cd \ cd C:\Program Files (x86)\VideoLAN\VLC\ vlc --logo-file C:\logo.png --logo-position 5 --logo-opacity 200 --logo-x 900 --logo-y -2 "mmsh://typeyoursourceIPhere:554" :sout=#transcode{vcodec=div3,vb=800,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=rtp{mux=ts,sdp=rtsp://:555/stream}} :sout-all :sout-keep 

在这里 ,你有一个embedded播放器的网页示例(基于VLC插件)。

在网站上分享实时video的最stream行和可靠的方式是通过RTMP(使用Flash播放器)或HLS(HTTP实时stream式传输),也可以在HTML5上使用移动设备,但涉及很长的延迟时间。

要将RTSPstream转换为RTMP / HLS,需要一个中继服务器(连接到RTSPstream,然后向Web客户端提供RTMP / HLS)。 Wowza Streaming Engine 4.2+提供这样的function,并且可以免费使用有限使用的开发者许可证。 http://www.wowza.com/streaming/ip-camera-streaming

可以在http://www.videowhisper.com/?p=PHP-IP-Camera-Stream上find一个脚本来pipe理这个文件并通过networking发布,同时也提供免费的有限许可证。; 此外,该脚本的在线演示允许将您自己的RTSPstream发布到networking上一段时间(24小时)。

所有上述解决scheme不再工作或太耗费时间来弄清楚。

这是最终的答案。 您可以在您的网站中embeddedrtsp链接。

在你的html编辑器中复制下面的代码:

 <!--- BEGIN PLAYER ---> <!-- webbot bot="HTMLMarkup" startspan ----> <object ID="MediaPlayer" WIDTH="320" HEIGHT="270" CLASSID="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"> <param name="autoStart" value="True"> <param name="filename" value="rtsp://xxx.xxx.xxx:xxxx"> <param NAME="ShowControls" VALUE="False"> <param NAME="ShowStatusBar" VALUE="False"> <embed TYPE="application/x-mplayer2" SRC="rtsp://xxx.xxx.xxx:xxxx" NAME="MediaPlayer" WIDTH="320" HEIGHT="270" autostart="1" showcontrols="0"></embed></object> <!-- webbot bot="HTMLMarkup" endspan ----> <!--- end PLAYER ---> 

如果这一切都太复杂,仍然无法解决,让我来帮助你。

我已经为我的客户做了这个。

点击这里http://www.mhcreative.com.my/ipcameratowebsite/