更新记录
1.0.0(2026-07-19)
首发:基于系统内置多媒体引擎的视频工具箱:视频缩略图 / 帧提取 / 元信息读取(路径进/路径出)+ 裁剪 / 拼接 / 转码 / 水印 / 场景切分 / 音频提取。
平台兼容性
uni-app x(5.14)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | 5.0 | 12 | × | × |
nex-video —— 高性能视频缩略图 / 帧提取
免额外原生库:能力基于系统内置多媒体引擎实现——无需附带任何第三方库,包体零负担、云打包无额外依赖。 仅支持 App 端(Android / iOS),H5 / 小程序无对应系统多媒体能力。
同一份 utssdk 插件同时支持 uni-app x(uvue) 与 经典 uni-app(vue3),无需分叉。 全部「路径进 / 路径出」:读视频文件路径,缩略图写 JPEG 到目标路径,元信息直接返回结构体。
API
本插件共 9 个 JS API(2 个同步「路径进出」+ 7 个异步剪辑/分析):
| JS API | 签名 | 说明 |
|---|---|---|
videoThumbnail |
videoThumbnail(src, dest, timeMs, maxWidth, maxHeight): VideoThumbResult |
取 timeMs 处一帧、等比缩到 ≤maxW×maxH(不放大)、存 JPEG(90) 到 dest |
videoInfo |
videoInfo(src): VideoInfo |
读时长 / 宽 / 高 / 旋转角 / 帧率 / 是否含音轨 |
videoTrim |
videoTrim(opts): Promise<VideoEditResult> |
裁剪 [startMs, endMs) 一段到 dest(默认无损快通道,不重编码) |
videoConcat |
videoConcat(opts): Promise<VideoEditResult> |
顺序首尾拼接 ≥2 个视频到 dest |
videoTranscode |
videoTranscode(opts): Promise<VideoEditResult> |
转码/压缩:按目标分辨率/码率/帧率重新导出(省略项保持原值) |
videoWatermark |
videoWatermark(opts): Promise<VideoEditResult> |
把已渲染的 PNG 水印按归一化位置叠到视频 |
detectScenes |
detectScenes(opts): Promise<SceneResult> |
场景/镜头切分:抽帧算灰度直方图差,输出切换点与连续场景段(本地,无 ML) |
detectFaces |
detectFaces(opts): Promise<FaceDetectResult> |
人脸检测:iOS 端真实现;Android 端为占位实现(返回空结果) |
extractAudio |
extractAudio(opts): Promise<AudioExtractResult> |
提取音频:copy 无损直拷音轨→.m4a(双端真实现)/ reencode 重编码为 AAC |
异步 API(trim/concat/transcode/watermark/detectScenes/detectFaces/extractAudio)入参为具名 options 对象(含可选
onProgress(percent)回调),返回Promise,签名与类型以interface.uts契约为准。
类型
// 缩略图结果(字段 camelCase)
type VideoThumbResult = { width: number; height: number; sizeBytes: number; costMs: number };
// 视频元信息(字段 camelCase)
type VideoInfo = {
durationMs: number; width: number; height: number;
rotation: number; frameRate: number; hasAudio: boolean;
};
videoThumbnail:timeMs(毫秒)取帧;maxWidth/maxHeight为等比缩放上限框,只缩不放;输出固定 JPEG(质量 90)。取帧失败抛Error。videoInfo:durationMs时长(毫秒);rotation∈ 0 / 90 / 180 / 270;frameRate帧率(fps);hasAudio是否含音轨。
用法
import { videoThumbnail, videoInfo } from "@/uni_modules/nex-video";
// 选视频拿到 tempFilePath 作 src(uni.chooseVideo)
const dest = "_doc/nex-video/thumb.jpg";
const thumb = videoThumbnail(src, dest, 1000, 320, 320); // 取第 1 秒帧,缩到 ≤320×320
// thumb: { width, height, sizeBytes, costMs }
const info = videoInfo(src);
// info: { durationMs, width, height, rotation, frameRate, hasAudio }
限制
- 仅 App 端(Android / iOS);H5 / 各家小程序不支持。
- 只读本地文件路径:
src须为可读本地视频路径(如uni.chooseVideo的tempFilePath),不支持远程 URL / buffer。 - 缩略图固定存 JPEG(质量 90);
timeMs超时长时平台 codec 取最接近帧。
平台与调试边界
- 仅 app-android / app-ios;H5、各家小程序不支持。
- Android 真机调试需 HBuilderX ≥ 4.26(自定义调试基座)。
- 最终 App 打包由 HBuilderX /
@dcloudioCLI 完成。

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