JSPM

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

Vue 3 wrapper for @liveqing/liveplayer-v3 with video recording and playback control features. Fixed VideoJS global variable issues.

Package Exports

  • liveplayer-wrapper
  • liveplayer-wrapper/dist/style.css

Readme

LivePlayerWrapper

Vue 3 视频播放器包装器,基于 @liveqing/liveplayer-v3video.js,提供视频播放和录制功能。

功能特性

  • ✅ 支持多种视频格式(HLS、FLV、MP4等)
  • ✅ 视频录制功能
  • ✅ 截图功能
  • ✅ 全屏控制
  • ✅ 音量控制
  • ✅ 播放控制
  • ✅ 自定义按钮
  • ✅ 响应式设计

安装

npm install liveplayer-wrapper

使用方法

1. 全局注册

import { createApp } from 'vue'
import LivePlayerWrapper from 'liveplayer-wrapper'
import 'liveplayer-wrapper/dist/style.css'

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

2. 局部使用

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

<script setup>
import { LivePlayerWrapper } from 'liveplayer-wrapper'
import 'liveplayer-wrapper/dist/style.css'

const videoUrl = 'https://example.com/video.m3u8'

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

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

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

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

3. 使用 ref 调用方法

<template>
  <div>
    <LivePlayerWrapper
      ref="playerRef"
      :video-url="videoUrl"
    />
    <button @click="startRecording">开始录制</button>
    <button @click="stopRecording">停止录制</button>
    <button @click="takeSnapshot">截图</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { LivePlayerWrapper } from 'liveplayer-wrapper'

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

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

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

const takeSnapshot = () => {
  playerRef.value?.snap()
}
</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" 宽高比
fluent Boolean true 流畅模式
stretch Boolean false 是否拉伸
timeout Number 20 m3u8加载超时(秒)
showCustomButton Boolean true 显示自定义按钮
customButtons String "录制:vjs-icon-record" 自定义按钮配置

Events 事件

事件名 参数 说明
ready player 播放器就绪
play time 播放事件
pause time 暂停事件
ended - 播放结束
error error 播放器错误
recordingStart - 录制开始
recordingStop - 录制停止
recordingError error 录制错误
customButtons buttonName 自定义按钮点击

Methods 方法

方法名 参数 返回值 说明
play - - 播放
pause - - 暂停
togglePlay - - 切换播放/暂停
startRecording - - 开始录制
stopRecording - - 停止录制
toggleRecording - - 切换录制状态
snap - - 截图
setVolume volume - 设置音量(0-1)
getVolume - Number 获取音量
setMuted muted - 设置静音
getMuted - Boolean 获取静音状态
toggleMute - - 切换静音
requestFullscreen - - 请求全屏
exitFullscreen - - 退出全屏
toggleFullscreen - - 切换全屏
isFullscreen - Boolean 是否全屏

录制功能说明

  1. 录制格式: 支持 WebM 格式,自动选择最佳编码器
  2. 录制时长: 最大录制时间为 5 分钟
  3. 文件保存: 录制完成后自动下载到本地
  4. 文件名: 格式为 {视频标题}_{时间戳}.mp4

注意事项

  1. 确保在使用组件前已正确安装 video.js 依赖
  2. 录制功能需要浏览器支持 MediaRecorder API
  3. 某些浏览器可能需要 HTTPS 环境才能使用录制功能
  4. 建议在生产环境中使用 HTTPS 协议

浏览器兼容性

  • Chrome 47+
  • Firefox 25+
  • Safari 11+
  • Edge 79+

许可证

MIT License