更新记录

1.0.0(2026-09-11)

1.0.0(2026-09-11)

  • 初始版本:基于 FFmpegKit 的 Android 视频转码插件
  • 支持自定义 ffmpeg 参数、实时进度回调、任务取消

平台兼容性

uni-app(4.83)

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

lab-ffmpeg-convert

基于 FFmpegKit 的 uni-app UTS 转码插件。需自定义基座 / 云打包。

目录结构

lab-ffmpeg-convert
├─ js/index.js              # JS Promise 封装
├─ utssdk
│  ├─ interface.uts
│  ├─ index.uts             # 非 App 空实现
│  └─ app-android
│     ├─ config.json        # Maven 依赖 + minSdk 24
│     └─ index.uts          # Android 实现
└─ package.json

环境要求

说明
Android minSdkVersion 24
ABI 主要为 arm64-v8a
运行方式 自定义基座 / 云打包

方法

方法 说明
convertVideo(options) 转码(视频 / 音频都走这个;用 args 区分)
cancelConvert() 取消当前转码

options 参数

字段 必填 说明
input 输入路径:绝对路径 / file:// / content://
output 输出路径;不传则写入缓存目录,默认扩展名 .mp4
args ffmpeg 参数串,不含 -i 与输入输出路径
onProgress 进度回调 { time, duration, percent }percent 无法计算时为 -1
import { convertVideo, cancelConvert } from '@/uni_modules/lab-ffmpeg-convert/js'

转码视频

不传 args 时默认硬件 H.264 + AAC;失败自动回退 mpeg4。

const path = await convertVideo({
  input: 'file:///.../input.mov',
  // output: '/storage/.../out.mp4',  // 可选
  // args: '-c:v h264_mediacodec -b:v 2M -c:a aac -b:a 128k',
  : (p) => console.log(p.percent)
})

视频常用 args

参数 含义
-c:v h264_mediacodec 视频编码器(Android 硬件 H.264)
-b:v 2M 视频码率
-c:a aac 音频编码器
-b:a 128k 音频码率
-c copy 只转封装,不重编码(最快)
-c:v mpeg4 -q:v 5 软件回退编码(硬件失败时插件会自动用)

完整默认:-c:v h264_mediacodec -b:v 2M -c:a aac -b:a 128k。不要写 libx264(当前 full 包没有)。

转码音频

仍调用 convertVideo,传音频 args,并指定 .mp3 输出路径:

const path = await convertVideo({
  input: 'file:///.../input.m4a',
  output: '/storage/.../out.mp3',
  args: '-vn -c:a libmp3lame -b:a 192k -ar 44100 -ac 2'
})

音频常用 args

参数 含义
-vn 去掉视频轨(只保留音频)
-c:a libmp3lame MP3 编码器(优先)
-c:a libshine MP3 备用编码器(无 lame 时用)
-b:a 192k 音频码率
-ar 44100 采样率
-ac 2 声道数(立体声)

推荐:-vn -c:a libmp3lame -b:a 192k -ar 44100 -ac 2;失败可改 libshine

隐私、权限声明

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

读写存储(用于输入/输出转码视频文件)

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

插件不采集任何数据,不向服务器发送数据,转码在本地完成,仅本地处理媒体,无网络上报。

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

暂无用户评论。