是否可以将RTSP流数据导入Web浏览器?
以下是我的一些发现。如果我错了,请纠正我?
1.只有Mac OS和Safari支持RTSP Live Streaming。
- HTML 5视频不支持RTSP。
1.我可以使用VLC插件,但我不想使用它。
ffmpeg和WebSocket混合使用的可能性?
假设我的IP摄像机连接到以太网。
在客户端计算机中:
1.我运行ffmpeg从服务器获取数据(即:IP)
1.客户端计算机运行WebSocket。
1.一旦ffmpeg从RTSP服务器获取数据,它就会解码并生成任何格式的原始图像(例如:yuv)。
1.现在,我必须通过WebSocket将此图像发送到浏览器。
问题:
1.这是正确的方法吗?
1.如何将ffmpeg中的解码图像导入浏览器?
我可能在不同的地方错了。请提供输入。
6条答案
按热度按时间ltqd579y1#
Here是一个博客条目,或者教程,如果你愿意的话,它实现了非常相似的东西。
他们的设置略有不同,但这是总结:
使用
ffmpeg
将您的输入转换为mpeg1video:字符串
使用jsmpeg和
ws
ws WebSocket包中的stream-server.js
脚本安装node.js
。要查看流,请使用jsmpeg中的
stream-example.html
和jsmpg.js
。将stream-example.html
中的WebSocket URL更改为localhost
,然后在您喜欢的浏览器中打开它。更新一个SO topic建议另外两个工作方案,标记为:使用stream-m Java服务器或使用
ffserver
。bkhjykvo2#
如果你只想把它流到少数几个客户端,那么你可以使用一个直接运行ffmpeg的cgi(或者在nodejs中,一个child_process):
NodeJS示例:
字符串
CGI应该更容易。
在浏览器中,您可以
型
(Use海报,因为视频可能需要几秒钟才能显示出来)。
注意事项:这将为每个连接到您的设置启动一个ffmpeg,所以它根本不会扩展。这应该只用于非常私人的网站,其中连接是有限的(例如:仅限于您自己)。
PS:ffmpeg命令可能需要一些调整。
x7yiwoj43#
VLC溶液:
字符串
然后检查
http://localhost:8080/webcam.ogg
或者将此URL集成到您想要运行的任何Web服务中
如果你对vlc的python API感兴趣,这里有一个例子:
型
t1rydlwq4#
scandir.php
(由viewcamera.php
中的JS使用)字符串
streamcam.php
(在crontab
中运行)型
viewcamera.php
-$camera_name
变量来自SQL while循环,其中以下为数据库中的所有摄像机重复。varcameraName
如果来自以下按钮数据属性...型
o4tp2gmn5#
我需要显示在不同的平台和浏览器流。要做到这一点,而不使用任何插件(不确定它是否适用于智能手机和平板电脑),使用了一种与你非常相似的方法。一个ffmpeg crontab任务每秒创建3个图像,并存储到一个目录中。使用Jquery,对php的一个appropriate调用读取目录并获取文件的名称,每隔330毫秒更改一次图像(只更改
<img>
的“src”属性)。为了解决存储问题,使用了其他crontab任务,删除超过1分钟的文件。这不是真实的流,但跨浏览器,很好地解决了问题。ffmpeg任务
字符串
示例性呼叫
型
存储控制任务
型
希望能帮上忙!:)
dzhpxtsq6#
多年来,浏览器已经远离了支持RTSP流媒体。未来,浏览器支持RTSP流媒体的可能性不大。但是,有很多新的发展,特别是WebRTC的出现。
由于RTSP和WebRTC的低延迟,常见的需求和场景是使用WebRTC查看RTSP流或IP Camera流。
简单来说,就是需要一个流媒体网关,将RTSP流转换成WebRTC流,在网页中观看,工作流程如下:
字符串
值得注意的是,IP摄像头一般提供一个RTSP拉流地址,不支持将RTSP流推送到流媒体网关,因此我们需要主动拉IP摄像头流推送到流媒体网关,最后转换成WebRTC在浏览器中播放。
该方案整体时延在200 ms-500 ms左右,整体效果不错。设置流媒体网关可以使用Docker一键部署,详情请参考this post。
x1c 0d1x的数据
端到端的延迟是260毫秒在同一个内联网,它的工作真的很好!