如何在网页中显示RTSP视频流?

131

我有一台提供实时RTSP视频流的IP摄像头。我可以通过提供URL来使用VLC媒体播放器查看该视频源:

rtsp://cameraipaddress

但我需要在网页上显示这个视频。摄像头供应商提供了一个ActiveX控件,我已经让它工作,但它非常容易出错并导致浏览器经常挂起。

有人知道我可以使用哪些支持RTSP的替代视频插件吗?

该摄像头可配置为以H264或MPEG4格式进行流媒体传输。


1
我也一直在探索这个可能性,使用多个RTSP摄像头,并且不想使用任何ActiveX控件。我想建立一个自定义的Web服务器,使网页可以持续检索JPEG图像以在网页上显示。这样就可以在Safari等浏览器中支持,并在iPhone上查看。 - Jerry Dodge
子集:使用<video:>元素:https://dev59.com/_XI-5IYBdhLWcg3wqqXh - Ciro Santilli OurBigBook.com
@JerryDodge 我已经尝试了使用Java WebSocket服务器的想法,它每秒将图像文件名作为字符串发送到Web浏览器,例如“photo1.jpeg”。Web浏览器中的JavaScript使用文件名来设置HTML的<img>标签的src属性。它可以工作,但速度非常慢,看起来不像实时流视频。你已经尝试过你的想法吗?它运行得快吗? - O Connor
@OConnor 对于非常基础的低帧率显示,客户端拉取比服务器推送更好。还要考虑TCP和UDP之间的区别。它们都有优缺点。最简单的方法是在客户端需要时请求新图像。 - Jerry Dodge
https://github.com/deepch/RTSPtoWeb 看起来是一个不错的选择(我自己还没有尝试过)。 - Günter Zöchbauer
16个回答

2
我在Github上发布了一个项目,可以帮助您实时在Web浏览器上流式传输IP/网络摄像机,无需插件。我为这个开源项目做出了贡献,并使用MIT许可证发布,可能符合您的需求,这是链接:使用NodeJS在Web浏览器上流式传输IP/网络摄像机
目前还没有完整的框架包,但这是一个起点,可以帮助您进一步进行开发。作为一名学生,我希望这对您有所帮助,请为这个项目做出贡献。

2

2
我建议使用npm包rtsp-relay。对于我来说,当rtsp源在同一网络上时,这个包的表现非常出色,只有0.5秒的延迟。
对于我个人而言,在同一本地连接上进行流媒体传输时,我成功将延迟降低到了800至600毫秒之间。你可以在GitHub页面找到相关文档。

1

我通常使用VLC作为分发服务器来实现此类目的。你说你用VLC捕获视频? 在VLC中右键单击媒体,选择“流”并选择您的选项。 您还可以使用命令行完成此操作,这给您带来了各种选项的潜在好处(转码,缩放,压缩,去隔行扫描等)。 这是一个批处理文件,它从源开始启动VLC分发到其自己的555端口(因此您将不得不在网页上的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插件的播放器的网页示例。


1

微软媒体播放器可以满足您的所有需求。 我使用2003/2008服务器的MS媒体服务来传送广播和单播流视频。 此服务可以从摄像机获取流并进行广播。 然后,您只需要在所有操作系统的所有浏览器中“显示”该图片。

我的建议:先检查操作系统,然后加载插件。 在Windows上很容易-使用WMP,在其他操作系统上使用MS Silverligt...


1
您可以使用RTSPtoWeb,添加您的流媒体并在其网页上查看。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接