更新记录

1.0.0(2026-06-14) 下载此版本

jz-video-flow 更新日志

v1.0.0 (2026-06-14)

新特性

  • 初始版本发布
    • 抖音风格短视频滑动组件
    • 支持上下滑动切换视频
    • 三槽位渲染机制(prev/current/next)
    • HLS 流媒体支持(H5 平台集成 hls.js)
    • 进度条控制(拖拽跳转、缓冲进度显示)
    • 交互事件(单击、双击、长按、触顶下拉刷新)
    • 自动连播(播放完毕自动切换下一条)
    • 多端兼容(H5/微信小程序/支付宝小程序/App-Vue/App-Nvue)

组件

  • jz-video-flow.vue — H5 / 小程序 主组件
  • jz-video-flow.nvue — App-Nvue 主组件
  • jz-video-player.vue — H5 / 小程序 视频播放器
  • jz-video-player.nvue — App-Nvue 视频播放器
  • jz-progress-bar.vue — H5 / 小程序 进度条
  • jz-progress-bar.nvue — App-Nvue 进度条

核心模块

  • video-pool.js — 三槽位视频池调度器
  • swiper-controller.js — 滑动状态机
  • utils.js — 工具函数(throttle、formatTime、clamp 等)

暴露方法

  • play() — 播放当前视频
  • pause() — 暂停当前视频
  • seek(time) — 跳转到指定时间
  • setCurrent(index) — 切换到指定索引
  • switchEpisode(list, index) — 切换剧集
  • setPlaybackRate(rate) — 设置播放速率
  • pageShow() / pageHide() — 页面生命周期控制

事件

  • change / loadmore / refresh — 切换与加载事件
  • click / dblclick / longTap — 交互事件
  • play / pause / ended / waiting / error — 播放事件
  • timeupdate / loadedmetadata — 进度事件
  • fullscreenchange / changing / changeed — 控制事件

Props

  • list / current / width / height — 基础配置
  • duration / criticalVal / distance / auto — 切换行为配置
  • muted / objectFit / progress / showFullScreen — 播放配置
  • showLoading / errorMessage / upperTipMessage — UI 配置

插槽

  • default — 视频覆盖层(视频信息、交互按钮等)
  • video — 自定义视频播放器
  • progressBar — 自定义进度条

    jz-video-flow 更新日志

v1.0.0 (2026-06-14)

新特性

  • 初始版本发布
    • 抖音风格短视频滑动组件
    • 支持上下滑动切换视频
    • 三槽位渲染机制(prev/current/next)
    • HLS 流媒体支持(H5 平台集成 hls.js)
    • 进度条控制(拖拽跳转、缓冲进度显示)
    • 交互事件(单击、双击、长按、触顶下拉刷新)
    • 自动连播(播放完毕自动切换下一条)
    • 多端兼容(H5/微信小程序/支付宝小程序/App-Vue/App-Nvue)

组件

  • jz-video-flow.vue — H5 / 小程序 主组件
  • jz-video-flow.nvue — App-Nvue 主组件
  • jz-video-player.vue — H5 / 小程序 视频播放器
  • jz-video-player.nvue — App-Nvue 视频播放器
  • jz-progress-bar.vue — H5 / 小程序 进度条
  • jz-progress-bar.nvue — App-Nvue 进度条

核心模块

  • video-pool.js — 三槽位视频池调度器
  • swiper-controller.js — 滑动状态机
  • utils.js — 工具函数(throttle、formatTime、clamp 等)

暴露方法

  • play() — 播放当前视频
  • pause() — 暂停当前视频
  • seek(time) — 跳转到指定时间
  • setCurrent(index) — 切换到指定索引
  • switchEpisode(list, index) — 切换剧集
  • setPlaybackRate(rate) — 设置播放速率
  • pageShow() / pageHide() — 页面生命周期控制

事件

  • change / loadmore / refresh — 切换与加载事件
  • click / dblclick / longTap — 交互事件
  • play / pause / ended / waiting / error — 播放事件
  • timeupdate / loadedmetadata — 进度事件
  • fullscreenchange / changing / changeed — 控制事件

Props

  • list / current / width / height — 基础配置
  • duration / criticalVal / distance / auto — 切换行为配置
  • muted / objectFit / progress / showFullScreen — 播放配置
  • showLoading / errorMessage / upperTipMessage — UI 配置

插槽

  • default — 视频覆盖层(视频信息、交互按钮等)
  • video — 自定义视频播放器
  • progressBar — 自定义进度条

平台兼容性

uni-app(4.45)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

jz-video-flow

抖音风格短视频滑动组件,支持上下滑动切换、三槽位渲染、HLS流媒体、进度条控制、自动连播、多端兼容

version license uni_modules


核心特性

特性 说明
上下滑动切换 流畅的手势交互,边界阻尼效果
三槽位渲染 仅渲染 prev/current/next 三个视频,优化性能
HLS 流媒体 H5 平台自动集成 hls.js,支持 m3u8 格式
进度条控制 拖拽进度条跳转,实时显示缓冲进度
交互事件 单击、双击、长按、触顶下拉刷新
自动连播 视频播放完毕自动切换下一条
多端兼容 H5 / 微信小程序 / 支付小程序 / App-Vue / App-Nvue

快速开始

1. 安装

jz-video-flow 目录置于项目的 src/uni_modules/ 下。

2. 组件注册

全局注册(推荐)

// main.js / App.vue
import JzVideoFlow from '@/uni_modules/jz-video-flow'

