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 相关文章推荐
出现“不能执行已释放的Script代码”错误的原因及解决办法
Aug 29 Javascript
FF IE浏览器修改标签透明度的方法
Jan 27 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
Mar 26 Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
May 13 jQuery
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
layui清空,重置表单数据的实例
Sep 12 Javascript
Layui选项卡制作历史浏览记录的方法
Sep 28 Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 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数据采集的详解
2013/06/02 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jquery遍历数组与筛选数组的方法
2013/11/05 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
django富文本编辑器的实现示例
2019/04/10 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
python实现无边框进度条的实例代码
2020/12/30 Python
经理职责范文
2013/11/08 职场文书
大学生活自我评价
2014/04/09 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
运动会方阵口号
2014/06/07 职场文书
2015年推普周活动总结
2015/03/27 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
工程进度款催款函
2015/06/24 职场文书
初三毕业感言
2015/07/31 职场文书