1.1.3 • Published 4 months ago

vue3-eggplant v1.1.3

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

Version Downloads GitHub stars GitHub issues GitHub forks GitHub last commit license

NPM

必須使用 vue@3.2.2及以上版本

Vue3-video-play

適用於 Vue3 的 hls.js 播放器元件 | 並且支援 MP4/WebM/Ogg 格式 配置強大,UI 還算好看

功能一覽

  1. 支援快捷鍵操作
  2. 支援倍速播放設定
  3. 支援映象畫面設定
  4. 支援關燈模式設定
  5. 支援畫中畫模式播放
  6. 支援全屏/網頁全屏播放
  7. 支援從固定時間開始播放
  8. 支援移動端,移動端會自動呼叫自帶視訊播放器
  9. 支援 hls 視訊流播放,支援直播
  10. hls 播放支援清晰度切換

主頁示例

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

近期更新 v1.3.1-beta.3 🎉

  • 新增: 支援 hls 視訊流播放
  • 新增: 新增畫質切換,需視訊流支援
  • 新增: 新增畫音視切換,需視訊流支援
  • 新增: props 引數增加currentTime屬性,可跳轉到固定時間播放
  • 新增: props 引數增加type屬性,視訊格式
  • 新增: props 引數增加controlBtns屬性,自定義控制器按鈕顯示
  • 新增: 右鍵選單功能,右鍵選單包涵,視訊濾鏡調節、快捷鍵說明、複製當前視訊網址
  • 新增: mirrorChange loopChange lightOffChange 事件
  • 新增: 增加空格快捷鍵 播放/暫停 的操作
  • 優化: 如果音量為 0 關閉靜音按鈕 音量設定為 5

使用指南

安裝

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");

元件內使用

// require style
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 秒開始播放

:::demo 通過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屬性 來控制是否顯示控制器 :::demo 通過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>

:::

事件示例

:::demo 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>

:::

Hls m3u8 視訊/直播

:::demo 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>

:::

Props

vue3-video-play 支援 video 原生所有 Attributes 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跳轉到固定播放時間(s)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全屏按鈕

Events

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播放速率改變event
durationchange資源長度改變event
volumechange音量改變event

快捷鍵說明

支援快捷鍵操作 | 鍵名 | 說明 | | ---------- | ----------------------------- | | Space | 暫停/播放 | | 方向右鍵 → | 單次快進 10s,長按 5 倍速播放 | | 方向左鍵 ← | 快退 10s | | 方向上鍵 ↑ | 音量+10% | | 方向下鍵 ↓ | 音量-10% | | Esc | 退出全屏/退出網頁全屏 | | F | 全屏/退出全屏 |

Author

xdlumia

點個 start

vue3-video-play