// Vue 3
app.component('JzVideoFlow', JzVideoFlow)

页面内注册

<script setup>
import JzVideoFlow from '@/uni_modules/jz-video-flow'
</script>

3. 基础用法

<template>
  <JzVideoFlow
    ref="videoFlowRef"
    :list="videoList"
    :current="currentIndex"
    :width="windowWidth"
    :height="windowHeight"
    :muted="false"
    :auto="true"
    :progress="true"
    :upper-tip-message="下拉刷新"
    @change="onVideoChange"
    @loadmore="onLoadMore"
    @refresh="onRefresh"
    @click="onVideoClick"
    @dblclick=""
    @timeupdate=""
  >
    <!-- 默认插槽:覆盖层(视频信息、点赞按钮等) -->
    <template #default="{ video, index }">
      <view class="video-overlay">
        <text class="video-title">{{ video.title }}</text>
      </view>
    </template>
  </JzVideoFlow>
</template>

<script setup>
import { ref } from 'vue'

const videoList = ref([
  { src: 'https://example.com/video1.mp4', poster: '', title: '视频1' },
  { src: 'https://example.com/video2.m3u8', poster: '', title: '视频2' },
])
const currentIndex = ref(0)

function onVideoChange(ev) {
  currentIndex.value = ev.detail.current
}
function onLoadMore(ev) {
  // 加载更多视频
}
function onRefresh(ev) {
  // 刷新视频列表
}
</script>

Props

属性 类型 默认值 说明
list Array [] 视频列表,每项需包含 srcposter 等字段
current Number 0 当前播放索引(支持 v-model:current
width Number 375 / windowWidth 容器宽度(px)
height Number 667 / windowHeight 容器高度(px)
duration Number 200 切换动画时长(ms)
criticalVal Number 3 触发 loadmore 的剩余条数阈值
distance Number 0.13 / 0.08 触发翻页的滑动比例
auto Boolean false / true 播放完毕自动切换下一条
muted Boolean false 是否静音
objectFit String 'contain' 视频填充模式(contain / cover
progress Boolean true 是否显示进度条
showFullScreen Boolean true 是否显示全屏按钮
fullScreenText String '全屏观看' 全屏按钮文字
showLoading Boolean false 是否显示加载动画
errorMessage String '无法加载此视频' 视频加载失败提示
upperTipMessage String '' 触顶下拉提示文字

Events

事件 参数 说明
update:current index 当前索引变化(v-model)
change { detail: { item, current, direction } } 视频切换完成
loadmore { detail: { current, length, criticalVal } } 接近底部,触发加载更多
refresh { detail: { current } } 触顶下拉刷新
click { detail: { item, current, playing } } 单击视频区域
dblclick { detail: { item, current } } 双击视频区域
longTap { detail: { item, current } } 长按视频区域
play Event 视频开始播放
pause Event 视频暂停
ended Event 视频播放结束
waiting Event 视频等待缓冲
error Event 视频加载错误
timeupdate { currentTime, duration, buffered } 播放进度更新
loadedmetadata { duration } 视频元数据加载完成
fullscreenchange { detail: { fullScreen, current } } 全屏状态变化
changing { currentTime, duration } 进度条拖拽中
changeed { currentTime, duration } 进度条拖拽完成

Slots

插槽 参数 说明
default { video, index, styles } 视频覆盖层(视频信息、交互按钮等)
video { video, index } 自定义视频播放器(完全替换默认播放器)
progressBar { video, index, currentTime, duration } 自定义进度条

方法(通过 ref 调用)

方法 说明
play() 播放当前视频
pause() 暂停当前视频
seek(time) 跳转到指定时间(秒)
setCurrent(index) 切换到指定索引
switchEpisode(list, index) 切换剧集(新列表 + 起始索引)
setPlaybackRate(rate) 设置播放速率
pageShow() 页面显示时恢复播放
pageHide() 页面隐藏时暂停

目录结构

src/uni_modules/jz-video-flow/
├── package.json                    # 插件配置
├── readme.md                       # 说明文档
├── changelog.md                    # 更新日志
├── index.js                        # 主入口
├── components/                     # 组件目录
│   ├── jz-video-flow.vue           # H5 / 小程序 主组件
│   ├── jz-video-flow.nvue          # App-Nvue 主组件
│   ├── jz-video-player.vue         # 视频播放器(H5/小程序)
│   ├── jz-video-player.nvue        # 视频播放器(Nvue)
│   ├── jz-progress-bar.vue         # 进度条(H5/小程序)
│   └── jz-progress-bar.nvue        # 进度条(Nvue)
└── core/                           # 核心模块
    ├── video-pool.js               # 三槽位调度器
    ├── swiper-controller.js        # 滑动状态机
    └── utils.js                    # 工具函数

注意事项

HLS 支持

  • H5 平台自动集成 hls.js,支持 m3u8 格式
  • 小程序原生支持 HLS(微信/支付宝等)
  • App-Nvue 需确保视频格式兼容

自动播放限制

  • H5 平台受浏览器自动播放政策限制,首次需静音或用户交互
  • 建议初始设置 muted: true,用户点击后取消静音

nvue 特殊处理

  • nvue 使用 weex.requireModule('animation') 实现切换动画
  • nvue 不支持 transition CSS 属性,需用 animation 模块
  • nvue 进度条事件需阻止冒泡(@touchstart.stop

许可证

MIT License


相关文档

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。