更新记录
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 x的App端: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.chooseVideo的tempFilePath)、file://...、content://...(Android) - 远程:
http://.../https://...
- 本地:文件路径(例如
options
time:截帧时间(毫秒),默认0quality:0..1,默认1.0headers:远程 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 端可用)。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 225
赞赏 0
下载 13617442
赞赏 1851
赞赏
京公网安备:11010802035340号