视频播放器vue3-video-play的安装与使用

Vue3-video-play组件的安装与配置指南

官方 github 链接:GitHub - xdlumia/vue3-video-play: 适用于 Vue3 的 hls.js 播放器组件,配置丰富,界面还算好看

官方文档地址:Vue3VideoPlay


本文使用了 vue3-ts 创建项目,在安装配置 vue3-video-play 播放器组件的时候可能会遇到问题,如果你是 js 项目可以根据情况自行跳过报错解决。

安装

npm安装

npm i vue3-video-play --save

main.ts中引入(只展示了新增的代码)

import vue3videoPlay from "vue3-video-play";
import "vue3-video-play/dist/style.css";

createApp(App).use(vue3videoPlay);

由于项目使用了 ts,这里会因为类型报错。

在 src 下新建 shims-vue3-video-play.d.ts,报错消失。

declare module "vue3-video-play" {
  const videoPlay: any;
  export default videoPlay;
}

这时候会遇到 eslint 报错。eslint 错误是因为你在 shims-vue3-video-play.d.ts 文件中使用了 any 类型,而 ESLint 的规则 @typescript-eslint/no-explicit-any 禁止使用 any 类型,鼓励你使用更具体的类型来提高类型安全。

直接修改这个规则

{
  "rules": {
    "@typescript-eslint/no-explicit-any": "off"
  }
}

使用

这边直接使用了官方给出的示例,标题和视频地址都是官网的。

<template>
  <div class="bg-red-300 w-2/3 h-auto relative flex-col mx-auto">
    <!-- 顶部标题开始 -->
    <titleCard>视频</titleCard>
    <!-- 顶部标题结束 -->

    <!-- 主体开始 -->
    <div class="mt-2">
      <div>视频ID: {{ videoId }}</div>
      <div>
        <vue3VideoPlay
          class="vue3VideoPlay"
          v-bind="options"
          poster="https://cdn.jsdelivr.net/gh/xdlumia/files/video-play/ironMan.jpg"
        />
      </div>
    </div>
    <!-- 主体结束 -->
  </div>
</template>

<script setup>
import { useRoute } from "vue-router";
import titleCard from "./components/title.vue";
import { reactive } from "vue";

const route = useRoute();
const videoId = route.params.id;

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>

此时直接运行,会报错。

这个错误提示 Failed to resolve entry for package "vue3-video-play" 通常表明你安装的 vue3-video-play 包在其 package.json 中指定的入口文件存在问题,导致构建工具(如 WebpackVite)无法正确解析该包。

对 vite.config.ts 进行修改,手动设置 vue3-video-play 的路径为 UMD 版本。

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { resolve } from "path";
import UnoCSS from "unocss/vite";

// https://vite.dev/config/
export default defineConfig({
  plugins: [vue(), UnoCSS()],
  server: {
    host: "0.0.0.0",
    port: 8080,
    hmr: true,
    open: true,
  },
  resolve: {
    alias: [
      {
        find: "@",
        replacement: resolve(__dirname, "src"),
      },
      {
        // 手动设置 vue3-video-play 的路径为 UMD 版本
        find: "vue3-video-play",
        replacement: resolve(
          __dirname,
          "node_modules/vue3-video-play/dist/index.umd.js"
        ),
      },
    ],
  },
});

运行后报错,报错改变,该报错说明在 main.ts 中引入有误。

对 main.ts 进行修改

import "../node_modules/vue3-video-Play/dist/style.css";

显示正常。

可以在 options 中修改一些播放器属性。这边修改了播放器的宽高。效果如下。

  width: "100%", //播放器宽度
  height: "auto", //播放器高度

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值