rtsp 获取视频流 java_浏览器无插件播放rtsp视频流 java后台 + js + html

rtsp 获取视频流 java_浏览器无插件播放rtsp视频流 java后台 + js + html前言:现在安防设备普遍使用rtsp拉取视频流,要在网页播放rtsp视频流不可以直接实现,html不支持rtsp视频流,所以需要进行转换成html5可以解析的帧数据然后在浏览器进行播放。传输数据流的长连接,网上很多都是node.js开发的http转websocket,借鉴采用java+netty进行了这一步的转换。这个地方一定要搞清楚http和WS的区别,为啥要转WS。本文的核心就是http…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:

现在安防设备普遍使用rtsp拉取视频流,要在网页播放rtsp视频流不可以直接实现,html不支持rtsp视频流, 所以需要进行转换成html5可以解析的帧数据然后在浏览器进行播放。传输数据流的长连接,网上很多都是node.js开发的http转websocket,借鉴采用java + netty 进行了这一步的转换。这个地方一定要搞清楚http和WS的区别,为啥要转WS。本文的核心就是http转ws+ js页面帧展示.

原理:

ffmpeg可以将rtsp视频流转换成很多格式的帧数据。将这些数据以http长连接的方式推送给后台,后台转换为浏览器可以播放的WS数据流,浏览器通过js解析ws协议提取出每一帧后展示。网上的思路也大多是如此,此处以

操作步骤

1.安装ffmpeg,可以用java驱动ffmpeg进行调用,网上有很多案例,封装的库也很方便,在此就不列举。

ffmpeg -rtsp_transport tcp -i “rtsp://admin:guide123@192.168.1.190:554/” -q 0 -buffer_size 1024000 -max_delay 500 -f rawvideo -codec:v libx264 -preset ultrafast http://127.0.0.1:8081/supersecret/live3

这里主要说明优化的几点:

a. ffmpeg转tcp协议不会丢帧,但是不可避免的存在延时大,udp在网络不好的情况下出现很多马赛克。

b. -preset ultrafast这个指令可以让延迟缩小很多 ,画质有一定影响。

2. java后台服务 ,搭建netty平台,将ffmpeg推送的http连接升级为Websocket(WS)长连接,将收到的WS消息广播给指定用户(通过浏览器连接参数或路径进行广播) ,参考rtsp+ffmpeg+ netty +jsmpeg。

3. 引入wfs.js,按自己需求进行微调,前期由于里面参数调整不到位,读帧的速度没调整好(_this.H264_TIMEBASE = 3000),导致帧跳跃。参考github进行微调,从大往小了调整,找到最合适的值。

4. 编写页面进行播放:

h.264 To fmp4

h.264 To fmp4

window.onload = function () {

if (Wfs.isSupported()) {

var video1 = document.getElementById(“video1”),

wfs = new Wfs();

wfs.attachMedia(video1,’ch1′);

}

};

总结了几个地方需注意和优化:

1.播放延迟越来越高,可以通过调整播放速率来调整。解决不了的话定时修改player.currentTime = 当前视频加载进度 来解决,相当于播放器下的快进键和进度条控制拉动。

2.浏览器缩小后视频可能暂停了, 需要在重新打开的时候按上面1的方法处理。.

3.浏览器缓存越来越大,监控视频是一天24小时不间断的播放,所以浏览器在经过一段时间后绝对会崩溃。解决办法是定时(采用了30分钟)重新打开新的视频连接,替换老的视频连接,相当于偷偷的给用户换了个页面播放连接,新老视频播放中间有时间差注意好,预计新的视频流加载的可以平稳播放了再替换并关闭老的视频流,保证平稳过度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183415.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月10日 下午7:46
下一篇 2022年10月10日 下午7:46


相关推荐

  • HostMyBytes

    HostMyBytes 推荐配置:Hostmybytes KVMVPS512MBRAM(SS+BBR加速几乎不占用内存,三四个小站没问题).BudgetVPSHostingPackages:Locationsavailablein:LosAngelesandLondonUK!128MB RAMVPS- $6/year 768MB RAMVPS- …CLICKL…

    2022年7月12日
    27
  • linux下通过V4L2驱动USB摄像头

    linux下通过V4L2驱动USB摄像头目录目录前言 v4l2 解析 v4l2 介绍应用程序通过 V4L2 接口采集视频数据步骤相关结构体解析参考链接前言在移植罗技 C270 摄像头到 6818 的过程中 内核已经检测到了 USB 摄像头 但是直接用 OpenCV 的 API 比如 CvCapture cvCaptureFro intindex 接口 无法打开 USB 摄像头 至少目前我是这么认为的 然后 网上搜索答案

    2026年3月19日
    1
  • Java分布式锁(6种实现方法)

    Java分布式锁(6种实现方法)目录Java分布式锁一、基于ReentrantLock锁解决超卖问题(单体)1.1、重要代码1.2、测试代码二、基于数据库的分布式锁(分布式)2.1、重要代码2.2、重要sql语句2.3、测试三、基于redis分布式锁3.1、重要代码3.2、yml配置四、基于分布式锁解决定时任务重复问题4.1、封装redis分布式锁4.2、重要代码4.3、解决任务重复五、zookeeper分布式锁代码实现5.1…

    2022年5月18日
    49
  • 海康威视摄像头不支持的码流类型_v380pro摄像头怎么连接无线网

    海康威视摄像头不支持的码流类型_v380pro摄像头怎么连接无线网前言:对于HIS视频采集、输出和编解码,直接使用海思SDK中的sample代码+NVP6124就可以实现,这里有提供HIMPP开发文档、海思sample源码和NVP6124的驱动代码,可以自行去下载;HIMPP开发文档:https://download.csdn.net/download/u012478275/11573292海思sample源码:…

    2026年2月23日
    3
  • Unreal中的Cross Product(向量积)方向定义

    Unreal中的Cross Product(向量积)方向定义Unreal中的CrossProduct使用的是左手定则而非右手定则。

    2025年6月6日
    3
  • vue slot插槽_vue插槽的使用场景

    vue slot插槽_vue插槽的使用场景为什么使用slotslot(插槽)在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键

    2022年8月7日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号