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

编辑推荐精选

博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

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

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

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

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

imini AI

imini AI

像人一样思考的AI智能体

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

下拉加载更多