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 Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
Prototype Array对象 学习
Jul 19 Javascript
jquery checkbox全选、取消全选实现代码
Mar 05 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
May 26 jQuery
JS查找数组中重复元素的方法详解
Jun 14 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
vue data引入本地图片的两种方式小结
Nov 13 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
Nov 13 Javascript
JavaScript实现点击切换功能
Jan 27 Javascript
关于JavaScript轮播图的实现
Nov 20 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
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue组件与复用详解
2018/04/08 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
高中军训感想800字
2014/02/23 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2015年工会工作总结
2015/03/30 职场文书
社区党支部承诺书
2015/04/29 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python