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 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
Jquery 滑入滑出效果实现代码
Mar 27 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
Sep 26 Javascript
关于jQuery UI 使用心得及技巧
Oct 10 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
node.js中的fs.readSync方法使用说明
Dec 17 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
在微信小程序中渲染HTML内容的方法示例
Sep 28 Javascript
Vue批量图片显示时遇到的路径被解析问题
Mar 28 Javascript
vue实现自定义H5视频播放器的方法步骤
Jul 01 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 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使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
javascript instanceof 内部机制探析
2010/10/15 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
Python中encode()方法的使用简介
2015/05/18 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python+pygame实现坦克大战
2019/09/10 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python如何省略括号方法详解
2020/03/21 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
Java和Javasciprt的区别
2012/09/02 面试题
学前教育教师求职自荐信
2013/09/22 职场文书
上课迟到检讨书
2014/02/19 职场文书
会计专业求职信范文
2014/03/16 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
作文评语怎么写
2014/12/25 职场文书
英语感谢信范文
2015/01/20 职场文书
创业计划书之养殖业
2019/10/11 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android