vue视频播放插件vue-video-player的具体使用方法


Posted in Javascript onNovember 08, 2019

安装

npm install vue-video-player --save

引入

可以全局引入插件,也可以在需要用到该插件的组件内单独引入(二选一)

【1】全局引用, 在main.js里面导入并引用

import VideoPlayer from 'vue-video-player'
import 'vue-video-player/src/custom-theme.css'
import 'video.js/dist/video-js.css'
 
Vue.use(VideoPlayer)

【2】组件内引用import { videoPlayer } from 'vue-video-player'

import 'video.js/dist/video-js.css'

export default {
 components: {
 videoPlayer
 }
}

使用

【1】html部分 

<template>
 <div class='demo'>
  <video-player class="video-player vjs-custom-skin" 
   ref="videoPlayer" 
   :playsinline="true" 
   :options="playerOptions">
  </video-player>
 </div>
 </template>

【2】js部分   

export default {
  data() {
  return {
   playerOptions: {
   playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度
   autoplay: false, // 如果为true,浏览器准备好时开始回放。
   muted: false, // 默认情况下将会消除任何音频。
   loop: false, // 是否视频一结束就重新开始。
   preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
   language: 'zh-CN',
   aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
   fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
   sources: [{
    type: "video/mp4", // 类型
    src: '' // url地址
   }],
   poster: '', // 封面地址
   notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
   controlBar: {
    timeDivider: true, // 当前时间和持续时间的分隔符
    durationDisplay: true, // 显示持续时间
    remainingTimeDisplay: false, // 是否显示剩余时间功能
    fullscreenToggle: true // 是否显示全屏按钮
   }
   }
  }
  }
 }

【3】效果图​

vue视频播放插件vue-video-player的具体使用方法

视频格式

type:"video/webm" // 可以播放,用ogg也可打开
type:"video/ogg" // 可以播放,用webm也可打开
type:"video/3gp" // 可以播放
type:"video/mp4" // 可以播放
type:"video/avi" // 打不开
type:"video/flv" // 打不开
type:"video/mkv" // 打不开
type:"video/mov" // 打不开
type:"video/mpg" // 打不开
type:"video/swf" // 打不开
type:"video/ts"  // 打不开
type:"video/wmv" // 打不开
type:"video/vob" // 没转化
type:"video/mxf" // 转化出错
type: "video/rm"  // 转化出错

控制播放和暂停

this.$refs.videoPlayer.player.play() // 播放
this.$refs.videoPlayer.player.pause() // 暂停
this.$refs.videoPlayer.player.src(src) // 重置进度条

回调函数

<template>
 <div class='demo'>
  <video-player class="video-player vjs-custom-skin" 
  ref="videoPlayer" 
  :playsinline="true" 
  :options="playerOptions"
  @play="onPlayerPlay($event)" 
  @pause="onPlayerPause($event)"
  @ended="onPlayerEnded($event)"
  @waiting="onPlayerWaiting($event)"
  @playing="onPlayerPlaying($event)"
  @loadeddata="onPlayerLoadeddata($event)"
  @timeupdate="onPlayerTimeupdate($event)"
  @canplay="onPlayerCanplay($event)"
  @canplaythrough="onPlayerCanplaythrough($event)"
  @statechanged="playerStateChanged($event)"
  @ready="playerReadied"
  >
  </video-player>
 </div>
 </template>

 <script>
 export default {
  methods: {
  // 播放回调
  onPlayerPlay(player) {
   console.log('player play!', player)
  },

  // 暂停回调
  onPlayerPause(player) {
   console.log('player pause!', player)
  },

  // 视频播完回调
  onPlayerEnded($event) {
   console.log(player)
  },

  // DOM元素上的readyState更改导致播放停止
  onPlayerWaiting($event) {
   console.log(player)
  },

  // 已开始播放回调
  onPlayerPlaying($event) {
   console.log(player)
  },

  // 当播放器在当前播放位置下载数据时触发
  onPlayerLoadeddata($event) {
   console.log(player)
  },

  // 当前播放位置发生变化时触发。
  onPlayerTimeupdate($event) {
   console.log(player)
  },

  //媒体的readyState为HAVE_FUTURE_DATA或更高
  onPlayerCanplay(player) {
   // console.log('player Canplay!', player)
  },

  //媒体的readyState为HAVE_ENOUGH_DATA或更高。这意味着可以在不缓冲的情况下播放整个媒体文件。
  onPlayerCanplaythrough(player) {
   // console.log('player Canplaythrough!', player)
  },

  //播放状态改变回调
  playerStateChanged(playerCurrentState) {
   console.log('player current update state', playerCurrentState)
  },

  //将侦听器绑定到组件的就绪状态。与事件监听器的不同之处在于,如果ready事件已经发生,它将立即触发该函数。。
  playerReadied(player) {
   console.log('example player 1 readied', player);
  }
  
  },
 }
 </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript的IE和Firefox兼容性汇编(zz)
Feb 02 Javascript
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
Jun 19 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
javascipt匹配单行和多行注释的正则表达式
Nov 20 Javascript
Node.js的Express框架使用上手指南
Mar 12 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
微信小程序 弹窗自定义实例代码
Mar 08 Javascript
express 项目分层实践详解
Dec 10 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
详解Vscode中使用Eslint终极配置大全
Nov 08 #Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 #Javascript
Vuex中实现数据状态查询与更改
Nov 08 #Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 #Javascript
vue.js的简单自动求和计算实例
Nov 08 #Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 #Javascript
Vue搭建后台系统需要注意的问题
Nov 08 #Javascript
You might like
php+mysql分页代码详解
2008/03/27 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
python getopt 参数处理小示例
2009/06/09 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
python如何统计代码运行的时长
2019/07/24 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python使用建议与技巧分享(一)
2020/08/17 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
软件测试企业面试试卷
2016/07/13 面试题
2014年银行员工年终自我评价
2014/09/19 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers