FQVideoPlayer 视频播放器
介绍
- 支持横竖屏布局与组件级全屏(不打断播放进度)
- 长按倍速播放以及长按下拉倍速锁定 (长按触发倍速播放,长按下拉触发倍速锁)
- 沉浸式模式(双指捏合进入/退出,隐藏控件/进度条/弹幕)
- 自定义控制条(按钮显隐、插槽扩展、自定义渲染)
- 进度条预览(分片小窗、时间范围提示、实时时间)
- 拖拽小窗分片预览能力 (拖拽进度条能实时显示当前视频的切片)
- 上次观看记录(10%~90% 区间节流存储,自动恢复并气泡提示)
- 弹幕 能力(顶/中/底三栏,密度/速度可配,随倍速/播放状态同步,可动态发送)
- 震动反馈(捏合/长按倍速进入与恢复的轻/重震)
安装与引入
import FQVideoPlayer from '@fq/fq-weapp-ui-pro';
按需样式(按需引入时需要):
import '@fq/fq-weapp-ui-pro/dist/styles/components/video-player.scss';
基础用法
<FQVideoPlayer
loop
autoplay
src="https://ifengqun.oss-cn-shenzhen.aliyuncs.com/uploadtest/0-lxtzk7yj0jm.mp4"
cover="https://applet.ifengqun.com/fq-mall/snapshot/115_first_frame.jpg"
/>
横屏模式 + 组件级全屏
<FQVideoPlayer
src="..."
cover="..."
// 横屏时才展示全屏按钮;进入全屏时 UI 方向切到 Portrait(不影响播放)
controls={{ buttons: { fullScreen: true } }}
/>
进度条预览(小窗 + 时间范围)
<FQVideoPlayer
src="..."
slider={{
size: 'middle',
showTimeRange: true,
enablePreview: true,
previewOptions: [
{ snapshot: 'https://.../output_01.jpg', time: 0 },
{ snapshot: 'https://.../output_02.jpg', time: 14 },
// ...
],
}}
/>
自定义控制条(扩展按钮 / 完全自定义)
const extraButtons = [
<View key="collect" onClick={() => console.log('collect')}>收藏</View>,
<View key="download" onClick={() => console.log('download')}>下载</View>,
];
<FQVideoPlayer
src="..."
controls={{
buttons: { menu: true, play: true, mute: true, rate: true, fullScreen: true },
extraButtons,
// 或者完全自定义:renderButtons: (ctx) => (<View>...</View>)
}}
/>
上次观看(自动记录/恢复)
<FQVideoPlayer
src="..."
lastWatch={{
throttleMs: 4000,
minResumeSec: 5,
ignoreTailSec: 2,
startPercent: 10,
endPercent: 90,
}}
/>
手势与沉浸式
<FQVideoPlayer
src="..."
enablePinchGesture // 默认 true:外捏进入沉浸式,内捏退出
// immersive 也可受控传入(true/false)
/>
弹幕(静态 + 动态发送)
const ref = useRef<any>(null);
<FQVideoPlayer
ref={ref}
src="..."
barrage={{
enabled: true,
density: { top: 2, middle: 3, bottom: 2 },
data: [
{ id: 1, text: 'Hello!', time: 1, zone: 'top' },
{ id: 2, text: '支持倍速/暂停同步', time: 3, zone: 'middle' },
],
}}
/>
// 运行时发送
ref.current?.sendBarrage?.({ text: '这是一条新弹幕' });