EasyNVR、EasyDSS二次开发之:RTMP、HLS流在web页面进行无插件播放示例Demo代码

不管是基于EasyNVR还是EasyDSS,都是支持无插件直播,这也是未来视频直播的一个趋势。对于传统的浏览器插件播放谁用谁知道;

easynvr

easynvr

这里写图片描述

这里写图片描述

以上是软件自带播放展示

背景需求

对于EasyNVR和EasyDSS的使用方式大概分为两大类,一类是直接将软件作为视频能力平台来进行使用;另一类就是将视频能力集成到自身的业务系统来,这就涉及到相关的接口调用和一些对应的功能的集成。对与前端的web播放器的集成也是一个 需要注意的方向;通常也有很多客户会咨询到关于web播放器集成的相关问题,本篇博客也是对应web流媒体播放器的demo介绍。

解决方案

对于流媒体的web播放器有很多,不管的ckplay、flowplayer、腾讯、阿里等;我们的Easy系列软件使用的是Videojs,因此本篇主要介绍的也是Videojs如何实现HLS、RTMP流的web播放;

引用相关文件
<link rel="stylesheet" href="plugins/video-js-5.19.2/video-js.css"/>
<script src="plugins/video-js-5.19.2/video.js"></script>
<script src="plugins/video-js-5.19.2/videojs-contrib-hls4.js"></script>
<script src="plugins/videojs-hotkeys/videojs.hotkeys.min.js"></script>
<script type="text/javascript" src="plugins/jquery-3.3.1.min.js"></script>
HTML部分

主要就是给videojs一个初始化的标签;

<div class="content-wrapper"><div class="video-wrapper" style="padding-bottom:56.25%;position:relative;margin:0 auto;"><div class="video-inner" style="position:absolute;top:0;bottom:0;left:0;right:0;"><video id="videojs" class="video-js vjs-default-skin vjs-big-play-centered" style="width: 100%; height: 100%;" controls preload="none"poster="" x5-video-player-fullscreen=”true”,x5-video-player-type=”h5”><source src="" type=""></source><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that<a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p></video>     </div></div></div>
js部分;

