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网页关键字高亮代码
Jul 30 Javascript
解析js如何获取当前url中的参数值并复制给input
Jun 23 Javascript
一个简单的全屏图片上下打开显示网页效果示例
Jul 08 Javascript
浅谈javascript构造函数与实例化对象
Jun 22 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
Jul 04 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
简谈创建React Component的几种方式
Jun 15 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
Vue实现Header渐隐渐现效果的实例代码
Nov 05 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
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python使用PyGame绘制图像并保存为图片文件的方法
2015/04/24 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
怎样写好自荐信和推荐信
2013/12/26 职场文书
护理专业自荐书
2014/06/04 职场文书
医院党员公开承诺书
2014/08/30 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python