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 相关文章推荐
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
jQuery实现简单的文件上传进度条效果
Mar 26 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
深究AngularJS中ng-drag、ng-drop的用法
Jun 12 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
jquery实现聊天机器人
Feb 08 jQuery
详解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
杏林同学录(六)
2006/10/09 PHP
一个改进的UBB类
2006/10/09 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
JSON相关知识汇总
2015/07/03 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
Python 探针的实现原理
2016/04/23 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
服装行业创业计划书范文
2014/02/05 职场文书
小学庆六一活动方案
2014/02/28 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
2016年中秋节慰问信
2015/12/01 职场文书