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'
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="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()- 获取播放器实例
注意事项
- 录制功能:录制功能需要浏览器支持 MediaRecorder API
- 视频格式:支持 HLS、FLV、MP4 等常见格式
- 依赖要求:需要安装
@liveqing/liveplayer-v3和video.js - 浏览器兼容性:建议使用现代浏览器以获得最佳体验
开发
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建库
npm run build:lib
# 类型检查
npm run type-check许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!