Skip to content

x-ffmpeg-s 音视频处理

App 三端音视频处理:剪辑、拼接、压缩、转码、抽帧、抽音、静音、合并、缩放、旋转、水印、滤镜。输出请写到 getCacheDir() 等可写目录,路径不要带 file://

Web / 微信不能跑处理任务。 getMediaInfo 可用,其它任务返回不支持。

兼容性

HarmonyIOSAndroidWEB小程序
支持支持支持不支持不支持

调用

ts
import { getCacheDir, getMediaInfo, cut, cancel } from "@/uni_modules/x-ffmpeg-s"

getMediaInfo({
  path: videoPath,
  success: (res) => {
    console.log(res.info)
  }
})

cut({
  input: videoPath,
  output: getCacheDir() + "/cut-" + Date.now() + ".mp4",
  startTime: 2,
  duration: 4,
  videoCodec: "copy",
  audioCodec: "copy",
  onProgress: (p) => {
    console.log(p)
  },
  success: (res) => {
    console.log(res.output, res.cancelled)
  }
})

cancel()

方法

名称需要说明
getCacheDir返回可写缓存目录,输出路径建议拼在这里
getRuntimeInfo返回当前平台与编码器信息
getMediaInfopath读媒体信息,Web / 微信也可用
cutinputoutput,可选 startTimeduration、编码器按时间裁剪
concatinputs(至少 2 个)、output拼接多个文件
extractFrameinputoutput(.jpg/.png)、frameTime抽一帧封面
extractAudioinputoutput抽出音轨
muteVideoinputoutput去掉视频声音
mergeVideoAudioinput(视频)、audiooutput把音频合进视频
mergeTimedinputaudiooutputaudioStart,可选 audioDuration从指定秒开始贴一段音乐
scaleinputoutputwidth?height?缩放
rotateVideoinputoutputrotate(0/90/180/270)旋转
compressinputoutput,可选码率压缩
transcodeinputoutput,可选编码器转码
watermarkinputwatermarkoutput,可选 positionmarginopacity加图片水印,文字水印不可用
filterVideoinputoutput,可选 filteraudioFilter自定义滤镜链
cancel取消当前任务,成功回调里 cancelled=true

多数任务共用字段:

字段说明默认
input / output绝对路径必填
startTime起始秒0
duration时长秒,不传则到结尾到结尾
width / height目标尺寸,0 为等比原尺寸
rotate0 / 90 / 180 / 2700
fliphorizontal / vertical-
fps帧率原帧率
videoCodec / audioCodec编码器,copy 为流拷贝按扩展名
videoBitrate / audioBitrate2M / 800k,不要小数-
onProgress / success / fail / complete回调-

concatinputs(至少 2 个)、output

extractFrameinputoutput.jpg / .png)、frameTime 必填。

mergeVideoAudioinput(视频)、audiooutput

mergeTimedinputaudiooutputaudioStart 必填,audioDuration 默认整段音乐。

watermarkinputwatermark(png/jpg)、outputposition(默认 bottom-right)、margin(20)、scale(0 原尺寸)、opacity(1)、startTime / duration

filterVideofilter 视频滤镜链,audioFilter 音频滤镜链。

XFfmpegTaskResultoutputsizedurationMscancelledcancel() 后仍走 success,且 cancelled=true

文字水印不可用,请用 png + watermark

平台差异

  1. 仅 Android / iOS / 鸿蒙可执行处理任务。
  2. 输出必须是可写绝对路径。

版本

版权归https://xui.tmui.design你不得修改及二次开发,仅供TMUI4会员商用使用。不得转给非VIP会员使用,一经查实数倍赔偿,并追究法律责任。

更新日志

1.0.0(2026-08-01)

  • 基于 FFmpeg 7.1 + x264 交叉编译三平台原生依赖包。
  • Android:NDK 30 编译 arm64-v8a,AAR 内置 8 个 .so(含 MediaCodec 硬解)。
  • HarmonyOS:OHOS NDK 编译 arm64-v8a,HAR 内置 8 个 .so,NAPI + Worker 架构。
  • iOS:Xcode 编译 arm64 静态框架 XFfmpegCore.framework,ObjC++ + Swift 边界。
  • 提供剪辑、拼接、压缩、转码、抽帧、抽音、静音、合并、缩放、旋转、翻转、媒体信息探测、取消等完整 API。
  • UTS 层统一 DCloud 三回调风格(success/fail/complete),耗时任务支持进度回调。
  • 编写交叉编译脚本与构建文档(native-src/*/BUILDING.md)。
最近更新