vue + typescript + video.js实现 流媒体播放 视频监控功能


Posted in Javascript onJuly 07, 2019

视频才用流媒体,有后台实时返回数据, 要支持flash播放, 所以需安装对应的flash插件。当视频播放时,每间隔3秒向后台发送请求供检测心跳,表明在线收看状态,需要后台持续发送视频数据。

1. yarn add video.js videojs-flash

2. 创建videp.js声明文件 

vue + typescript + video.js实现 流媒体播放 视频监控功能 

3. 创建video_player.vue组件,供外部调用。源码如下

<script lang="ts">
import { Component, Emit, Prop, Vue } from 'vue-property-decorator';

import 'video.js/dist/video-js.css';

import _videojs from 'video.js';
const videojs = (window as any).videojs || _videojs;
import 'videojs-flash';


@Component({
 name: 'video-player',
})
export default class VideoPlayer extends Vue {
 /* ------------------------ INPUT & OUTPUT ------------------------ */
 @Prop({ type: Object, default: () => {}}) private options!: object;

 /* ------------------------ VUEX (vuex getter & vuex action) ------------------------ */

 /* ------------------------ LIFECYCLE HOOKS (created & mounted & ...) ------------------------ */
 private mounted() {
  this.player = videojs(this.$refs.videoPlayer, this.options, function onPlayerReady() {
   // console.log('onPlayerReady');
  });
 }

 private beforeDestroy() {
  if (this.player) {
   this.player.dispose();
  }
 }
 /* ------------------------ COMPONENT STATE (data & computed & model) ------------------------ */
 private player: any;

 /* ------------------------ WATCH ------------------------ */

 /* ------------------------ METHODS ------------------------ */
}

</script>

<template>
<div class="module_video_player">
 <video ref="videoPlayer" class="video-js" autoplay></video>
</div>
</template>

<style lang="stylus" scoped>
@import '~@/assets/styles/var.styl';

.module_video_player
 position relative
 width 780px

</style>

4. 在需要使用的模块(如show_monitor.vue)调用。组件创建后,向后台发送轻轻获取rtmp视频播放地址,并更新videoOptions中的src。触发video_player的创建、挂载等。

import VideoPlayer from '@/components/video_player.vue';

components: {
 VideoPlayer,
}

 private videoOptions = {
  techOrder: ['flash', 'html5'],
  sourceOrder: true,
  flash: {
   hls: { withCredentials: false },
  },
  html5: { hls: { withCredentials: false } },
  sources: [{
   type: 'rtmp/flv',
   src: '', // 'rtmp://live.hkstv.hk.lxdns.com/live/hks2', // 香港卫视,可使用此地址测试
  }],
  autoplay: true,
  controls: true,
  width: '778',
  height: '638',
 };
<video-player :options="videoOptions" v-if="videoOptions.sources[0].src !== ''"></video-player>

5. 心跳检测

在show_monitor.vue创建时,新建定时器,每隔3秒向后台发送一个包含当前监控设备id的请求,告知后台此设备监控被调用播放。show_monitor.vue销毁时,清空定时器,后台将停止传输视频数据。

private intervalFunc: any;

private created() {
 // ****
 this.intervalFunc = setInterval(() => {
  EquipmentService.monitor_continue_test(this.eqmtid);
 }, 3000);
}

private destroyed() {
 clearInterval(this.intervalFunc);
}

注: 可以再电脑安装VLC media player下载 , 播放获取到的rtmp路径,已检测数据获取是否成功

总结

以上所述是小编给大家介绍的vue + typescript + video.js实现 流媒体播放 视频监控功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Firefox下提示illegal character并出现乱码的原因
Mar 25 Javascript
AlertBox 弹出层信息提示框效果实现步骤
Oct 11 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
js 调用百度地图api并在地图上进行打点添加标注
May 13 Javascript
JavaScript操作cookie类实例
Mar 31 Javascript
原生js配合cookie制作保存路径的拖拽
Dec 29 Javascript
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
React复制到剪贴板的示例代码
Aug 22 Javascript
JavaScript 异步调用
Oct 25 Javascript
JavaScript中立即执行函数实例详解
Nov 04 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
mustache.js实现首页元件动态渲染的示例代码
Dec 28 Javascript
详解django模板与vue.js冲突问题
Jul 07 #Javascript
django中使用vue.js的要点总结
Jul 07 #Javascript
Vue使用lodop实现打印小结
Jul 06 #Javascript
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 #Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
Jul 06 #Javascript
vue router总结 $router和$route及router与 router与route区别
Jul 05 #Javascript
基于vue实现圆形菜单栏组件
Jul 05 #Javascript
You might like
PHP字符串处理的10个简单方法
2010/06/30 PHP
php的curl封装类用法实例
2014/11/07 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
js的闭包的一个示例说明
2008/11/18 Javascript
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
layui 设置table 行的高度方法
2018/08/17 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
vue-cli 关闭热更新操作
2020/09/18 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python类定义的讲解
2013/11/01 Python
python BeautifulSoup使用方法详解
2013/11/21 Python
Python中使用dom模块生成XML文件示例
2015/04/05 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
解析Python3中的Import
2019/10/13 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
KTV的创业计划书范文
2014/02/02 职场文书
个人委托书范本
2014/04/02 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书