liveplayer-wrapper
v1.7.1
Published
Vue 3 wrapper for @liveqing/liveplayer-v3 with recording and playback control features
Maintainers
Readme
LivePlayer Wrapper
一个基于 Vue 3 的视频播放器包装组件,集成了 @liveqing/liveplayer-v3,提供视频播放、录制、播放控制等功能。
功能特性
- 🎥 支持多种视频格式(HLS、FLV、MP4等)
- 📹 视频录制功能(支持最长5分钟录制)
- 🎮 播放控制(播放/暂停、音量、全屏等)
- 🔄 播放开关功能(可关闭/恢复视频播放)
- 📸 截图功能
- 🎛️ 自定义工具栏按钮
- 📱 响应式设计
- 🎨 丰富的自定义选项
安装
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"
:live="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 videoTitle = '示例视频'
const onPlayerReady = (player) => {
console.log('播放器已就绪', player)
}
const onRecordingStart = () => {
console.log('录制开始')
}
const onRecordingStop = () => {
console.log('录制结束')
}
const onRecordingError = (error) => {
console.error('录制错误', error)
}
</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 | '' | 水印文字 |
按钮显示控制
| 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | showCustomButton | Boolean | true | 显示自定义按钮 | | hideSnapshotButton | Boolean | false | 隐藏快照按钮 | | hideFullscreenButton | Boolean | false | 隐藏全屏按钮 | | hideFluent | Boolean | false | 隐藏流畅按钮 | | hideStretch | Boolean | true | 隐藏拉伸按钮 |
HLS相关设置
| 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | resolution | String | '' | 清晰度配置(yh,fhd,hd,sd) | | resolutiondefault | String | 'hd' | 默认清晰度 | | playbackRates | Array | [0.5, 1, 2, 3] | 倍速列表 | | playbackRate | Number | 1 | 默认倍速 |
Events 事件
| 事件名 | 参数 | 说明 | |--------|------|------| | ready | player | 播放器就绪 | | message | {type, message} | m3u8加载失败 | | error | Error | 播放器出错 | | ended | - | 播放结束 | | timeupdate | time | 进度更新 | | pause | time | 暂停 | | play | time | 播放 | | fullscreen | isFullscreen | 全屏状态改变 | | snapOutside | data | 外部快照 | | snapInside | data | 内部快照 | | customButtons | buttonName | 自定义按钮点击 | | canplay | duration | 可播放 | | volumechange | volume, muted | 音量改变 | | recordingStart | - | 录制开始 | | recordingStop | - | 录制停止 | | recordingError | error | 录制错误 |
方法
通过 ref 可以调用以下方法:
播放控制
play()- 播放pause()- 暂停togglePlay()- 切换播放/暂停paused()- 获取暂停状态
录制功能
startRecording()- 开始录制stopRecording()- 停止录制toggleRecording()- 切换录制状态isRecording()- 获取录制状态getRecordingTime()- 获取录制时长forceStopRecording()- 强制停止录制
播放开关功能
togglePlayback()- 切换播放开关isPlaying()- 获取播放开关状态
其他功能
snap()- 截图getCurrentTime()- 获取当前时间setCurrentTime(time)- 设置当前时间getVolume()- 获取音量setVolume(volume)- 设置音量toggleMute()- 切换静音toggleFullscreen()- 切换全屏
示例
基本使用
<template>
<div class="video-container">
<LivePlayerWrapper
ref="playerRef"
:video-url="videoUrl"
:video-title="'直播视频'"
:autoplay="true"
:controls="true"
:live="true"
@ready="onReady"
@recordingStart="onRecordingStart"
@recordingStop="onRecordingStop"
/>
<div class="controls">
<button @click="startRecording">开始录制</button>
<button @click="stopRecording">停止录制</button>
<button @click="togglePlayback">切换播放</button>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { LivePlayerWrapper } from 'liveplayer-wrapper'
const playerRef = ref()
const videoUrl = 'https://example.com/live.m3u8'
const onReady = (player) => {
console.log('播放器就绪')
}
const startRecording = () => {
playerRef.value?.startRecording()
}
const stopRecording = () => {
playerRef.value?.stopRecording()
}
const togglePlayback = () => {
playerRef.value?.togglePlayback()
}
</script>高级配置
<template>
<LivePlayerWrapper
:video-url="videoUrl"
:video-title="'高清直播'"
:aspect="'16:9'"
:fluent="true"
:stretch="false"
:timeout="30"
:resolution="'fhd,hd,sd'"
:resolutiondefault="'hd'"
:playback-rates="[0.5, 1, 1.5, 2]"
:custom-buttons="'录制:vjs-icon-record,开关:vjs-icon-switch'"
:water-mark="'LivePlayer'"
@message="handleMessage"
@error="handleError"
/>
</template>注意事项
- 录制功能:录制功能需要浏览器支持 MediaRecorder API
- 视频格式:支持 HLS、FLV、MP4 等主流格式
- 跨域问题:如果视频源有跨域限制,需要配置相应的 CORS 策略
- 录制时长:单次录制最长支持 5 分钟
- 浏览器兼容性:建议使用现代浏览器以获得最佳体验
开发
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建库
npm run build:lib
# 类型检查
npm run type-check许可证
MIT License
