vue3-video-play

vue3-video-play

功能丰富的Vue 3视频播放器组件

vue3-video-play是一个基于Vue 3的视频播放器组件。它支持hls流媒体和多种视频格式,具有快捷键控制、倍速播放、画面镜像等功能。该组件界面美观、配置灵活,可适配移动端,并支持清晰度切换和直播。对于开发者而言,这是一个功能完善、易于集成的视频播放解决方案。

vue3-video-play视频播放器Vue3组件Hls播放自定义配置Github开源项目
<!-- * @Author: web.王晓冬 * @Date: 2021-08-19 18:56:59 * @LastEditors: itab.link * @LastEditTime: 2023-11-09 15:44:51 * @Description: 文件内容 -->

版本 下载量 GitHub 星标 GitHub 问题 GitHub 分支 GitHub 最后提交 许可证

NPM

<span style="color:#cb3837"> 必须使用 vue@3.2.2及以上版本</span>

Vue3-video-play

适用于 Vue3 的 hls.js 播放器组件 | 同时支持 MP4/WebM/Ogg 格式 配置强大,界面美观

功能概览

  1. 支持快捷键操作
  2. 支持倍速播放设置
  3. 支持镜像画面设置
  4. 支持关灯模式设置
  5. 支持画中画模式播放
  6. 支持全屏/网页全屏播放
  7. 支持从指定时间开始播放
  8. 支持移动端,自动调用原生视频播放器
  9. 支持 hls 视频流播放,支持直播
  10. hls 播放支持清晰度切换

演示主页

https://codelife.cc/vue3-video-play/

最新更新 v1.3.3 🎉

  • 修复: 右键事件错误

使用指南

安装

npm 安装:

npm i vue3-video-play --save

yarn 安装:

yarn add vue3-video-play --save

开始使用

全局使用

import { createApp } from "vue"; import App from "./App.vue"; let app = createApp(App); import vue3videoPlay from "vue3-video-play"; // 引入组件 import "vue3-video-play/dist/style.css"; // 引入css app.use(vue3videoPlay); app.mount("#app");

组件内使用

// 引入样式 import "vue3-video-play/dist/style.css"; import { videoPlay } from "vue3-video-play"; export default { components: { videoPlay, }, };

基本示例

提供了丰富的配置功能 :::demo 自定义配置 例如自定义 poster。

