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 相关文章推荐
JavaScript随机排序(随即出牌)
Sep 17 Javascript
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
Mar 04 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
详解js静态检查工具eslint配置文件
Nov 23 Javascript
vue实现点击追加选中样式效果
Nov 01 Javascript
浅析JavaScript 函数柯里化
Sep 08 Javascript
微信小程序实现首页弹出广告
Dec 03 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
DedeCms模板安装/制作概述
2007/03/11 PHP
php minixml详解
2008/07/19 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python代码调试的几种方法总结
2015/04/15 Python
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
你们项目是如何进行变更控制的
2015/08/26 面试题
自我评价范文分享
2014/01/04 职场文书
面试后的英文感谢信
2014/02/01 职场文书
党支部换届选举方案
2014/05/08 职场文书
单位绩效考核方案
2014/05/11 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
交通事故被告答辩状
2015/05/22 职场文书
八月迷情观后感
2015/06/11 职场文书
金榜题名主持词
2015/07/02 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle