更新记录

1.0.0(2026-01-23)

  • docs: 标注支持 uni-app(App 端 Android/iOS)
  • feat: 对齐 expo-video-thumbnails:提供 getThumbnailAsync(sourceFilename, { time, quality, headers })
  • feat: 返回 { uri, width, height },输出格式固定为 jpg
  • fix(android): 处理部分机型 getFrameAtTime 已自动旋转导致的缩略图方向错误(避免 double-rotation)

平台兼容性

uni-app(4.87)

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

uni-app x(4.87)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - - -

hans-video-thumb

在 uni-app / uni-app x 中生成视频缩略图(App 端 Android/iOS)。

适用范围

  • 支持:uni-app / uni-app xApp 端:Android / iOS
  • 不支持:H5、各类小程序、Harmony(当前为 stub)

安装

将本插件放入项目 uni_modules/hans-video-thumb/,然后在页面中直接引入使用。

快速开始(uni-app / uni-app x)

import { getThumbnailAsync } from '@/uni_modules/hans-video-thumb'

const options = { // 可选
    time: 0,
    quality: 1.0,
    headers: {
        // Authorization: 'Bearer ...'
    },
}

getThumbnailAsync('file:///xxx.mp4', options).then((res) => {
    console.log(res.uri, res.width, res.height)
})

API

getThumbnailAsync(sourceFilename, options?)

  • 作用:从视频生成一张 jpg 缩略图
  • 返回:Promise<{ uri: string, width: number, height: number }>

参数

  • sourceFilename:视频来源(本地或远程)
    • 本地:文件路径(例如 uni.chooseVideotempFilePath)、file://...content://...(Android)
    • 远程:http://... / https://...

options

  • time:截帧时间(毫秒),默认 0
  • quality0..1,默认 1.0
  • headers:远程 URL 请求头(可选,建议 value 使用字符串)

返回值

  • uri:输出图片 URI(缓存/临时目录,jpg)
  • width / height:图片尺寸(像素)

错误处理(Promise reject)

失败时会 reject 一个带 errCode/errMsg 的对象(具体类型以 utssdk/interface.uts 为准)。

import { getThumbnailAsync } from '@/uni_modules/hans-video-thumb'

getThumbnailAsync('https://example.com/a.mp4', { time: 1000, quality: 0.9 })
    .then((res) => {
        console.log('ok', res.uri)
    })
    .catch((err) => {
        console.log('fail', err?.errCode, err?.errMsg ?? err)
    })

错误码(errCode)

  • 9012101:参数错误(sourceFilename/time/quality/headers)
  • 9012102:下载失败(远程 URL)
  • 9012103:解码失败(取帧失败/视频不可用)
  • 9012104:写文件失败(无法输出图片)
  • 9012199:未知错误 / 平台不支持

平台支持

  • Android:√
  • iOS:√
  • Harmony:-

备注(使用注意)

  • 输出格式固定为 jpg
  • 输出图片位于缓存/临时目录,可能被系统清理;如需长期保存请自行拷贝到业务目录。
  • time=0 可能取到黑帧/首帧不理想时,可尝试 time=200~1000(取关键帧依赖视频编码)。
  • Android:远程 http(s) 会先下载到缓存目录临时文件再取帧;iOS 使用 AVURLAsset 直接读取(行为以系统为准)。
  • Android:会自动处理视频旋转信息;若遇到封面方向异常,请优先确认原视频本身方向与机型差异(部分设备可能已在取帧时自动旋转)。
  • uni.chooseVideo 返回类似 _doc/... 的路径,请先用 plus.io.convertLocalFileSystemURL 转为真实本地路径或 file://... 再传入(仅 App 端可用)。

隐私、权限声明

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

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

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

暂无用户评论。