所有分类
  • 所有分类
  • Html5资源
  • React资源
  • Vue资源
  • Php资源
  • ‌小程序资源
  • Python资源

Vue3视频播放器神器Plyr.js:29.2k星标,BBC、SpaceX都在用的现代化播放器

前言:还在为网站视频播放器发愁吗?还在忍受原生 HTML5 播放器的丑陋界面吗?今天给大家介绍一个让无数开发者为之疯狂的视频播放器神器——Plyr.js!它不仅颜值爆表,功能更是强大到令人惊叹!

什么是 Plyr.js?

Plyr.js 是由澳大利亚设计师 Sam Potts 开发的一款轻量级、可访问、高度可定制的 HTML5 媒体播放器。它支持 HTML5 视频、音频、YouTube 和 Vimeo,是目前最受欢迎的 Web 视频播放器之一。

GitHub 数据说话

  • 29.2k+ 星标
  • 3.1k+ Fork
  • 数百万次 npm 下载
  • 被 BBC、Peugeot、Toyota、SpaceX 等知名企业使用

🎯 核心特性

  • ** 颜值担当**:现代化设计,支持完全自定义样式
  • ** 响应式设计**:完美适配各种屏幕尺寸
  • ** 无障碍支持**:完整的 VTT 字幕和屏幕阅读器支持
  • ** 轻量级**:压缩后仅 10KB,性能卓越
  • ** 高度可定制**:使用正确的 HTML 元素,语义化标记
  • ** 多平台支持**:HTML5、YouTube、Vimeo 一网打尽
  • ** 流媒体支持**:支持 HLS.js、Shaka 和 dash.js
  • ** 快捷键支持**:完整的键盘操作支持
  • ** 全屏模式**:原生全屏 + 降级支持
  • ** 事件统一**:所有格式的事件都标准化处理

为什么选择 Plyr.js?

1. 颜值即正义

Plyr.js 的设计理念就是”美”。它摒弃了传统播放器的丑陋界面,采用现代化的扁平设计风格,支持完全自定义的 CSS 样式。

2. 性能卓越

  • 加载速度极快
  • 使用原生 HTML5 元素,性能优化到位
  • 支持懒加载和渐进式增强

3. 开发友好

  • 零依赖,纯 JavaScript 实现
  • 完整的 TypeScript 支持
  • 丰富的 API 和事件系统
  • 详细的文档和示例

4. 企业级应用

被众多知名企业采用,包括:

  • BBC – 英国广播公司
  • SpaceX – 太空探索技术公司
  • Toyota – 丰田汽车
  • Peugeot – 标致汽车

Vue3 集成实战

安装依赖

# 安装 Plyr.js
npm install plyr

# 或者使用 yarn
yarn add plyr

基础使用

<template>
  <div class="video-container">
    <video
      ref="videoPlayer"
      class="plyr-video"
      poster="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg"
      playsinline
      controls
    >
      <source
        src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4"
        type="video/mp4"
        size="576"
      />
      <source
        src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4"
        type="video/mp4"
        size="720"
      />
      <source
        src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4"
        type="video/mp4"
        size="1080"
      />

      <!-- Caption files -->
      <track
        kind="captions"
        label="English"
        srclang="en"
        src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt"
        default
      />
    </video>
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from "vue";
import Plyr from "plyr";
import "plyr/dist/plyr.css";

const videoPlayer = ref(null);
let player = null;

onMounted(() => {
  // 初始化 Plyr 播放器
  player = new Plyr(videoPlayer.value, {
    controls: [
      "play-large", // 大播放按钮
      "restart", // 重新开始
      "rewind", // 快退
      "play", // 播放/暂停
      "fast-forward", // 快进
      "progress", // 进度条
      "current-time", // 当前时间
      "duration", // 总时长
      "mute", // 静音
      "volume", // 音量控制
      "captions", // 字幕
      "settings", // 设置
      "pip", // 画中画
      "airplay", // AirPlay
      "fullscreen", // 全屏
    ],
    settings: ["captions", "quality", "speed", "loop"],
    speed: { selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] },
    quality: {
      default: 720,
      options: [1080, 720, 480, 360],
    },
  });

  // 监听播放器事件
  player.on("ready", () => {
    console.log("播放器已准备就绪");
  });

  player.on("play", () => {
    console.log("开始播放");
  });

  player.on("pause", () => {
    console.log("暂停播放");
  });

  player.on("ended", () => {
    console.log("播放结束");
  });
});

onUnmounted(() => {
  // 销毁播放器实例
  if (player) {
    player.destroy();
  }
});
</script>

<style>
.video-container {
  max-width: 800px;
  margin: 0 auto;
}

.plyr-video {
  width: 100%;
  height: auto;
}
</style>

常用的配置选项

播放控制

