惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
IT之家
IT之家
Y
Y Combinator Blog
T
Tailwind CSS Blog
B
Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
InfoQ
J
Java Code Geeks
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
FFmpeg开发笔记(一百零一)跨平台的开源音视频移动框架Mobil...
aqi00 · 2026-05-16 · via 博客园_首页

除了剪映那样的视频剪辑软件,在移动系统上还有一款跨平台的开源音视频框架MobileFFmpeg,通过该框架可以很方便地执行音视频加工操作,下面就来介绍如何在App工程中使用MobileFFmpeg。

MobileFFmpeg 是一款专为 Android、iOS 和 tvOS 移动平台开发的开源音视频处理框架。它的核心作用是将强大的 FFmpeg 工具链移植到移动端,并提供简洁的上层 API,让开发者无需复杂的底层编译和 JNI 操作,就能在 App 里实现专业级的音视频编辑、转码与处理。
MobileFFmpeg几乎能实现电脑端 FFmpeg 的所有功能,包括:
1、格式转换:MP4、AVI、MKV、MOV、GIF 等互转。
2、视频编辑:裁剪、拼接、旋转、加水印、加字幕、倍速播放。
3、音频处理:提取音频、混音、降噪、格式转换(MP3、AAC、WAV)。
4、编码解码:支持 H.264 (x264)、H.265 (x265)、VP9 等主流编解码器。
5、滤镜特效:亮度、对比度、模糊、锐化、防抖等。
6、媒体信息:获取视频分辨率、码率、时长、编码格式等。

MobileFFmpeg的源码托管地址为https://github.com/tanersener/mobile-ffmpeg(星星数4.1k),最新版本是2021年2月发布的v4.4(源码仓库在2025年1月被打包,目前为只读状态),该版本的源码下载地址为https://github.com/tanersener/mobile-ffmpeg/archive/refs/tags/v4.4.LTS.tar.gz。
由于v4.4版本的MobileFFmpeg发布时间较早,为了让小海豚版本的Android Studio Dolphin能够打开它的范例工程,需要对MobileFFmpeg的android工程作如下修改:

一、升级Gradle版本

打开android目录下的gradle/wrapper/gradle-wrapper.properties,把下面这行配置

改成如下这行配置,表示把Gradle版本从6.1.1升级到6.7.1。

二、更新工具库的仓库位置

打开android目录下的build.gradle,把里面的两处“jcenter()”都改为以下配置:

因为jcenter仓库已经废弃,所以改成引用国内的仓库位置。

三、调整模块级别的build.gradle

打开android/app目录下的build.gradle,把下面这行配置

改成下面这行,也就是注释掉ndk配置:

接着把下面两行配置

改成下面两行,也就是注释掉测试配置:

四、修改临时目录的保存路径

打开android/test-app/src/main/java/com/arthenica/mobileffmpeg/test/VideoTabFragment.java,把encodeVideo方法内部的下面代码

改为下面代码,也就是更换临时目录的保存路径:

接着把getVideoFile方法内部的下面代码

改为下面代码,同样是更换临时目录的保存路径:

以上修改的目的是把临时目录改到应用自身的私有空间,避免访问公共空间出现未授权的异常。

修改以上配置和代码之后,等待MobileFFmpeg工程编译通过,把主入口的test-app模块安装到手机上,启动之后的App界面如下图所示:

mobile-ffmpeg1

MobileFFmpeg默认支持VP8和MPEG-4等视频编码器,先在界面上方切换到VIDEO标签,再点击界面中间的【ENCODE】按钮,app会把下方的演示图片自动转为一小段视频,转换过程如下图所示:

mobile-ffmpeg2

MobileFFmpeg也支持mp3、vorbis、opus等常见的音频编码器,比如先在界面上方切换到AUDIO标签,再点击界面中间的【ENCODE】按钮,界面下方会显示mp3音频的转换日志,如下图所示:

mobile-ffmpeg3

可见MobileFFmpeg支持视频转码、音频转码等常见的音视频加工操作,以及更多的命令行处理功能。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。