JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q48465F
  • License MIT

Vue 3 wrapper for @liveqing/liveplayer-v3 with recording and playback control features

Package Exports

  • liveplayer-wrapper
  • liveplayer-wrapper/dist/index.cjs
  • liveplayer-wrapper/dist/index.mjs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (liveplayer-wrapper) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

LivePlayerWrapper

一个基于 Vue 3 的视频播放器包装组件,集成了 @liveqing/liveplayer-v3,提供视频播放、录制、播放控制等功能。

功能特性

  • 🎥 视频播放:支持多种视频格式播放
  • 📹 视频录制:支持录制视频流并下载
  • 🎮 播放控制:播放/暂停、音量控制、全屏等
  • 🎛️ 自定义按钮:录制、开关等自定义功能按钮
  • 📱 响应式设计:支持多种宽高比设置
  • 🎨 可定制样式:支持水印、自定义按钮等
  • 🔧 TypeScript 支持:完整的类型定义

安装

npm install liveplayer-wrapper

就是这么简单!所有依赖都已包含在主包中。

使用方法

1. 全局注册

import { createApp } from 'vue'
import LivePlayerWrapper from 'liveplayer-wrapper'

const app = createApp(App)
app.use(LivePlayerWrapper)
app.mount('#app')

2. 局部引入

<template>
  <div>
    <LivePlayerWrapper
      :video-url="videoUrl"
      :video-title="videoTitle"
      :autoplay="true"
      :controls="true"
      @ready="onPlayerReady"
      @recordingStart="onRecordingStart"
      @recordingStop="onRecordingStop"
      @recordingError="onRecordingError"
    />
  </div>
</template>

<script setup lang="ts">
import { LivePlayerWrapper } from 'liveplayer-wrapper'
import { ref } from 'vue'

const videoUrl = ref('https://example.com/video.m3u8')
const videoTitle = ref('示例视频')

const onPlayerReady = (player: any) => {
  console.log('播放器已就绪', player)
}

const onRecordingStart = () => {
  console.log('录制开始')
}

const onRecordingStop = () => {
  console.log('录制停止')
}

const onRecordingError = (error: string) => {
  console.error('录制错误:', error)
}
</script>

3. 使用 ref 调用组件方法

<template>
  <div>
    <LivePlayerWrapper
      ref="playerRef"
      :video-url="videoUrl"
    />
    <button @click="startRecording">开始录制</button>
    <button @click="stopRecording">停止录制</button>
    <button @click="togglePlayback">切换播放</button>
  </div>
</template>

<script setup lang="ts">
import { LivePlayerWrapper } from 'liveplayer-wrapper'
import { ref } from 'vue'

const playerRef = ref()
const videoUrl = ref('https://example.com/video.m3u8')

const startRecording = () => {
  playerRef.value?.startRecording()
}

const stopRecording = () => {
  playerRef.value?.stopRecording()
}

const togglePlayback = () => {
  playerRef.value?.togglePlayback()
}
</script>

Props 属性

属性名 类型 默认值 说明
videoUrl string '' 视频流地址
videoTitle string '' 视频右上角显示的标题
poster string '' 视频封面图片
alt string '无信号' 无视频时的替代文字
autoplay boolean true 自动播放
controls boolean true 显示控制栏
loop boolean false 循环播放
live boolean true 是否为直播流(隐藏进度条)
muted boolean true 静音
aspect string '16:9' 宽高比(fullscreen为全屏)
fluent boolean true 流畅模式
stretch boolean false 是否拉伸
hideBigPlayButton boolean false 隐藏大播放按钮
waterMark string '' 水印文字
timeout number 20 m3u8加载超时(秒)
showCustomButton boolean true 显示自定义按钮
hideSnapshotButton boolean false 隐藏快照按钮
hideFullscreenButton boolean false 隐藏全屏按钮
hideFluent boolean false 隐藏流畅按钮
hideStretch boolean true 隐藏拉伸按钮
resolution string '' 清晰度配置(yh,fhd,hd,sd)
resolutiondefault string 'hd' 默认清晰度
playbackRates number[] [0.5, 1, 2, 3] 倍速列表
playbackRate number 1 默认倍速
hasaudio boolean undefined 是否有音频(自动判断)
hasvideo boolean undefined 是否有视频(自动判断)
customButtons string '录制:vjs-icon-record,开关:vjs-icon-switch' 自定义工具栏按钮
autofocus boolean false 自动获取焦点
dblclickFullscreen boolean true 双击全屏
language string '' 语言(zh-CN/en)
digitalZoom boolean false 电子放大

Events 事件

事件名 参数 说明
message event m3u8加载失败
error error 播放器出错
ended - 播放结束
timeupdate time 进度更新 当前时间
pause time 暂停 当前时间
play time 播放 当前时间
fullscreen isFullscreen 全屏状态改变
snapOutside data 外部快照 base64数据
snapInside data 内部快照 base64数据
customButtons buttonName 自定义按钮点击
canplay duration 可播放 时长(秒)
volumechange {volume, muted} 音量改变
ready player 播放器就绪
recordingStart - 录制开始
recordingStop - 录制停止
recordingError error 录制错误

Methods 方法

播放控制

  • play() - 播放
  • pause() - 暂停
  • togglePlay() - 切换播放/暂停
  • paused() - 获取暂停状态

播放进度

  • getCurrentTime() - 获取当前播放时间
  • setCurrentTime(time) - 设置播放时间

截图功能

  • snap() - 截图

音量控制

  • getMuted() - 获取静音状态
  • setMuted(muted) - 设置静音
  • toggleMute() - 切换静音
  • getVolume() - 获取音量
  • setVolume(volume) - 设置音量

全屏控制

  • isFullscreen() - 获取全屏状态
  • requestFullscreen() - 请求全屏
  • exitFullscreen() - 退出全屏
  • toggleFullscreen() - 切换全屏

录制功能

  • startRecording() - 开始录制
  • stopRecording() - 停止录制
  • toggleRecording() - 切换录制
  • isRecording() - 获取录制状态
  • getRecordingTime() - 获取录制时长
  • forceStopRecording() - 强制停止录制
  • recoverFromRecordingError() - 从录制错误中恢复

播放开关功能

  • togglePlayback() - 切换播放开关
  • isPlaying() - 获取播放开关状态

其他功能

  • getDuration() - 获取视频时长
  • getPlayer() - 获取播放器实例

注意事项

  1. 录制功能:录制功能需要浏览器支持 MediaRecorder API
  2. 视频格式:支持 HLS、FLV、MP4 等常见格式
  3. 依赖要求:只需要安装 liveplayer-wrapper,所有依赖都已包含
  4. 浏览器兼容性:建议使用现代浏览器以获得最佳体验
  5. 样式支持:所有样式都已包含在主包中,无需额外引入

开发

# 安装依赖
npm install

# 开发模式
npm run dev

# 构建库
npm run build:lib

# 类型检查
npm run type-check

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!