更新记录

1.0.0(2026-03-12)

支持 Android / iOS 本地视频取帧 支持自定义 timeMs 提取指定时间点图片 支持设置图片质量 quality 返回本地图片路径、宽高和时间点 提供可直接试用的模板页和上传演示


平台兼容性

uni-app(4.74)

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

uni-app x(4.75)

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

点击“试用插件”即可直接体验视频取帧模板页

试用页面就是插件同级目录下的 index.vue

页面里已经包含:

  • 选择本地视频
  • 自定义取帧时间
  • 调用 extractVideoFrame
  • 通用视频上传示例
  • 控制台打印结果
  • 图片预览

功能特性

  • 支持 Android / iOS App 从本地视频提取一帧图片
  • 支持自定义取帧时间 timeMs
  • 不传有效时间时默认按 1000ms 取帧
  • 支持设置图片质量 quality
  • 返回本地图片路径、宽高和实际时间点

安装

uni_modules/austin-video-frame 复制到项目的 uni_modules 目录下。

权限说明

  • 插件本身不主动申请任何系统权限
  • 插件只处理“本地视频路径 -> 本地图片路径”
  • 如果你在示例页里使用 uni.chooseVideo 选择相册视频,是否触发系统相册权限由平台和系统版本决定

API

方法

方法名 说明
extractVideoFrame(filePath, timeMs, quality) 从本地视频取一帧图片

参数

参数名 类型 是否必填 说明
filePath string 本地视频路径
timeMs number 取帧时间,单位毫秒,默认 1000
quality number jpg 质量,范围 1-100,默认 85

返回值

字段 类型 说明
ok boolean 是否成功
imagePath string 生成的本地图片路径
width number 图片宽度
height number 图片高度
timeMs number 实际使用的取帧时间
errCode number 错误码,成功时为 0
errMsg string 错误信息

使用示例

<script>
import { extractVideoFrame } from '@/uni_modules/austin-video-frame'

export default {
  methods: {
    runExtract(filePath) {
      const ret = extractVideoFrame(filePath, 1000, 85)
      console.log('extractVideoFrame ret', ret)
      if (!ret || !ret.ok) {
        uni.showToast({ title: ret && ret.errMsg ? ret.errMsg : '取帧失败', icon: 'none' })
        return
      }
      console.log('imagePath', ret.imagePath)
    },
  },
}
</script>

上传演示

模板页额外提供了一个最小的上传视频示例:

  • 自己填写 uploadUrl
  • 自己填写上传字段名,默认 file
  • 点击“上传视频”后会调用 uni.uploadFile
  • 控制台会打印 upload-video-start / upload-video-success / upload-video-fail
  • 页面上会显示原始上传回调文本

这个上传演示只是为了方便你快速联调接口,不属于插件核心能力。

试用方法

  1. 点击“试用插件”
  2. 进入示例页后点击“选择本地视频”
  3. 可按需修改 timeMsquality
  4. 点击“开始取帧”,页面会显示抽出的图片
  5. 如需联调上传,填写上传地址后点击“上传视频”
  6. 控制台会打印返回结果,页面会显示上传回调

注意事项

  • 当前版本只支持本地视频路径,不支持 http/https 远程地址
  • 建议在录制完成、文件已落盘后再调用
  • 如果只是想取默认时间点,直接传 1000 即可
  • 如果 timeMs 超出视频实际时长,最终取到的是系统可获取的最近一帧

隐私、权限声明

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

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

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