更新记录
1.0.5(2026-08-04)
- 新增
getVideoStoryboard,可按起止时间一次生成带确定性帧坐标的视频时间轴预览整图或雪碧图。 - Android、iOS 和 Web 支持统一的居中采样、网格布局、
cover / contain适配、背景色、缓存复用、任务取消与进度回调。 - 默认生成 12 帧、4 列、160×90 单元格;帧数限制为 2-60,并按 App 1600 万像素、Web 800 万像素限制最终画布,避免大图内存风险。
- HarmonyOS、微信小程序和支付宝小程序继续返回明确不支持,不伪造时间轴预览成功。
- uni-app 示例新增手动入口和一键自检第 14 项,覆盖整图、行列、时间递增、坐标边界与缓存命中。
- App 原生实现已变化,升级后需要重新构建并安装对应平台自定义基座。
1.0.4(2026-07-31)
- HarmonyOS 新增视频路径文本归一化、空缓存统计和空缓存清理基础能力,并使用显式结果类兼容 ArkTS 名义类型。
- 能力矩阵继续明确真实视频信息、取帧、批量和智能封面尚未实现,不伪造媒体处理成功。
- Harmony 真机一键自检的路径与缓存基础项已通过;Harmony 原生 UTS 已变化,升级后需要重新构建并安装匹配的 Harmony HAP 或自定义基座。
1.0.2(2026-07-28)
- 新增任务 ID 与
cancelVideoThumbnailTask,支持取消单帧、多时间点、批量及网络下载任务,取消统一返回9060011,重复或未知任务取消保持幂等。 - 新增显式
cachePolicy: 'reuse'、cacheMaxAgeMs、cacheHit和getThumbnailCacheInfo;默认仍为refresh,保持既有唯一文件名和输出路径行为。 - Android 增加下载循环、解码前后、缓存写入前和批量项间取消检查,并支持稳定文件缓存复用与统计。
- 修复 Android 取消、缓存统计、缓存清理和独立下载回调结果被编译为
UTSJSONObject后触发具体结果类型强转崩溃的问题。 - iOS 增加 Swift 异步可取消取帧桥、
AVAssetImageGenerator取消、单次回调仲裁、取消输出清理及缓存图片读取统计。 - Web 增加 video/canvas 任务清理和最多 32 项的进程内 LRU 缓存;HarmonyOS、微信小程序和支付宝小程序继续返回明确不支持。
- 同步更新 uni-app / uni-app x 示例、能力矩阵、平台声明、客户文档和任务缓存回归守卫。
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | × | × |
lizhao-video-thumb
lizhao-video-thumb 是面向 uni-app / uni-app x 的视频封面、视频缩略图和视频帧图提取 UTS 插件。你只需要传入视频地址,就可以在 App 端使用原生能力取出指定时间点的封面图,也可以在 Web 端使用降级方案生成预览图。
这个插件适合短视频列表、课程封面、聊天视频消息、素材库、视频编辑器时间轴、上传前预览等场景。插件会把真实项目里常见的路径、格式、批量、缓存和平台差异问题收进插件层处理,减少业务页反复写兼容代码。
你可以先这样理解
- 不知道哪一帧适合做封面:调用
getSmartVideoThumbnail自动分析和选择。 - 播放器或编辑器需要一张时间轴预览整图:调用
getVideoStoryboard。 - 只想取指定时间的一张封面:调用
getVideoThumbnail。 - 想在一个视频里取多个时间点:调用
getVideoThumbnails。 - 想批量处理多个视频:调用
getVideoThumbnailBatch。 - 视频是网络地址:在
common或普通取帧参数中开启allowNetwork。 - 页面要直接预览:
outputType使用base64或both,可直接拿到 Base64。 - 想主动停止耗时任务:传入
taskId,再调用cancelVideoThumbnailTask。 - 想复用相同结果:设置
cachePolicy: 'reuse',通过cacheHit判断是否命中。
功能特色
- 支持本地视频、
_doc、file://、content://、uni.saveFile临时路径、相册资源和网络视频的统一入口设计。 - Android/iOS 已实现网络视频下载到私有缓存后取帧,
downloadVideoForThumbnail已可直接返回本地缓存路径。 - 对于网络视频,downloadVideoForThumbnail 已可直接返回本地缓存路径,后续可继续调用取帧接口。
- 支持毫秒级
timeMs取帧,避免只能按整数秒取封面导致画面不准确。 - 支持智能封面:默认在视频 5% 到 95% 区间分析 7 个候选帧,自动避开近黑、近白和曝光异常画面,并返回每个候选的质量指标。
- 支持视频时间轴预览与雪碧图:一次顺序提取多帧并合成网格整图,同时返回每帧对应的时间和像素坐标,适合播放器悬停预览与视频编辑器。
- 支持单个视频、多时间点、多个视频批量生成缩略图,批量任务默认使用异步队列和并发限制。
- 默认生成唯一文件名,支持自定义输出目录、文件名和覆盖策略,避免多个视频得到重复图片或缓存互相覆盖。
- 输出支持本地文件、Base64 或两者同时返回,方便上传、预览和业务缓存。
- Android 已实现本地视频、content://、file://、_doc、_downloads 基础取帧,并在此基础上支持网络视频下载取帧,覆盖 Android 10 分区存储下的内容 URI 读取、毫秒级取帧、唯一文件名和 Base64 输出。
- iOS 已实现本地视频、file://、_doc、_downloads 基础取帧,并在此基础上支持网络视频下载取帧。iOS 使用 AVAssetImageGenerator 并默认修正视频方向,覆盖 iOS 旋转修正,兼容 MOV / HEVC 系统解码能力并提供空白帧邻近时间点兜底。
- 相册选择和录制视频拿到的本地临时路径会走同一套路径归一与取帧流程,避免录制视频无响应。
- 网络视频默认关闭,业务需显式设置 allowNetwork: true,并关注下载超时、最大字节数和 App 网络权限。
- 提供
clearThumbnailCache缓存清理能力,避免长期使用产生过多图片文件。 - 批量队列会为每个视频生成唯一文件名,减少多视频同时处理时的重复图片和互相覆盖问题。
- 支持任务 ID 和协作式取消,取消、成功、失败互斥,
complete只触发一次。 - 支持显式缓存复用、最大缓存年龄和缓存统计;默认仍生成唯一文件,不改变既有接入行为。
接入方式选择
| 场景 | 推荐接口 | 说明 |
|---|---|---|
| 自动选择更合适的封面 | getSmartVideoThumbnail |
分析多个候选帧并返回最高质量封面及评分明细 |
| 生成时间轴预览整图 | getVideoStoryboard |
一次生成网格雪碧图,并返回每帧时间与像素坐标 |
| 只取一个视频封面 | getVideoThumbnail |
传入 src 和可选 timeMs,返回图片路径或 Base64 |
| 同一个视频取多帧 | getVideoThumbnails |
传入 timesMs,适合时间轴预览或编辑器封面选择 |
| 多个视频批量处理 | getVideoThumbnailBatch |
传入 items 和 concurrency,内部排队避免卡住 UI |
| 先检查视频信息 | getVideoInfo |
读取时长、宽高、方向、格式和大小 |
| 路径不确定 | normalizeVideoPath |
统一识别 _doc、file://、content://、网络地址等路径类型 |
| 网络视频封面 | downloadVideoForThumbnail + getVideoThumbnail |
下载到私有缓存目录后取帧,支持超时和大小限制 |
| 清理缩略图缓存 | clearThumbnailCache |
按缓存、视频或过期时间清理 |
| 取消耗时任务 | cancelVideoThumbnailTask |
使用客户传入的 taskId 取消单帧、多帧、批量或下载任务 |
| 复用与统计缓存 | cachePolicy: 'reuse' + getThumbnailCacheInfo |
避免重复解码,并查询文件数、字节数和命中次数 |
最小可运行示例
import { getVideoThumbnail } from '@/uni_modules/lizhao-video-thumb'
// Android/iOS 已支持原生取帧;Web 已支持 video + canvas 降级取帧。
// HarmonyOS 和小程序当前会返回明确不支持错误,不会伪造成功。
getVideoThumbnail({
src: '_doc/demo.mp4',
timeMs: 0,
outputType: 'file',
success(res) {
console.log('视频封面生成成功', res.imagePath)
},
fail(err) {
console.log('视频封面生成失败', err.errCode, err.errMsg)
},
complete(res) {
console.log('视频封面流程结束', res)
}
})
常见增强示例
import { getSmartVideoThumbnail } from '@/uni_modules/lizhao-video-thumb'
// 智能封面会先分析候选帧,再使用同一套输出参数生成最终缩略图。
getSmartVideoThumbnail({
src: '_doc/demo.mp4',
candidateCount: 7,
startRatio: 0.05,
endRatio: 0.95,
common: {
outputType: 'both',
fixOrientation: true,
maxWidth: 720,
maxHeight: 405
},
success(res) {
// 业务日志建议只记录摘要,不要输出 thumbnail.base64 正文。
console.log('智能封面完成', res.selectedTimeMs, res.score, res.thumbnail.imagePath)
},
fail(err) {
console.log('智能封面失败', err.errCode, err.errMsg)
},
complete() {
console.log('智能封面流程结束')
}
})
import { getVideoThumbnailBatch } from '@/uni_modules/lizhao-video-thumb'
// 批量任务建议设置 concurrency,避免多个大视频同时解码造成界面阻塞。
getVideoThumbnailBatch({
taskId: 'video-cover-batch-001',
items: [
{ id: 'local-1', src: '_doc/a.mp4', timeMs: 350 },
{ id: 'camera-1', src: 'file:///storage/emulated/0/DCIM/Camera/demo.mp4', timeMs: 1200 }
],
concurrency: 2,
common: {
outputType: 'both',
fixOrientation: true,
// 复用相同视频、时间点和图片参数生成的受管缓存。
cachePolicy: 'reuse',
cacheMaxAgeMs: 86400000
},
progress(event) {
console.log('批量缩略图进度', event.current, event.total, event.message)
},
success(res) {
console.log('批量缩略图完成', res.results)
},
fail(err) {
console.log('批量缩略图失败', err.errMsg)
}
})
import { getVideoStoryboard } from '@/uni_modules/lizhao-video-thumb'
// 默认会在视频有效区间居中采样 12 帧,并合成为 4 列网格整图。
getVideoStoryboard({
taskId: 'video-storyboard-001',
src: '_doc/demo.mp4',
frameCount: 12,
columns: 4,
frameWidth: 160,
frameHeight: 90,
fitMode: 'cover',
backgroundColor: '#000000',
common: {
outputType: 'both',
fixOrientation: true,
cachePolicy: 'reuse'
},
success(res) {
// frames 可直接映射时间点与整图中的 x/y/width/height 区域。
console.log('时间轴预览完成', res.imagePath, res.columns, res.rows, res.frames)
},
fail(err) {
console.log('时间轴预览失败', err.errCode, err.errMsg)
},
complete() {
console.log('时间轴预览流程结束')
}
})
如果播放器需要单行横向雪碧图,可将 columns 设置为与 frameCount 相同;例如 frameCount: 12, columns: 12 会生成一行 12 格整图。Web 读取跨域视频时,视频服务仍需允许 CORS,否则浏览器无法把画面绘制到可导出的 canvas。
取消任务与查询缓存
import {
cancelVideoThumbnailTask,
getThumbnailCacheInfo
} from '@/uni_modules/lizhao-video-thumb'
// taskId 应由业务保证唯一;取消未知或已完成任务会返回 accepted: false。
cancelVideoThumbnailTask({
taskId: 'video-cover-batch-001',
success(res) {
console.log('取消请求结果', res.accepted, res.state)
}
})
// 只统计该视频相关的插件受管缓存;不传 src 时统计全部。
getThumbnailCacheInfo({
src: '_doc/demo.mp4',
success(res) {
console.log('缓存文件与命中情况', res.fileCount, res.totalBytes, res.hitCount)
}
})
完整示例源码路径
| 示例 | 路径 | 说明 |
|---|---|---|
| 主项目 uni-app 演示页 | uni_modules/lizhao-video-thumb/example/uniapp/videoThumbnail.vue |
覆盖本地视频、网络视频、Base64、批量、多时间点、缓存清理 |
| 插件内 uni-app 示例 | uni_modules/lizhao-video-thumb/example/uniapp/videoThumbnail.vue |
适合复制到普通 Vue 页面验证 |
| 插件内 uni-app x 示例 | uni_modules/lizhao-video-thumb/example/uniappx/index.uvue |
适合复制到 UVUE 页面验证 |
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android | 已支持 | 已实现时间轴雪碧图、智能选帧、本地/网络视频取帧、content://、任务取消、显式缓存复用、缓存统计、Base64 和批量队列 |
| iOS | 已支持 | 已实现时间轴雪碧图、智能选帧、本地/网络视频取帧、异步任务取消、显式缓存复用、缓存统计、Base64、批量队列和方向修正 |
| HarmonyOS | 明确不支持 | 当前返回 9060001,不伪造成功;后续仅在可编译、可验证时补真实媒体能力 |
| Web | 已支持降级 | Web 已支持单 video + canvas 时间轴合成、智能选帧、普通取帧、任务取消和进程内 LRU;Web 网络视频需要服务端允许 CORS;Web 端不写入本地文件,imagePath 会返回 data URL |
| 微信小程序 | 明确不支持 | 当前返回 9060001,不伪造成功;后续按小程序媒体能力实现可用子集 |
| 支付宝小程序 | 明确不支持 | 当前返回 9060001,不伪造成功;后续按平台能力实现可用子集 |
getVideoThumbnail(options)
说明 生成单个视频在指定时间点的视频封面或视频缩略图。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | VideoThumbnailOptions | 是 | 取帧参数对象 | 无 | src / timeMs / outputType / success / fail / complete |
| options.taskId | string | 否 | 客户自定义任务 ID,用于主动取消 | 自动生成 | 无 |
| options.src | string | 是 | 视频地址,支持本地视频、网络视频、_doc、file://、content:// 等 |
无 | 无 |
| options.timeMs | number | 否 | 取帧时间,单位毫秒 | 0 |
大于等于 0 |
| options.strategy | ThumbnailFrameStrategy | 否 | 取帧策略 | nearestSync |
nearestSync / previousSync / exact / fast |
| options.outputType | ThumbnailOutputType | 否 | 输出类型 | file |
file / base64 / both |
| options.outputDir | string | 否 | 自定义输出目录 | 插件私有缓存目录 | 无 |
| options.fileName | string | 否 | 自定义输出文件名 | 自动生成唯一文件名 | 无 |
| options.overwrite | boolean | 否 | 是否允许覆盖同名文件 | false |
true / false |
| options.maxWidth | number | 否 | 缩略图最大宽度 | 原始帧宽度 | 无 |
| options.maxHeight | number | 否 | 缩略图最大高度 | 原始帧高度 | 无 |
| options.quality | number | 否 | 图片质量 | 90 |
1-100 |
| options.format | ThumbnailImageFormat | 否 | 输出图片格式 | jpg |
jpg / png / webp |
| options.fixOrientation | boolean | 否 | 是否修正视频旋转方向 | true |
true / false |
| options.allowNetwork | boolean | 否 | 是否允许网络视频下载取帧 | false |
true / false |
| options.downloadTimeoutMs | number | 否 | 网络视频下载超时时间 | 30000 |
无 |
| options.maxDownloadBytes | number | 否 | 网络视频下载大小上限 | 104857600 |
无 |
| options.cachePolicy | ThumbnailCachePolicy | 否 | 是否复用参数完全一致的受管缓存 | refresh |
refresh / reuse |
| options.cacheMaxAgeMs | number | 否 | reuse 缓存最大年龄,0 表示不按年龄过期 | 0 |
大于等于 0 |
| options.progress | function | 否 | 下载、解码、写入缓存等进度回调 | 无 | 无 |
| options.success | function | 否 | 成功回调 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否生成成功 |
| taskId | string | 当前任务 ID |
| platform | string | 当前平台 |
| src | string | 原始视频地址 |
| normalizedPath | string | 归一化后的视频路径 |
| pathType | VideoThumbnailPathType | 路径类型 |
| imagePath | string | 生成的本地缩略图路径 |
| base64 | string | Base64 图片内容,outputType 为 base64 / both 时返回 |
| width | number | 缩略图宽度 |
| height | number | 缩略图高度 |
| timeMs | number | 实际取帧时间 |
| durationMs | number | 视频时长 |
| orientation | number | 视频方向角度 |
| fileName | string | 输出文件名 |
| cacheKey | string | 当前取帧参数对应的缓存键 |
| cacheHit | boolean | 是否直接复用了已有缓存 |
| message | string | 中文说明 |
getVideoStoryboard(options)
说明 在指定时间区间内按帧中心点均匀采样,将所有帧顺序合成为一张网格整图,并返回每帧对应的时间和像素坐标。Android、iOS 和 Web 支持;HarmonyOS 与小程序返回明确不支持。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | VideoStoryboardOptions | 是 | 时间轴预览参数对象 | 无 | taskId / src / startTimeMs / endTimeMs / frameCount / columns / frameWidth / frameHeight / fitMode / backgroundColor / common / progress / success / fail / complete |
| options.taskId | string | 否 | 客户自定义任务 ID,可用于取消 | 自动生成 | 无 |
| options.src | string | 是 | 本地或网络视频地址 | 无 | 无 |
| options.startTimeMs | number | 否 | 采样起始时间,单位毫秒 | 0 |
大于等于 0 |
| options.endTimeMs | number | 否 | 采样结束时间,单位毫秒 | 视频时长 | 大于 startTimeMs 且不超过视频时长 |
| options.frameCount | number | 否 | 采样和输出帧数 | 12 |
2-60 |
| options.columns | number | 否 | 网格列数 | 4 |
1-frameCount |
| options.frameWidth | number | 否 | 单元格宽度,单位像素 | 160 |
正整数 |
| options.frameHeight | number | 否 | 单元格高度,单位像素 | 90 |
正整数 |
| options.fitMode | StoryboardFitMode | 否 | 帧填充单元格的适配方式 | cover |
cover / contain |
| options.backgroundColor | string | 否 | 整图背景色 | #000000 |
#RRGGBB / #AARRGGBB |
| options.common | VideoThumbnailCommonOptions | 否 | 输出、网络、方向修正和缓存参数 | 无 | outputType / quality / format / allowNetwork / cachePolicy / cacheMaxAgeMs 等 |
| options.progress | function | 否 | 元数据、提取、合成和写缓存进度回调 | 无 | 无 |
| options.success | function | 否 | 整图生成成功回调 | 无 | 无 |
| options.fail | function | 否 | 参数、路径、解码、画布或输出失败回调 | 无 | 无 |
| options.complete | function | 否 | 成功或失败后触发一次 | 无 | 无 |
App 最终画布限制为 1600 万像素,Web 最终画布限制为 800 万像素。超过限制会返回 9060015,业务应减少帧数、列数或单元格尺寸。
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| taskId | string | 当前任务 ID |
| success | boolean | 是否成功 |
| src | string | 原始视频地址 |
| imagePath | string | 整图文件路径;Web 返回 data URL |
| base64 | string | 整图 Base64 或 Web data URL;纯文件输出时为空 |
| outputType | ThumbnailOutputType | 实际输出类型 |
| format | ThumbnailImageFormat | 实际图片格式 |
| width / height | number | 整图宽高 |
| columns / rows | number | 实际网格列数和行数 |
| frameCount | number | 实际帧数 |
| durationMs | number | 视频时长,单位毫秒 |
| startTimeMs / endTimeMs | number | 归一化后的采样区间 |
| cacheHit | boolean | 是否直接复用了已有整图缓存 |
| frames | Array<VideoStoryboardFrame> | 各帧的 index / timeMs / x / y / width / height |
| message | string | 中文说明 |
getSmartVideoThumbnail(options)
说明 在指定视频区间内等距分析多个候选帧,综合亮度、对比度、清晰度和黑白画面占比,选择质量更高的封面。候选分析不会生成临时图片文件;最终封面复用普通缩略图的输出和缓存参数。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SmartVideoThumbnailOptions | 是 | 智能封面参数对象 | 无 | taskId / src / candidateCount / startRatio / endRatio / common / progress / success / fail / complete |
| options.taskId | string | 否 | 客户自定义任务 ID,可用于取消任务 | 自动生成 | 无 |
| options.src | string | 是 | 本地或网络视频地址 | 无 | 无 |
| options.candidateCount | number | 否 | 候选帧数量,运行时限制到 3-20 | 7 |
3-20 |
| options.startRatio | number | 否 | 候选区间起始比例 | 0.05 |
0-1 |
| options.endRatio | number | 否 | 候选区间结束比例,必须大于 startRatio | 0.95 |
0-1 |
| options.common | VideoThumbnailCommonOptions | 否 | 最终输出、网络、方向修正和缓存参数 | 无 | outputType / maxWidth / maxHeight / quality / format / allowNetwork / cachePolicy 等 |
| options.progress | function | 否 | 元数据、分析、选择和最终输出进度回调 | 无 | 无 |
| options.success | function | 否 | 智能封面成功回调 | 无 | 无 |
| options.fail | function | 否 | 参数、路径、解码或输出失败回调 | 无 | 无 |
| options.complete | function | 否 | 成功或失败后触发一次 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| taskId | string | 当前任务 ID |
| success | boolean | 是否成功 |
| src | string | 客户传入的原始视频地址 |
| selectedTimeMs | number | 最终选中帧的时间,单位毫秒 |
| score | number | 最终候选质量分,范围 0-1 |
| fallbackUsed | boolean | 是否因全部候选质量较低而使用最高分兜底 |
| thumbnail | VideoThumbnailResult | 最终生成的标准缩略图结果 |
| candidates | Array<SmartThumbnailCandidate> | 成功解码候选的时间、指标、得分和可用性 |
| message | string | 中文说明 |
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9060001 | platform unsupported | 当前平台暂不支持真实取帧能力 |
| 9060002 | native context unavailable | 原生上下文不可用 |
| 9060003 | invalid video source | 视频地址为空或格式不合法 |
| 9060004 | path inaccessible | 视频路径无法读取,常见于外部路径、content:// 授权或沙箱边界 |
| 9060005 | network disabled | 传入网络视频但未开启 allowNetwork |
| 9060006 | download failed | 网络视频下载失败 |
| 9060007 | decode failed | 视频解码失败,例如 MOV / HEVC 在目标平台不支持 |
| 9060008 | frame extraction failed | 指定时间点取帧失败 |
| 9060009 | cache write failed | 缩略图缓存写入失败 |
| 9060010 | operation timeout | 下载、解码或取帧超时 |
| 9060011 | batch cancelled | 批量任务被取消 |
| 9060012 | unsupported codec or format | 当前平台不支持视频编码或封装格式 |
| 9060013 | active task id conflict | 相同任务 ID 仍处于活动状态 |
| 9060014 | invalid storyboard options | 时间轴帧数、区间、列数、单元格尺寸、适配方式或背景色不合法 |
| 9060015 | storyboard canvas exceeds safe pixel limit | 时间轴整图超过当前平台安全像素上限 |
自定义基座说明
插件包含 App 端 utssdk/app-android/**/*.uts、utssdk/app-ios/**/*.uts 和 iOS Swift 桥接逻辑,Android 网络视频还使用 INTERNET 权限。客户真机要使用 Android / iOS 最新原生逻辑时,需要重新运行对应平台原生联编或重新打对应平台自定义基座;仅更新 wgt/appResource 不能替换旧基座中的原生逻辑。时间轴预览和智能封面没有新增 Android/iOS 三方 SDK、libs、res、Frameworks 或 Resources。
注意事项
- Android、iOS 已支持任务取消与文件缓存复用;Web 使用进程内 LRU,页面刷新后缓存会释放。
- 插件层会优先把路径归一、缓存命名、批量队列和错误码做成稳定契约,后续平台实现不得要求客户改成唯一指定调用写法。
- 网络视频默认关闭,业务需显式设置 allowNetwork: true,并关注下载大小、超时和服务端是否支持移动端直接访问。
- HarmonyOS、微信小程序和支付宝小程序当前返回明确不支持错误,不伪造成功;只有拿到可编译、可验证的真实平台能力后才会打开能力矩阵。
作者系列UTS插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6485
赞赏 5
下载 12504573
赞赏 1941
赞赏
京公网安备:11010802035340号