Android环境下Buildozer打包ffpyplayer音频播放失败问题咨询
安卓端Kivy MP3播放器加载失败解决方案
权限相关调整
- 安卓13及以上系统废弃了
READ_EXTERNAL_STORAGE权限,读取公共目录音频需要额外申请READ_MEDIA_AUDIO权限,两个权限同时配置才能兼容全版本安卓系统 - 权限申请放在导入语句之后的逻辑是合理的,不需要调整到更早位置,但要确保权限申请通过后再执行音频加载操作,不要发起权限申请后立刻调用SoundLoader,此时还未拿到存储访问权限会直接加载失败。
ffpyplayer适配修复
桌面端正常安卓端失效大概率是ffpyplayer打包配置问题:
- 确保环境变量设置顺序正确,必须在导入kivy音频模块之前设置
KIVY_AUDIO:
import os os.environ['KIVY_AUDIO'] = 'ffpyplayer' # 后导入kivy音频相关模块 from kivy.core.audio import SoundLoader
- 检查打包配置(以buildozer为例),确保ffpyplayer版本足够新,且没有裁剪MP3解码依赖:
# buildozer.spec配置项 requirements = python3,kivy,ffpyplayer>=4.5.0 android.permissions = READ_EXTERNAL_STORAGE, READ_MEDIA_AUDIO
部分默认编译的ffpyplayer安卓二进制包会裁剪非必要编码,若仍报错可重新编译ffpyplayer开启MP3解码支持。
路径校验
安卓端文件路径规则与桌面端不同,不要使用硬编码的绝对路径,需通过android.storage模块获取对应存储区域的真实路径,路径错误也会导致加载器无法识别文件格式,抛出找不到loader的警告。
内容的提问来源于stack exchange,提问作者Omid Ketabollahi
相关产品推荐
相关产品推荐