属性类型默认值描述
autoplayBooleanfalse自动播放
mutedBooleanfalse静音播放
volumeNumber1音量 (0-1)
clickToPlayBooleantrue点击播放/暂停
hideControlsBooleantrue鼠标离开时隐藏控制栏
resetOnEndBooleanfalse播放结束后重置到开始位置
disableContextMenuBooleantrue禁用右键菜单

键盘快捷键

属性类型默认值描述
keyboardObject{ focused: true, global: false }键盘快捷键配置
keyboard.focusedBooleantrue播放器获得焦点时启用快捷键
keyboard.globalBooleanfalse全局快捷键(无需焦点)

进度条配置

属性类型默认值描述
seekTimeNumber10快进/快退时间(秒)
speedObject{ selected: 1, options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2] }播放速度配置
speed.selectedNumber1默认播放速度
speed.optionsArray[0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]可选播放速度

画质配置

属性类型默认值描述
qualityObject{ default: 720, options: [1080, 720, 480, 360] }画质配置
quality.defaultNumber720默认画质
quality.optionsArray[1080, 720, 480, 360]可选画质列表

字幕配置

属性类型默认值描述
captionsObject{ active: false, language: 'auto', update: false }字幕配置
captions.activeBooleanfalse默认显示字幕
captions.languageString'auto'默认字幕语言
captions.updateBooleanfalse是否更新字幕

全屏配置

属性类型默认值描述
fullscreenObject{ enabled: true, fallback: true, iosNative: false }全屏配置
fullscreen.enabledBooleantrue启用全屏功能
fullscreen.fallbackBooleantrue使用全屏 API 降级方案
fullscreen.iosNativeBooleanfalseiOS 原生全屏

画中画配置

属性类型默认值描述
ratioString'16:9'视频宽高比
invertTimeBooleantrue倒计时显示
clickToPlayBooleantrue点击播放/暂停
hideControlsBooleantrue自动隐藏控制栏
resetOnEndBooleanfalse播放结束后重置
disableContextMenuBooleantrue禁用右键菜单

存储配置

属性类型默认值描述
storageObject{ enabled: true, key: 'plyr' }本地存储配置
storage.enabledBooleantrue启用本地存储
storage.keyString'plyr'存储键名

工具提示配置

属性类型默认值描述
tooltipsObject{ controls: false, seek: true }工具提示配置
tooltips.controlsBooleanfalse控制按钮工具提示
tooltips.seekBooleantrue进度条工具提示

广告配置

属性类型默认值描述
adsObject{ enabled: false, publisherId: '', tagUrl: '' }广告配置
ads.enabledBooleanfalse启用广告
ads.publisherIdString''广告发布商 ID
ads.tagUrlString''广告标签 URL

标记配置

属性类型默认值描述
markersObject{ enabled: true, key: 'plyr' }标记配置
markers.enabledBooleantrue启用标记
markers.pointsArray{time: 30,label: "精彩片断1",}标题点

🎨 自定义样式

Plyr.js 支持完全自定义样式,你可以轻松打造属于自己的播放器外观:

player.on("ready", () => {
  console.log("播放器已准备就绪");
  // 播放器准备就绪后应用红色主题
  applyRedTheme();
});

// 应用红色主题的函数
const applyRedTheme = () => {
  const plyrContainer = document.querySelector(".plyr");
  if (plyrContainer) {
    plyrContainer.classList.add("red-theme");
  }
};
/* 大红色主题样式 - 使用 !important 确保优先级 */
.plyr.red-theme {
  --plyr-color-main: #dc2626 !important;
  --plyr-menu-background: #1f2937 !important;
  --plyr-menu-color: #ffffff !important;
  --plyr-menu-border-color: #dc2626 !important;
  --plyr-control-background: rgba(220, 38, 38, 0.8) !important;
  --plyr-control-color: #ffffff !important;
  --plyr-progress-loading-background: rgba(220, 38, 38, 0.3) !important;
  --plyr-progress-buffered-background: rgba(220, 38, 38, 0.4) !important;
  --plyr-progress-played-background: #dc2626 !important;
  --plyr-range-track-background: rgba(220, 38, 38, 0.3) !important;
  --plyr-range-thumb-background: #dc2626 !important;
  --plyr-range-thumb-border: #ffffff !important;
  --plyr-tooltip-background: #dc2626 !important;
  --plyr-tooltip-color: #ffffff !important;
  --plyr-captions-background: rgba(220, 38, 38, 0.8) !important;
  --plyr-captions-color: #ffffff !important;
}

总结

Plyr.js 不仅是一个视频播放器,更是提升用户体验的利器。无论你是个人开发者还是企业团队,Plyr.js 都能为你的项目带来专业级的视频播放体验。

还在等什么?立即体验 Plyr.js 的魅力吧! 🎬✨

原文链接:https://code.ifrontend.net/archives/1352,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?