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

yt-dlp无法识别Buildozer依赖中声明的FFmpeg,如何解决?

解决yt-dlp在Android应用中无法找到ffmpeg的问题

1. 修正Buildozer依赖配置

Buildozer默认的ffmpeg依赖可能仅包含基础组件,无法满足yt-dlp的合并需求。修改buildozer.spec中的requirements,替换为完整的ffmpeg配方:

requirements = python3,kivy,yt_dlp,python-for-android,pillow,kivymd,ffmpeg-full

ffmpeg-full会打包完整的ffmpeg二进制工具到APK中,确保格式合并功能可用。

2. 在代码中指定ffmpeg路径

Android环境下,打包后的ffmpeg二进制文件位于应用私有目录,需要手动告诉yt-dlp它的位置:

import yt_dlp
from android import mActivity

# 获取应用文件目录的绝对路径
app_files_dir = mActivity.getFilesDir().getAbsolutePath()
ffmpeg_path = f"{app_files_dir}/ffmpeg"

# 配置yt-dlp时指定ffmpeg位置
ydl_opts = {
    'ffmpeg_location': ffmpeg_path,
    # 其他自定义配置(如format、输出路径等)
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(["目标视频URL"])

应用包名可在buildozer.spec的package.name项中查看,比如package.name = com.your.downloader,对应路径就是/data/data/com.your.downloader/files/ffmpeg。

3. 清理构建缓存并重新编译

旧的构建缓存可能导致依赖未更新,执行以下命令清理后重新构建:

buildozer android clean
buildozer android debug deploy run

4. 验证ffmpeg文件是否存在

如果问题仍存在,可添加代码检查ffmpeg是否被正确打包:

import os
print(os.path.exists(ffmpeg_path))

通过logcat查看输出,若返回False,需检查Buildozer构建日志,排查ffmpeg打包过程中的错误信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:37:07