更新记录

1.0.1(2026-07-22)

-Android 鸿蒙 IOS 三端ffmpeg

1.0.0(2026-07-22)

-Android 鸿蒙 IOS 三端ffmpeg


平台兼容性

uni-app(4.18)

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

其他

多语言 暗黑模式 宽屏模式
×

👉 下载体验

体验二维码


ly028-FFMpeg

基于 FFmpeg 的全功能视频音频处理 UTS 插件(Android / iOS / HarmonyOS)

少配置、分层清晰:日常能力最少参数即可成功;进阶与命令留给需要精细控制的场景。

安装

在 HBuilderX 中导入插件,或放置到 uni_modules/ly028-FFMpeg/

快速开始(推荐)

import {
  compressVideoAsync,
  cancelJob,
  getMediaInfoAsync
} from '@/uni_modules/ly028-FFMpeg'

// 压缩:只需路径 + 可选档位
const jobId = compressVideoAsync({
  inputPath: '/path/to/input.mp4',
  outputPath: '/path/to/output.mp4',
  quality: 'medium',      // low | medium | high → CRF
  resolution: '720p'      // 360p | 480p | 720p | 1080p | 1280x720
}, (pct) => {
  console.log('进度:', pct + '%')   // "0"…"100"
}, (json) => {
  const result = JSON.parse(json)
  if (result.code === 0) {
    console.log('完成', result.data)
  } else {
    console.log('失败', result.msg)  // 已 i18n,可直接 toast
  }
})

// 取消(任意任务类型)
cancelJob(jobId)

API 分层

日常(优先用这些)

API 说明
getMediaInfoAsync 媒体信息
extractThumbnailAsync 截帧(可 outputPath 写文件,否则 base64)
compressVideoAsync 视频压缩主入口(quality / resolution)
trimMediaAsync 时间裁剪
extractAudioAsync 提取音频(扩展名决定默认 codec)
mergeAVAsync 合并音视频
convertFormatAsync 格式转换(由 outputPath 扩展名决定)
addWatermarkAsync 水印(文字)
pipAsync 画中画
concatAsync 拼接(推荐 inputs: string[]
stabilizeAsync 防抖稳定

语义(人话参数,无需写滤镜字符串)

API 说明
rotateVideoAsync { degrees: 90\|180\|270 }
cropVideoAsync { x, y, width, height }
setSpeedAsync { speed: 0.5~2.0 }
adjustVolumeAsync { volume: number }
exportGifAsync { fps?, width? }

控制

API 说明
cancelJob / cancelTranscode 取消单个任务(旧名兼容)
cancelAllTasks 取消全部
getActiveJobs 活跃任务列表
getHWAccelsAsync 硬件加速能力
setLocale / getLocale zh-Hans | en

高级(最后手段)

API 说明
startTranscodeAsync 自定义转码(codec / crf / 裁剪等)
filterProcessAsync 原始 videoFilter / audioFilter
executeCommandAsync 原始 FFmpeg 命令
executeFFprobeAsync 原始 FFprobe

语义 API 示例

import { rotateVideoAsync, adjustVolumeAsync, exportGifAsync } from '@/uni_modules/ly028-FFMpeg'

rotateVideoAsync({
  inputPath, outputPath, degrees: 90
}, , onComplete)

adjustVolumeAsync({
  inputPath, outputPath, volume: 1.5
}, , onComplete)

exportGifAsync({
  inputPath, outputPath, fps: 10, width: 320
}, , onComplete)

拼接(推荐 inputs)

concatAsync({
  inputs: ['/a.mp4', '/b.mp4'],
  outputPath: '/out.mp4'
}, , onComplete)

仍支持旧写法:{ inputPath: concatListFile, outputPath }

统一响应信封 FFmpegResult

字段 类型 说明
code number 0=成功, 1=错误
subCode number 400|404|422|500|501|502|503
msg string i18n 后的可读消息
data string 业务 JSON(成功时)

进度回调:onProgress 收到 "0""100" 字符串。

Demo 说明

测试页底栏:基础 | 进阶 | 命令。基础只露日常能力;进阶含编码器条与滤镜类;命令为原始 CLI。

平台

特性 Android iOS HarmonyOS
硬件加速 MediaCodec VideoToolbox OHCodec
最小 API 21 12.0 API 9

许可

本插件遵循 LGPL/GPL。FFmpeg 为 LGPL/GPL 开源项目。


👉 下载体验

体验二维码

隐私、权限声明

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

Android: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE(读取/保存媒体文件);iOS: 相册(由前端 uni.chooseVideo/chooseImage 触发);鸿蒙: 读写权限(读取/保存媒体文件)

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

插件不采集任何数据。所有视频音频处理在设备端离线完成,不上传任何媒体数据。

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

暂无用户评论。