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 相关文章推荐
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
jQuery中[attribute=value]选择器用法实例
Dec 31 Javascript
js随机生成字母数字组合的字符串 随机动画数字
Sep 02 Javascript
浅析javascript中的事件代理
Nov 06 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
js+canvas实现刮刮奖功能
Sep 13 Javascript
TypeScript 内置高级类型编程示例
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
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
JavaScript设计模式之单例模式简单实例教程
2018/07/02 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
vue接口请求加密实例
2020/08/11 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
Python中的探索性数据分析(功能式)
2017/12/22 Python
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
见习报告格式范文
2014/11/08 职场文书
新员工辞职信范文
2015/05/12 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书