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和firefox中img对象区别的困惑
Dec 27 Javascript
SWFObject 2.1以上版本语法介绍
Jul 10 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
js倒计时小实例(多次定时)
Dec 08 Javascript
JavaScript实现动态增删表格的方法
Mar 09 Javascript
深究AngularJS之ui-router详解
Jun 13 Javascript
浅谈js的解析顺序 作用域 严格模式
Oct 23 Javascript
vue中添加与删除关键字搜索功能
Oct 12 Javascript
vue实现div单选多选功能
Jul 16 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
javascript获取当前ip的代码
2009/05/10 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
关于tensorflow softmax函数用法解析
2020/06/30 Python
小班重阳节活动方案
2014/02/08 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
老人祝寿主持词
2014/03/28 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
大学班级学风建设方案
2014/05/01 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
幼儿园感谢信
2015/01/21 职场文书
2015年党建工作总结
2015/03/30 职场文书
使用Navicat Premium工具将oracle数据库迁移到MySQL
2021/05/27 Oracle
git stash(储藏)的用法总结
2022/06/25 Servers