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 日期转换成中文格式的函数
Jul 07 Javascript
关于js获取radio和select的属性并控制的代码
May 12 Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 Javascript
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
Mar 03 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
Mar 28 Javascript
jQuery实现表格颜色交替显示的方法
Mar 09 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
vue项目中引入noVNC远程桌面的方法
Mar 05 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 Javascript
JS实现可切换图片的幻灯切换效果示例
May 24 Javascript
Vue 刷新当前路由的实现代码
Sep 26 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php函数与传递参数实例分析
2014/11/15 PHP
PHP类的封装与继承详解
2015/09/29 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
php图片裁剪函数
2018/10/31 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
初识Node.js
2014/09/03 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
详解Python3中的Sequence type的使用
2015/08/01 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
对python:print打印时加u的含义详解
2018/12/15 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
C#的几个面试问题
2016/05/22 面试题
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
编辑求职信样本
2013/12/16 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
2014年政工师工作总结
2014/12/18 职场文书
尼克胡哲观后感
2015/06/08 职场文书
小学科学课教学反思
2016/02/23 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL