我有一个提供实时 RTSP 视频流的网络摄像机。我可以使用 VLC 媒体播放器通过提供 URL 来查看提要:
rtsp://cameraipaddress
但我需要在网页上显示提要。相机提供商提供了一个我开始工作的 ActiveX 控件,但它确实有问题,导致浏览器经常挂起。
有谁知道我可以使用支持 RTSP 的任何替代视频插件吗?
摄像机可以配置为以 H264 或 MPEG4 流式传输。
我有一个提供实时 RTSP 视频流的网络摄像机。我可以使用 VLC 媒体播放器通过提供 URL 来查看提要:
rtsp://cameraipaddress
但我需要在网页上显示提要。相机提供商提供了一个我开始工作的 ActiveX 控件,但它确实有问题,导致浏览器经常挂起。
有谁知道我可以使用支持 RTSP 的任何替代视频插件吗?
摄像机可以配置为以 H264 或 MPEG4 流式传输。
VLC 还带有一个 ActiveX 插件,可以在网页中显示提要:
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>
在网页上显示来自 IP 摄像机的实时视频流并不容易,因为您需要宽广的互联网带宽和与主要浏览器兼容的出色视频播放器。
但幸运的是,有一些基于云的服务可以为我们完成这项工作。最好的之一是IPCamLive。该服务可以接收来自 IP 摄像机的 RTSP/H264 视频流,并可以将其广播给观众。IPCamLive 具有 Flash/HTML5 视频播放器组件,可在 PC、MAC、平板电脑或移动设备上显示视频。最棒的是,该站点生成了嵌入实时视频所需的 HTML 片段,如下所示:
<iframe src="http://ipcamlive.com/player/player.php?alias=szekesfehervar" width="800px" height="600px"/>
因此,我们只需将其复制粘贴到我们的 HTML 文件中,无需任何修改。
大致可以有 3 种选择在网页中显示 RTSP 视频流:
您可以通过谷歌搜索找到嵌入 activeX 的代码。
据我所知,每个玩家都有一些限制。
您也可以尝试开源 WebRTC 媒体服务器Kurento
它可以播放 RTSP 视频流并将其发送到 WebRTC 或转码为 RTMP 或保存在服务器上。
我们在生产环境中使用它来处理以下情况:
- WebRTC 到 Webrtc(多对多) - WebRTC 转 RTMP - RTSP 到 WebRTC
如果您想将 RTSP 直接流式传输到网页,那么恐怕您唯一的选择是使用相机随附的 ActiveX 控件查看器。这是一个直接连接的 IP Cam -> Viewer,应该是最快的。不知道您为什么遇到问题;Axis ActiveX 对我来说非常好用。
但是,此选项的带宽效率并不高,并且您不能同时为多个观看者提供服务(大多数 IP 摄像机有 10 个观看者的限制)。更好的选择是将单个 RTSP 流上传到集中托管的流媒体服务器,这会将您的流转换为 RTMP/MPEG-TS 并将其发布到 Flash 播放器/机顶盒。
Wowza、Erlyvideo、Unreal Media Server、Red5 是您的选择。
从 Web 插件的 VLC 官方文档中找到了一个简单且有效的解决方案
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>
注意:上面的代码片段使用了rtsp
我的 IP 摄像机支持的 url 格式。所以你需要为你的相机得到同样的东西。您可以通过咨询您的相机供应商支持来获取此信息。另外请记住,我在 Chrome 上测试过它(使用 Chrome 的 activeX 插件)和其他浏览器(包括手机浏览器)可能不受支持。
我知道这篇文章很旧,但前几天我一直在寻找非常相似的东西(在没有任何花哨的 ActiveX 插件的简单 html 页面上查看我的 IP cam 的 RTSP 视频源)。幸运的是,我找到了解决方案!它基于 ffmpeg、NodeJS、NGINX(非强制但有用)和Node Media Server。
链接中的描述很详细且易于理解,但在我让它工作之前我仍然需要处理一些调整(关于 NodeJS 服务器上的端点)。我为它提出了一个自己的问题,并得到了一个很好且有效的答案。
试试 QuickTime 播放器!这是我在网页上生成嵌入对象并播放流的 JavaScript:
//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="'+address+'">';
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、ffmpeg 等等),其中最适合我的是 Janus WebRTC 服务器。设置起来有点困难,你必须从源代码编译它(当我尝试它时,Ubuntu repos 中的版本没有 RTSP 支持),但他们有详细的编译说明和关于如何设置所有内容的文档。
我设法从本地网络上的 3 台全高清摄像机获得视频和音频馈送,几乎没有延迟。我可以确认它适用于大华和海康威视相机(不确定是否所有型号)。
我使用的是运行 Apache Web 服务器的 Ubuntu Server 18.04,以及作为浏览器的 Chrome(默认情况下它在 Firefox 上不起作用,但也许有解决方法)。
通过 Axis 检查媒体流库,它在 Media Source 扩展上中继
他们在 JS 中实现了一个类似于 Gstreamer 的管道,其中包含 h264 depay。注意:js中消耗的流不是直接rtsp,而是由库本身在node.js rtsp-websocket代理上封装成ws://。
我在 Github 上发布了一个项目,它可以帮助您在无需插件的情况下实时将 ip/网络摄像机流式传输到网络浏览器,我在 MIT 许可下为开源项目做出了贡献,可能符合您的需求,您可以:
使用 NodeJS 在网络浏览器上流式传输 IP/网络摄像机
目前还没有完整的框架包,但它是一个启动器,可能会为您提供进一步的方法。
作为一名学生,我希望这会有所帮助,并请为这个项目做出贡献。
Microsoft Mediaplayer 可以满足您的所有需求。我使用 2003 / 2008 Server 的 MS Mediaservices 以广播和单播流的形式提供视频。该服务可以从摄像头获取流并广播它。比您“仅”在所有操作系统系统的所有浏览器中“显示”该图片的问题
我的提示:首先检查操作系统,然后加载您的插件。在 Windows 上很容易 - 采用 WMP ,在其他方面采用 MS Silverligt ...
出于这样的目的,我使用 VLC 作为再分发服务器。你说你可以用 VLC 捕捉视频?右键单击 VLC 中的媒体,选择“流”并选择您的选项。您也可以使用命令行来执行此操作,这为您提供了各种选项(转码、缩放、压缩、去隔行扫描)的潜在好处。这是一个从源到其自己的 555 端口开始 VLC 分发的批处理(因此您必须在网页上的 src 选项中键入 rstp://myvlcserveripaddress:555 才能获取流)
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
在这里,您有一个嵌入播放器的网页示例(基于 VLC 插件)。