vue3-video-play
是一个适用于 Vue 3 的视频播放插件,它提供了丰富的视频播放功能,如播放、暂停、快进、音量控制等,能帮助开发者快速集成视频播放功能到 Vue 3 项目中。
在开始使用 vue3-video-play
之前,需要先将其安装到你的 Vue 3 项目中。打开终端,进入项目根目录,执行以下命令:
npm install vue3-video-play --save
或者使用 yarn 进行安装:
yarn add vue3-video-play
在需要使用视频播放功能的组件中,局部引入 vue3-video-play
组件。以下是一个简单的示例:
如果你希望在整个项目中都能使用 vue3-video-play
组件,可以在项目的入口文件(通常是 main.js
或 main.ts
)中进行全局引入。
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import Vue3VideoPlay from 'vue3-video-play';
import 'vue3-video-play/dist/style.css';
const app = createApp(App);
app.use(Vue3VideoPlay);
app.mount('#app');
全局引入后,你可以在任何组件中直接使用
组件,无需再次引入。
vue3-video-play
时,需要引入其 CSS 文件,否则组件的样式可能无法正常显示。如果是局部引入组件,需要在组件中单独引入样式;如果是全局引入,在入口文件中引入即可。package.json
中 "module": "./dist/index.es.js"
改为 "module": "./dist/index.mjs"
问题解析探索在本地开发环境中,将 package.json
文件中的 "module": "./dist/index.es.js"
改为 "module": "./dist/index.mjs"
可能会导致一些问题,如模块无法正确导入等。
.es.js
通常是指使用 ES 模块语法编写的 JavaScript 文件,而 .mjs
是 ES 模块的官方文件扩展名。虽然两者都可以表示 ES 模块,但不同的工具和环境对它们的处理方式可能不同。.mjs
文件的支持存在差异。例如,旧版本的 Node.js 可能需要额外的配置才能正确处理 .mjs
文件。.mjs
文件的 Node.js 版本。从 Node.js 13.2.0 开始,官方正式支持 .mjs
文件。.mjs
文件。例如,在 Vite 中,可以通过配置 resolve.extensions
来支持 .mjs
文件:// vite.config.js
import { defineConfig } from 'vite';
export default defineConfig({
resolve: {
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx']
}
});
.es.js
:如果问题仍然存在,可以考虑将 package.json
中的 "module"
字段改回原来的 .es.js
文件路径。通过以上步骤,你应该能够在 Vue 3 项目中成功使用 vue3-video-play
插件,并解决 package.json
中文件扩展名更改可能带来的问题。
src: "https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/IronMan.mp4"
指定视频源为MP4格式视频,可顺利播放。src
属性来播放。src: "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8"
和type: "m3u8"
配置,即可播放HLS格式的视频或直播流。event
,包含与播放事件相关的信息,如视频的当前播放状态、播放时间等。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@play="onPlay"
/>
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("播放", ev);
};
script>
event
,提供视频暂停时的相关信息。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@pause="onPause"
/>
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 onPause = (ev) => {
console.log("暂停", ev);
};
script>
event
,包含当前播放时间等信息。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@timeupdate="onTimeupdate"
/>
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 onTimeupdate = (ev) => {
console.log("时间更新", ev.target.currentTime);
};
script>
event
,提供视频当前的可播放状态等信息。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@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 onCanplay = (ev) => {
console.log("可以播放", ev);
};
script>
val
,为boolean
类型,true
表示开启镜像,false
表示关闭镜像。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@mirrorChange="onMirrorChange"
/>
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 onMirrorChange = (val) => {
console.log("镜像翻转状态改变", val);
};
script>
val
,为boolean
类型,true
表示开启循环播放,false
表示关闭循环播放。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@loopChange="onLoopChange"
/>
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 onLoopChange = (val) => {
console.log("循环播放状态改变", val);
};
script>
val
,为boolean
类型,true
表示开启关灯模式,false
表示关闭关灯模式。<template>
<div>
<vue3VideoPlay
width="800px"
title="钢铁侠"
:src="options.src"
:poster="options.poster"
@lightOffChange="onLightOffChange"
/>
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 onLightOffChange = (val) => {
console.log("关灯模式状态改变", val);
};
script>