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

在Android的Pydroid中使用FFmpeg库遇权限及路径问题求助

解决Pydroid3在未root Android11上调用FFmpeg的权限与找不到文件问题

问题分析

  1. FileNotFoundError:你通过pip安装的ffmpeg-python等库只是Python绑定工具,并非FFmpeg可执行文件本身,Pydroid3默认环境里没有FFmpeg二进制程序,因此会提示找不到文件。
  2. PermissionError:Android11的应用沙箱机制禁止跨应用访问私有数据目录,Pydroid3无法读取Termux的/data/data/com.termux/私有目录下的文件,所以出现权限被拒绝的错误。

可行解决方案

方案一:直接在Pydroid3环境安装FFmpeg

这是最简便的方法,Pydroid3自带包管理器可直接安装FFmpeg:

  1. 打开Pydroid3,点击顶部菜单栏的「Terminal」(终端)选项。
  2. 在终端中执行命令:
    pkg install ffmpeg
    
  3. 安装完成后,原代码无需修改,直接使用'ffmpeg'即可调用——Pydroid会自动将安装路径加入环境变量。

方案二:使用公共存储目录的独立FFmpeg二进制

如果Pydroid的包管理器安装失败,可手动下载FFmpeg到公共目录:

  1. 下载对应你设备架构(arm64-v8a)的Android版FFmpeg二进制文件。
  2. 将下载的ffmpeg文件放到手机公共存储目录,比如/storage/emulated/0/Download/。
  3. 给文件添加可执行权限:
    • 打开Pydroid3的终端,执行:
      chmod +x /storage/emulated/0/Download/ffmpeg
      
  4. 修改Python代码,指定FFmpeg的绝对路径:
    import subprocess 
    
    video_path = '/storage/emulated/0/Download/video.mp4' 
    srt_path = '/storage/emulated/0/Download/subtitles.srt' 
    
    subprocess.run(['/storage/emulated/0/Download/ffmpeg', '-i', video_path, '-map', '0:s:0', srt_path])
    

方案三:利用Termux复制FFmpeg到公共目录

如果你已经在Termux安装了FFmpeg,可将其复制到公共存储供Pydroid3使用:

  1. 打开Termux,执行termux-setup-storage获取存储访问权限(按提示完成授权)。
  2. 复制FFmpeg到公共Download目录:
    cp /data/data/com.termux/files/usr/bin/ffmpeg /storage/emulated/0/Download/
    
  3. 给文件添加可执行权限:
    chmod +x /storage/emulated/0/Download/ffmpeg
    
  4. 之后在Pydroid3中使用方案二的代码即可调用。

额外注意事项

  • 确保Pydroid3已在手机设置中开启「存储访问权限」,否则无法读写Download目录的文件。
  • 确认你的video.mp4文件确实包含字幕轨道,否则-map 0:s:0会导致FFmpeg报错(此为独立问题,与当前权限/路径问题无关)。

内容的提问来源于stack exchange,提问作者Cristina T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:50:18