Android Kotlin项目集成FFmpeg编译报错:找不到指定依赖包
问题解决指南
一、编译失败:无法找到com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.3.2
原因
你直接引入的是com.arthenica:mobile-ffmpeg-full:4.4,但报错的库是本地依赖musicg-1.4.2.0.jar间接引入的,而默认的Google、MavenCentral仓库没有这个库,导致依赖解析失败。
解决步骤
- 若使用Gradle 7.0以下版本,在项目根目录的
build.gradle中添加JitPack仓库:
allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } }
- 若使用Gradle 7.0+版本,仓库配置在
settings.gradle中:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } }
- 同步Gradle后重新编译即可。
二、FFmpeg转换命令格式错误
你的命令拼接后会出现参数无空格的问题,FFmpeg无法识别输入输出路径:
// 错误写法:拼接后参数无分隔空格 FFmpeg.execute("-i" + f2 +"/storage/emulated/0/Android/data/com.icompilecodewithnowarnings.ffmpegthing/files/Documents/recording.wav")
修正方案
推荐用数组传递参数(避免路径含空格的兼容问题):
val cmdArray = arrayOf( "-i", f2, "/storage/emulated/0/Android/data/com.icompilecodewithnowarnings.ffmpegthing/files/Documents/recording.wav" ) FFmpeg.execute(cmdArray)
或用字符串模板保证空格分隔:
val cmd = "-i ${f2} /storage/emulated/0/Android/data/com.icompilecodewithnowarnings.ffmpegthing/files/Documents/recording.wav" FFmpeg.execute(cmd)
额外注意事项
- Android 10+需申请存储权限,要么使用Scoped Storage访问文件,要么申请
MANAGE_EXTERNAL_STORAGE权限,否则无法读写指定路径的文件。 - FFmpeg命令需在子线程执行,避免阻塞主线程引发ANR。
内容的提问来源于stack exchange,提问作者axjp
相关产品推荐
相关产品推荐