播放器的初始化;

    function setupPlayer(videoUrl) {videoUrl = videoUrl || "rtmp://121.40.50.44/live/stream_1";if(videoUrl.indexOf("rtmp") == 0){$("#videojs").find("source").attr("src",videoUrl).attr("type","rtmp/mp4");player = videojs("videojs",{notSupportedMessage : '您的浏览器没有安装或开启Flash,戳我开启!',techOrder : ["flash"],autoplay : true});videojs('videojs').ready(function() {this.hotkeys({volumeStep: 0.1,seekStep: 5,enableVolumeScroll: false,enableModifiersForNumbers: false});});player.on("error",function(e){var $e = $(".vjs-error .vjs-error-display .vjs-modal-dialog-content");var $a = $("<a href='http://www.adobe.com/go/getflashplayer' target='_blank'></a>").text($e.text());$e.empty().append($a);})                            } else {var timeout = 10000;var step = 500;var cnt = 0;function test(){cnt += step;$.ajax(videoUrl,{type : "HEAD",global : false,complete :function(xhr,ts){if(cnt > timeout){alert("请求数据失败");return;}//xhr.status == 0 , when cross domain request not foundif(xhr.status == 404 || xhr.status == 0 || (xhr.status != 200 && !isPC())){console.log("video is no ready, waiting...");setTimeout(test,step);}else{$("#videojs").find("source").attr("src", videoUrl).attr("type","application/x-mpegURL");player = videojs("videojs",{autoplay : true}); }}})}test();}}

在自身事件需要的地方调用播放器的初始化方法来完成视频播放;

以解析地址传递留地址参数来完成播放为例;

/解析传递来的参数

var $_GET = (function(){var url = window.document.location.href.toString();var u = url.split("?");if(typeof(u[1]) == "string"){u = u[1].split("&");var get = {};for(var i in u){var j = u[i].split("=");get[j[0]] = j[1];}return get;} else {return {};}})();
$(function(){var VideoUrl = $_GET['url'];  if(VideoUrl){setupPlayer(VideoUrl);}else{alert("请正确输入流地址!");}})

效果展示

播放EasyNVR转发出来的RTMP和hls流

用http-server起一个本地的服务;

这里写图片描述

RTMP播放效果:

通过EasyNVR获取到RTMP流地址;

这里写图片描述

eeasynvr

HLS播放效果:

通过EasyNVR获取到HLS流地址;

这里写图片描述

easynvr

VideoJS官网地址:http://docs.videojs.com/


关于EasyNVR

EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;

详细说明:http://www.easynvr.com

点击链接加入群【EasyNVR解决方案】:383501345

关于EasyDSS流媒体服务器

EasyDSS商用流媒体服务器解决方案是一套集流媒体点播、转码与管理、直播、录像、检索、时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器支持RTMP推流,同步输出HTTP、RTMP、HLS、HTTP-FLV,支持推流分发/拉流分发,支持秒开、GOP缓冲、录像、检索、回放、录像下载、网页管理等多种功能,是目前市面上最合理的一款商用流媒体服务器!

详细说明:http://www.easydss.com/

点击链接加入群【EasyDSS流媒体服务器】:560148162

Copyright © EasyDarwin Team 2012-2018

EasyDarwin

转载于:https://www.cnblogs.com/babosa/p/9743410.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsp中%@ % 与% % 与%! %

<% %> 有个符号的&#xff0c;叫做指令用来提供整个JSP 网页相关的信息&#xff0c;并且用来设定JSP网页的相关属性&#xff0c; 例如&#xff1a;网页的编码方式、语法、信息等。<% %>这个叫做小脚本&#xff0c;是写java代码的<%! %>这个是jsp中脚本声明&a…

Hadoop的学习路线图

目录&#xff1a;.1.Hadoop家族产品2.Hadoop家族学习路线图 Hadoop家族产品截止到2013年&#xff0c;根据cloudera的统计&#xff0c;Hadoop家族产品已经达到20个&#xff01;接下来&#xff0c;我把这20个产品&#xff0c;分成了2类。第一类&#xff0c;是我已经掌握的第二…

new TypeToken<List>>(){}.getType() 是什么意思

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 项目中代码&#xff1a; List<AppVersion> redisList new Gson().fromJson(json, new TypeToken<List<AppVersion>…

11--移除重复节点

编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1: 输入&#xff1a;[1, 2, 3, 3, 2, 1] 输出&#xff1a;[1, 2, 3] 示例2: 输入&#xff1a;[1, 1, 1, 1, 2] 输出&#xff1a;[1, 2]

信息图:程序员/开发人员实际在用哪些工具

BestVendor.com的工作人员在全球范围内采访了500名重要开发人员&#xff0c;在调查询问他们实际使用的工具后&#xff0c;制作了一张信息图&#xff0c;如下。 这张信息图覆盖10个方面的工具&#xff1a;Bug 追踪、数据库、开发框架、集成开发环境&#xff08;IDE&#xff09;、…

class特性

每个HTML元素都可以附带一个class特性。有时候&#xff0c;你希望有一种方法可以指定多个元素并将这些元素和页面上的其他元素区分出来&#xff0c;而不是单独指定文档中的某个元素。 <!DOCTYPE html> <!-- To change this license header, choose License Headers in…

Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”

一大早电脑重启了下&#xff0c;打开项目之后出现了一堆问号&#xff0c;怀疑是Xcode 抽风了&#xff0c;本着怀疑的态度&#xff0c;新建了项目&#xff0c;一波操作下来是正常的&#xff0c;代码能联想&#xff0c;command也好使。于是在网上找答案&#xff0c;终于在这里找到…

12-- 缺失的第一个正数

文章目录1.问题描述2.解题代码1.问题描述 给你一个未排序的整数数组&#xff0c;请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 提示&#xff1a; 你的算法的时间复杂度应…

java中的private public protected

1、public&#xff1a;public表明该数据成员、成员函数是对所有用户开放的&#xff0c;所有用户都可以直接进行调用 2、private&#xff1a;private表示私有&#xff0c;私有的意思就是除了class自己之外&#xff0c;任何人都不可以直接使用&#xff0c;私有财产神圣不可侵…

7款最流行的在线项目管理工具推荐

本文介绍一些非常流行的在线项目管理工具&#xff0c;希望你喜欢。 1. Apptivo 如果你是一个创业的或自由开发人员&#xff0c;或者属于一个小型专业团队&#xff0c;Apptivo这个项目管理软件很值得你你研究。实质上&#xff0c;它是一个基于Web的项目管理应用&#xff0c;让你…

VR全景看年评!PConline年度评测盛典等你来体验

【PConline 2016年度评测】又是一年春草绿&#xff0c;马上还有十天扒拉月2016年就快过完了。每年到这个时候&#xff0c;我们不禁都会拷问自己&#xff1a;你存到钱了么&#xff1f;娶到媳妇了么&#xff1f;买到房了么&#xff1f;答案是都没有&#xff01;哈哈&#xff0c;这…

swagger详解

1快速环境搭建 pom.xml文件中添加如下内容(看清楚再复制&#xff0c;此处不是全部内容) 1 <properties>2 ...3 <swagger.version>2.2.2</swagger.version>4 ...5 </properties>6 7 <dependency>8 …

13--长度最小的子数组

文章目录1.题目要求2.解题代码1.题目要求 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的连续子数组&#xff0c;并返回其长度。如果不存在符合条件的连续子数组&#xff0c;返回 0。 示例&#xff1a; 输入&#xff1a;…

HttpServletRequest 常用方法讲解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Web服务器收到一个http请求&#xff0c;会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象&#xff0c; 从客户端取…

object中的toString方法

任何一个类都是从Object类继承下来的&#xff0c;因此在任何一个类里面都可以重写这个toString()方法。toString()方法的作用是当一个引用对象和字符串作连接的时候&#xff0c;或者是直接打印这个引用对象的时侯&#xff0c;这个引用对象都会自动调用toString()方法&#xff0…

东网科技荣膺2016中国大数据最佳实践奖

11月24日&#xff0c;由中国软件网主办的数据趴活动圆满落幕&#xff0c;活动现场隆重揭晓了大数据领域的重磅榜单&#xff0c;旨在对大数据领域中表现突出的企业、人物进行表彰。东网科技有限公司(以下简称“东网科技”)凭借大数据运营支撑平台及在环保、烟草、教育、政府等行…

Apache Subversion 1.7.2发布,开源版本控制工具

SVN&#xff08;Subversion&#xff09;已经发布了1.7的第二个维护版本。 Apache Subversion是一个开放源码、多用户的版本控制系统&#xff0c;支持非 ASCII 文本和二进制数据&#xff0c;支持可在本地访问或通过网络访问的数据库和文件系统存储库。相对于传统的RCS、CVS&…

react生命周期

1、初始化getDefaultProps()设置默认的props&#xff0c;也可以用dufaultProps设置组件的默认属性。 getInitialState()在使用es6的class语法时是没有这个钩子函数的&#xff0c;可以直接在constructor中定义this.state。此时可以访问this.propscomponentWillMount()在组件初始…

14--用两个栈实现队列

文章目录1.题目详情2.解题代码1.题目详情 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例…

浅谈爬虫 《一》 ===python

浅谈爬虫 《一》 python ‘’正文之前先啰嗦一下&#xff0c;准确来说&#xff0c;在下还只是一个刚入门IT世界的菜鸟&#xff0c;工作近两年了&#xff0c;之前做前端的时候就想写博客来着&#xff0c;现在都转做python了&#xff0c;如果还不开始写点什么&#xff0c;估计时间…