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 相关文章推荐
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
JavaScript:Div层拖动效果实例代码
Aug 06 Javascript
原生js和jQuery写的网页选项卡特效对比
Apr 27 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
JavaScript代码性能优化总结篇
May 15 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
树结构之JavaScript
Jan 24 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
微信小程序实现工作时间段选择
Feb 15 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 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实现的生成静态HTML速度快类库
2007/03/31 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
PHP 快速排序算法详解
2014/11/10 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
javascript multibox 全选
2009/03/22 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
layui使用label标签的方法
2019/09/14 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
印尼网上商店:Alfacart.com
2019/03/11 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
灵泰克Java笔试题
2016/01/09 面试题
专科应届生求职信
2013/11/24 职场文书
项目资料员岗位职责
2013/12/10 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
2014年管理工作总结
2014/11/22 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python