<template> <div> <vue3VideoPlay v-bind="options" poster="https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg" /> </div> </template> <script setup lang="ts"> import { reactive } from "vue"; const options = reactive({ width: "800px", // 播放器宽度 height: "450px", // 播放器高度 color: "#409eff", // 主题色 title: "", // 视频名称 src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", // 视频源 muted: false, // 静音 webFullScreen: false, speedRate: ["0.75", "1.0", "1.25", "1.5", "2.0"], // 播放倍速 autoPlay: false, // 自动播放 loop: false, // 循环播放 mirror: false, // 镜像画面 ligthOff: false, // 关灯模式 volume: 0.3, // 默认音量大小 control: true, // 是否显示控制 controlBtns: [ "audioTrack", "quality", "speedRate", "volume", "setting", "pip", "pageFullScreen", "fullScreen", ], // 显示所有按钮, }); </script> <style scoped></style>

可以通过propsspeed开启或关闭进度条功能,并且通过currentTime属性控制从60秒开始播放

通过speed关闭进度条拖动功能。并且通过currentTime属性控制从60秒开始播放

<template> <div> <vue3VideoPlay v-bind="options" poster="https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg" /> </div> </template> <script setup lang="ts"> import { reactive } from "vue"; const options = reactive({ width: "500px", // 播放器高度 height: "260px", // 播放器高度 color: "#409eff", // 主题色 currentTime: 60, speed: false, // 关闭进度条拖动 title: "", // 视频名称 src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", // 视频源 }); </script> <style scoped></style>

还可以通过propscontrol属性来控制是否显示控制器

通过control来控制是否显示控制器

<template> <div> <vue3VideoPlay v-bind="options" poster="https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg" /> </div> </template> <script setup lang="ts"> import { reactive } from "vue"; const options = reactive({ width: "500px", // 播放器高度 height: "260px", // 播放器高度 color: "#409eff", // 主题色 control: false, // 是否显示控制器 title: "", // 视频名称 src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", // 视频源 }); </script> <style scoped></style>

vue3-video-play支持原生video所有事件。

<template> <div> <vue3VideoPlay width="800px" title="钢铁侠" :src="options.src" :poster="options.poster" @play="onPlay" @pause="onPause" @timeupdate="onTimeupdate" @canplay="onCanplay" /> </div> </template> <script setup lang="ts"> import { reactive } from "vue"; const options = reactive({ src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4", // 视频源 poster: "", // 封面 }); const onPlay = (ev) => { console.log("播放"); }; const onPause = (ev) => { console.log(ev, "暂停"); }; const onTimeupdate = (ev) => { console.log(ev, "时间更新"); }; const onCanplay = (ev) => { console.log(ev, "可以播放"); }; </script> <style scoped></style>

vue3-video-play支持m3u8(hls)播放

<template> <div> <vue3VideoPlay width="800px" title="冰河世纪" :src="options.src" :type="options.type" :autoPlay="false" /> </div> </template> <script setup lang="ts"> import { reactive } from "vue"; const options = reactive({ src: "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8", //视频源 type: "m3u8", //视频类型 }); </script> <style scoped></style>

:::

属性

vue3-video-play 支持所有原生 video 标签属性 video 原生属性,使用方式与 props 属性相同

名称说明类型可选值默认值
width播放器宽度string-800px
height播放器高度string-450px
color播放器主色调string-#409eff
src视频资源string--
title视频名称string--
type视频类型string-video/mp4
poster视频封面string-视频第一帧
webFullScreen网页全屏boolean-false
speed是否支持快进快退boolean-true
currentTime跳转到固定播放时间(秒)number-0
playsinlineiOS点击屏幕是否全屏boolean-false
muted静音boolean-false
speedRate倍速配置array-["2.0", "1.0", "1.5", "1.25", "0.75", "0.5"]
autoPlay自动播放boolean-false,为 true 时会自动静音
loop循环播放boolean-false
mirror镜像画面boolean-false
ligthOff关灯模式boolean-false
volume默认音量number0-10.3
control是否显示控制器boolean-true
controlBtns控制器显示的按钮array['audioTrack', 'quality', 'speedRate', 'volume', 'setting', 'pip', 'pageFullScreen', 'fullScreen']['audioTrack', 'quality', 'speedRate', 'volume', 'setting', 'pip', 'pageFullScreen', 'fullScreen']
preload预加载stringmeta/auto/noneauto

props属性 controlBtns 按钮说明

名称说明
audioTrack音轨切换按钮
quality视频质量切换按钮
speedRate速率切换按钮
volume音量
setting设置
pip画中画按钮
pageFullScreen网页全屏按钮
fullScreen全屏按钮

事件

vue3-video-play 支持所有原生 video 事件 video 默认事件

事件名称说明回调
mirrorChange镜像翻转事件val
loopChange循环播放开关事件val
lightOffChange关灯模式事件val
loadstart客户端开始请求数据event
progress客户端正在请求数据event
error请求数据时遇到错误event
stalled网速失速event
play开始播放时触发event
pause暂停时触发event
loadedmetadata成功获取资源长度event
loadeddata缓冲中event
waiting等待数据,并非错误event
playing开始回放event
canplay暂停状态下可以播放event
canplaythrough可以持续播放event
timeupdate更新播放时间event
ended播放结束event
ratechange播放速率变化事件
durationchange资源时长变化事件
volumechange音量变化事件

快捷键说明

支持快捷键操作

键名说明
空格键暂停/播放
右方向键 →单次快进 10 秒,长按 5 倍速播放
左方向键 ←快退 10 秒
上方向键 ↑音量增加 10%
下方向键 ↓音量减少 10%
Esc 键退出全屏/退出网页全屏
F 键全屏/退出全屏

作者

xdlumia

点个星标

vue3-video-play

编辑推荐精选

商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多