前言

在新的项目中用到了大量的视频,由此也学习了一款vue的前端视频播放插件,接下来分享一下

vue-video-player安装

npm install vue-video-player --save
npm install --save video.js

文档

<template><!-- video-player-box ==> video-player vjs-custom-skin -->// video-player标签的class必须设置成“video-player vjs-custom-skin”,你引入的样式才能起作用<video-player  class="video-player vjs-custom-skin"ref="videoPlayer":options="playerOptions":playsinline="true"></video-player>
</template><script>
// 需要添加的配置
// videojs -- videoPlayer 核心
// vue-video-player 是根据 videojs 进行了封装 所以必须导入video.js (video.js 已经被vue-video-player安装不需要重新安装 直接导入即可)
import videojs from 'video.js'
import 'vue-video-player/src/custom-theme.css';
// 根据官方文档配置发现没有效果
import 'video.js/dist/video-js.css'
import { videoPlayer } from 'vue-video-player'
export default {components: {videoPlayer},data() {return {playerOptions: {// videojs optionsmuted: true,language: 'en',playbackRates: [0.7, 1.0, 1.5, 2.0],sources: [{type: "video/mp4",src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"}],poster: "/static/images/author.jpg",}}}
}...
</script>
 <img class="st_log" :src="item.media_url+'?vframe/jpg/offset/1/w/120/h/90'" alt />

vue-video-player 安装完 可以在node_modules中查看 部分视频播放插件

vue-video-player 组件 根据自己的需求进行开发即可

<template><div class="video"><video-player  class="video-player vjs-custom-skin"ref="videoPlayer":playsinline="playsinline"customEventName="customstatechangedeventname":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>
import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css';import videojs from 'video.js'
import { videoPlayer } from 'vue-video-player'export default {name: 'videoComponents',components: {videoPlayer},props: {// 当前的options 配置selfOptions: Object,// 播放速度playbackRates: {type: Array,default: () => [0.7, 1.0, 1.5, 2.0]},// 封面poster: {type: String,// https://cz-video-photo.oss-cn-beijing.aliyuncs.com/20191108/aca6e6915d369e07db055127d3e3738c00001.jpgdefault: ''},// 视频无法播放时提示信息notSupportedMessage: {type: String,default: '此视频暂无法播放,请稍后再试!!!'},// 视频显示比例aspectRatio: {type: String,default: '16:9'},// 语言设置language: {type: String,default: 'zh-CN'},// 设置controBar controlBar: {type: Object,default: ()=> ({timeDivider: true, // 当前时间和持续时间的分隔符durationDisplay: true, // 时长显示remainingTimeDisplay: false, // 剩下时间currentTimeDisplay: true, // 当前时间volumeControl: true, // 声音控制键playToggle: true, // 暂停和播放键progressControl: true, // 进度条fullscreenToggle: true // 全屏按钮})},// 数据源sources: {type: Array,default: () => ([{type: "video/mp4",src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"}])},// 是否循环播放loop: Boolean,// 是否在不全屏状态下外放声音muted: Boolean,// 是否浏览器 准备好后自动播放autoplay: Boolean,// 是否直播isLive: Boolean,},data() {return {options: {playbackRates: this.playbackRates, // 播放速度autoplay: this.autoplay, // 如果true,浏览器准备好时开始回放。muted: this.muted, // 默认情况下将会消除任何音频。--- 不全屏播放的时候是否禁止声音外放loop: this.loop, // 导致视频一结束就重新开始。preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)language: this.language,aspectRatio: this.aspectRatio, // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。sources: this.sources,poster: this.poster, // 你的封面地址width: document.documentElement.clientWidth, // 播放器宽度notSupportedMessage: this.notSupportedMessage, // 允许覆盖Video.js无法播放媒体源时显示的默认信息。controlBar: this.controlBar,hls: true,},// 记录当前播放时间nowPlayer: null,}},computed: {// 当前播放对象实例videoObj() {return this.$refs.videoPlayer.player},// true表示默认情况下应尝试内联播放-false表示我们应使用浏览器的默认播放模式playsinline(){var ua = navigator.userAgent.toLocaleLowerCase();if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {return true}else{return true             }},// vue-video-playerplayerOptions() {if(this.isLive) {return {height: 300,sources: [{withCredentials: false,type: "application/x-mpegURL",src: "https://logos-channel.scaleengine.net/logos-channel/live/biblescreen-ad-free/playlist.m3u8"}],controlBar: {timeDivider: false,durationDisplay: false},flash: { hls: { withCredentials: false }},html5: { hls: { withCredentials: false }},controls: true}}else {if(this.selfOptions) {Object.assign(this.options, this.selfOptions)return this.options}else {return this.options;}}},},watch: {},mounted() {  },methods: {// 播放回调onPlayerPlay(player) {// 播放if(this.nowPlayer) {player.currentTime(this.nowPlayer)}},// 暂停回调onPlayerPause(player) {},// 视频播完回调onPlayerEnded(player) {this.nowPlayer = null;},// DOM元素上的readyState更改导致播放停止onPlayerWaiting(player) {},// 已开始播放回调onPlayerPlaying(player) {},// 当播放器在当前播放位置下载数据时触发onPlayerLoadeddata(player) {  // 直播每次播放都会调用--录播只是刚开始调用一次 },// 当前播放位置发生变化时触发。onPlayerTimeupdate(player) {// 获取到当前的播放时间this.nowPlayer = player.currentTime();},//媒体的readyState为HAVE_FUTURE_DATA或更高onPlayerCanplay(player) {},//媒体的readyState为HAVE_ENOUGH_DATA或更高。这意味着可以在不缓冲的情况下播放整个媒体文件。onPlayerCanplaythrough(player) {},//播放状态改变回调playerStateChanged(playerCurrentState) {},//将侦听器绑定到组件的就绪状态。与事件监听器的不同之处在于,如果ready事件已经发生,它将立即触发该函数。。playerReadied(player) {if(this.isLive) {var hls = player.tech({ IWillNotUseThisInPlugins: true }).hlsplayer.tech_.hls.xhr.beforeRequest = function(options) {// console.log(options)return options}}}},
}
</script><!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
/* 播放按钮换成圆形 */
/deep/.vjs-custom-skin > .video-js .vjs-big-play-button {height: 2em;width: 2em;line-height: 2em;border-radius: 1em;
}
</style>

取视频第一帧做背景图

//'?vframe/jpg/offset/1/w/120/h/90'<img class="st_log" :src="item.media_url+'?vframe/jpg/offset/1/w/120/h/90'" alt />

要20岁了,加油

Vue视频插件(vue-video-player)相关推荐

  1. Vue的video-player的视频无法加载出来,vue视频插件;显示叉号; The media could not be Loaded,

    1.安装vue视频插件 解:百度一下,有很多教程,我这里不多说 2.问题:视频资源资源显示"X"号 1.首先你写好的要用视频的那块 <!-- HTML部分 -->< ...

  2. html5播放器 迅雷,搜狗浏览器HTML5视频播放器插件(HTML5.Video.Player)

    一款搜狗浏览器的HTML5视频播放器插件,安装后可以使用HTML5方式播放优酷.土豆.爱奇艺.搜狐视频.迅雷离线.腾讯视频.56视频等网站的视频,避免使用adobe flash player插件,降低 ...

  3. WordPress插件 Fox Video Player 独家HTML5广告视频播放器插件[更新至v3.0.1]

    Fox Video Player 是一款独家HTML5广告视频播放器WordPress插件,方便把你的网站转换成一个多媒体站点,尤其独特的视频插入广告像优酷这样的在视频播放前播放广告,当然你也可以设置 ...

  4. linux 视频 插件,avpro video 插件-Avpro Video(Unity视频播放插件)下载 v1.039官方免费版--pc6下载站...

    AvproVideo是一款由强大团队出品的可以在Unity上安装使用的万能多平台视频播放插件AvproVideo支持WindowslinuxiosmacAndroid等多平台万能播放.. 相关软件软件 ...

  5. Unity播放带Alpha通道的视频【WebM+Video Player】(替代播放GIF方案)

    在Unity中播放GIF或者动态效果,可以通过Video Player播放带透明通道的WebM视频来实现. 制作带Alpha的MOV视频 制作带Alpha通道的MOV视频有多重方式,如AE.PR.PS ...

  6. Vue视频插件vue-video-player的使用

    目录 1,前言 2,介绍 3,安装和使用 效果图 后记 1,前言 有些项目中,或者是视频网站,都需要视频播放功能.我们可以用H5的video标签实现播放,但是原生的样子视频播放器不太好看,功能也需要自 ...

  7. 安装vue浏览器插件-Vue.js devtools

    一.进入github仓库:https://github.com/vuejs/devtools 可以下载zip包,也可以clone仓库.这里我下载的压缩包. 二.解压后,在终端进入文件夹路径. 解压后推 ...

  8. 专业音视频播放器:Elmedia Video Player Pro mac中文版

    为大家推荐一款超级好用的苹果专用视频播放器,Elmedia Video Player Pro for Mac几乎支持所有的音视频格式,具备修改播放.流式传输.画中画.流传输视频到其他设备.彩色主题.观 ...

  9. Unity流水账2:视频播放之Video Player

    VideoPlayer组件   使用VideoPlayer组件可以将视频文件附加到GameObjecs,并在运行时,在GameObject的Texture上播放它们.   默认情况下,Video Pl ...

最新文章

  1. 程序员硬核“年终大扫除”,清理了数据库 70GB 空间
  2. AI计算量每年增长10倍,摩尔定律也顶不住 | OpenAI最新报告
  3. 《HBase企业应用开发实战》—— 2.5 停止HBase集群
  4. ajax返回值怎么取出来_螺丝断孔里了,怎么取出来?
  5. java排错_java排错之CPU高
  6. 线路速度之实战***
  7. python实现tkinter可视化一
  8. HTML常用标签总结 [建议收藏]
  9. PDF Expert for mac(最好用的pdf编辑工具)
  10. 中国涂料工业协会:世界十大涂料品牌2011年度报告
  11. navicat哪个版本支持mysql8_Navicat连接MySQL8.0亲测有效
  12. 奥鹏福师计算机应用基础在线作业答案,福师11秋《计算机应用基础》在线作业一、二...
  13. Linux下如何创建和取消软连接
  14. 谷歌学术403异常处理
  15. HTML核心(1)- 第一个网页
  16. 【调剂】关于安徽工程大学2022年硕士研究生招生相关问题答考生问
  17. 站长导航系统源码-修复版
  18. Http1.0 , SPDY , Http2.0
  19. Jperf2.0下载及使用方法介绍
  20. 一条sql是怎么执行的

热门文章

  1. Vim 快捷键速查表
  2. git使用pull request
  3. 使用VSCode连接远程服务器
  4. Linux内存分配--实现FF、BF、WF分配算法
  5. 为什么说 A11 Bionic 芯片才是整个苹果发布会真正的亮点?
  6. python中divmod的意思是_python 中的divmod数字处理函数浅析
  7. 更改计算机磁盘,win10X系统磁盘盘符如何更改 简单快速修改电脑磁盘盘符
  8. VMware、linux虚拟机设置网络实现虚拟机与主机网络互通
  9. ESP32连接蓝牙小票打印机
  10. 浅谈ESP8266、ESP32和STM32的区别