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

基于Kivy开发的YouTube转MP3 APK应用无法访问网络求助

YouTube转MP3下载器APK打包后无法获取视频流问题

我用Python的Kivy模块开发了一款YouTube转MP3下载器,在VS中运行代码时完全正常,但打包成APK后出现问题:粘贴链接点击“提交”按钮后无法下载视频。

通过添加try/except语句定位到错误出在第70行——应用无法获取视频的可用流。在VS中测试时,电脑断网情况下这行也会报错,因此推测问题是应用无法访问网络。我已取消buildozer.spec文件中授予应用网络权限的行的注释,但问题依旧,仍显示该行引发错误。

包含问题代码的片段如下:

try: # 查找并选择流
    vid = yt.streams.filter(only_audio=True).first() # 这里出问题
    try:# 下载视频
        output_file = vid.download(r'''Internal storage/Download''')
        try: # 修改扩展名
            base,ext=os.path.splitext(output_file)
            new_file = base+'.mp3'
            os.rename(output_file, new_file)
            self.verification.text=f'下载成功,新文件路径: {new_file}'
        except:
            self.verification.text="下载失败;os模块相关问题"
    except:
        self.verification.text="下载失败;无法下载视频"
except:
    self.verification.text="下载失败,无法选择流"

排查与解决建议

  • 确认buildozer.spec权限配置
    确保android.permissions同时包含INTERNET和ACCESS_NETWORK_STATE,示例配置:

    android.permissions = INTERNET, ACCESS_NETWORK_STATE
    

    修改配置后必须重新打包,旧APK不会自动更新权限。

  • 修正存储路径与权限
    硬编码Internal storage/Download在Android环境下可能路径错误或缺少权限。需要添加WRITE_EXTERNAL_STORAGE(Android 10及以下)或MANAGE_EXTERNAL_STORAGE(Android 11+)权限,同时改用系统提供的公共下载目录路径,避免硬编码。

  • 更换YouTube下载库
    若使用的是已停止维护的youtube-dl,换成yt-dlp试试,它对YouTube的API支持更稳定。在buildozer.spec的requirements中指定:

    requirements = python3,kivy,yt-dlp
    
  • 捕获详细错误日志
    把模糊的异常提示改成捕获具体异常并输出日志,比如:

    except Exception as e:
        self.verification.text=f"无法选择流: {str(e)}"
        # 用Android日志工具输出详细信息
        from android.util import Log
        Log.d("YTDL_ERROR", str(e))
    

    之后通过adb logcat查看具体错误原因,比如网络请求被拦截、API访问受限等。

  • 检查设备网络环境
    确认设备能正常访问YouTube,排除地区限制或代理导致的网络问题。

内容的提问来源于stack exchange,提问作者JC CLOUET

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:15:44