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 相关文章推荐
用js实现手把手教你月入万刀(转贴)
Nov 07 Javascript
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
jQuery改变form表单的action,并进行提交的实现代码
May 25 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
javascript自定义右键菜单插件
Dec 16 Javascript
element-ui tree结构实现增删改自定义功能代码
Aug 31 Javascript
js实现头像上传并且可预览提交
Dec 25 Javascript
插件导致ECharts被全量引入的坑示例解析
Sep 23 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
php实现json编码的方法
2015/07/30 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
JS实现图片切换效果
2018/11/17 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
详细介绍Python函数中的默认参数
2015/03/30 Python
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python中异常报错处理方法汇总
2016/11/20 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
基于python 微信小程序之获取已存在模板消息列表
2019/08/05 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
Keras之自定义损失(loss)函数用法说明
2020/06/10 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
python drf各类组件的用法和作用
2021/01/12 Python
区域销售经理岗位职责
2013/12/10 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
mysql 排序失效
2022/05/20 MySQL
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS