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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android gif 录屏[通俗易懂]

    Android gif 录屏[通俗易懂]/***********************************************************************************Androidgif录屏*说明:*有时候需要用到Android录制动态屏幕信息,转成gif方便存放。**…

    2022年9月19日
    0
  • java实现简单的图书管理系统「建议收藏」

    java实现简单的图书管理系统「建议收藏」一、项目分布Book类:定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get、set方法Library类:写了登录函数(1、普通用户,2、管理员,3、退出系统),Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get、set方法,定义了一些书。operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表Root类:继承…

    2022年7月13日
    15
  • mac的pycharm安装_mac允许任何安装来源

    mac的pycharm安装_mac允许任何安装来源使用MAC配置Python环境1.打开安装好的Pycharm2.创建一个新项目3.可以添加存放的位置4.选择Python安装路径

    2022年8月28日
    0
  • 黄海下一步要完成的工作

    黄海下一步要完成的工作

    2021年6月11日
    115
  • eclipse下载及安装教程[通俗易懂]

    eclipse下载及安装教程[通俗易懂]eclipse下载及安装教程Java编程最好的集成开发工具就是IBM研发的Eclipse软件,Eclipse完全免费,是java开发人员的必备平台。进入eclipse下载页,界面如下图所示:(附加官网下载链接:https://www.eclipse.org/downloads/)eclispe提供了两种下载方式。一种是下载安装程序,下载后直接运行安装程序,根据安装程序的提示选择安装选项并完成安装;一种是下载具有不同功能项的eclispe压缩包,下载后手动解压即可。第一种——安装程序方式

    2022年5月10日
    34
  • java分页与排序orderby_mysql排序分页

    java分页与排序orderby_mysql排序分页java分页与排序代码如下不解释代码如下不解释publicclassSortObimplementsComparable{privateStringname;privateintage;privateDatecreateDate;publicSortOb(Stringname,intage,DatecreateDate){ this.name=name; this.age=age; this.createDate=createDate;}

    2022年10月3日
    0

发表回复

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

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