You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android部分设备转换图片时运行ffmpeg报Permission denied错误如何处理?

错误原因

核心报错为Permission denied (error=13),本质是应用尝试执行私有目录下的FFmpeg二进制文件时被系统拒绝,具体触发原因如下:

  • FFmpeg二进制文件释放到本地存储时,未被授予可执行权限
  • 设备运行Android 10(API 29)及以上系统,官方默认禁止应用在私有files目录下执行独立二进制文件
  • 设备搭载小米、华为等厂商定制ROM,额外新增了私有目录执行可执行文件的限制
解决方案
  • 手动添加可执行权限
    在FFmpeg库初始化完成、二进制文件释放到本地后,执行以下代码申请权限:
    File ffmpegFile = new File(getFilesDir(), "ffmpeg");
    if (ffmpegFile.exists()) {
        // 第一个参数为是否授予执行权限,第二个参数为是否仅当前用户可用
        ffmpegFile.setExecutable(true, false);
    }
    
  • 替换老旧FFmpeg依赖
    你当前使用的com.github.hiteshsondhi88.libffmpeg库已停止维护多年,不兼容高版本Android权限规则。建议切换为通过JNI直接调用FFmpeg原生so库的实现方案,不需要单独执行二进制文件,从根源规避权限问题。
  • 调整二进制文件存放路径
    部分厂商ROM对应用私有cache目录的执行限制更宽松,可尝试将FFmpeg二进制文件释放到cache目录,授予执行权限后再调用。
  • 适配高版本系统规则
    若应用targetSdkVersion >=29,建议重构图片转换逻辑,直接调用FFmpeg原生接口实现能力,彻底放弃执行独立二进制文件的方案。

内容的提问来源于stack exchange,提问作者Bhauraj Biradar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:36:01