youtubedl-android:把 yt-dlp 搬进安卓手机
文章目录youtubedl-android把 yt-dlp 搬进安卓手机能干什么怎么用FFmpeg 和 Aria2c基于这个库的 App需要注意的地方适合谁用youtubedl-android把 yt-dlp 搬进安卓手机yt-dlp 这个工具搞视频下载的应该都听过。它能从 YouTube、B 站、Vimeo 等几百个网站抓视频命令行里敲一行就能下。但问题是它只能在电脑上跑。想在手机上用没门。youtubedl-android 就是来解决这个问题的。它把 yt-dlp 打包成了 Android 库让你在安卓 App 里直接调用 yt-dlp 的全部功能。项目拿了 1300 多个 Star虽然不算爆火但确实是实打实解决问题的工具。能干什么说白了就是让你的安卓 App 具备视频下载能力。具体来说下载视频。给它一个链接它帮你抓下来还能指定保存路径、选择画质格式。支持进度回调下载到百分之多少、还剩几秒都能拿到。获取视频信息。不下载只拿视频的标题、时长、分辨率这些元数据。做预览功能的时候用得上。流式播放。不落盘直接拿播放链接配合 ExoPlayer 之类的播放器就能在线看。停止下载。下载到一半不想下了随时能停。这些功能都是通过 yt-dlp 的命令行参数实现的yt-dlp 支持的参数它都支持。怎么用集成方式是标准的 Gradle 依赖三行代码搞定implementation(io.github.junkfood02.youtubedl-android:library:0.18.1) implementation(io.github.junkfood02.youtubedl-android:ffmpeg:0.18.1) implementation(io.github.junkfood02.youtubedl-android:aria2c:0.18.1)aria2c 是可选的装了之后下载速度会快一些用的是多线程下载。初始化也简单在 Activity 的 onCreate 里调一下就行YoutubeDL.getInstance().init(this);下载视频的代码大概长这样File dir new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS), youtubedl-android); YoutubeDLRequest request new YoutubeDLRequest(https://vimeo.com/22439234); request.addOption(-o, dir.getAbsolutePath() /%(title)s.%(ext)s); YoutubeDL.getInstance().execute(request, (progress, etaInSeconds) - { // 这里拿到进度和剩余时间 });代码不多逻辑也清晰。yt-dlp 的可执行文件和 Python 运行时都打包在库里了不用额外配置环境。FFmpeg 和 Aria2c如果你需要音频提取、格式转换这些功能得把 FFmpeg 也初始化了。比如你想从视频里提音频或者把 WebM 转成 MP4都得靠它。Aria2c 是下载加速器。默认的下载方式是单线程装了 Aria2c 之后可以多线程下速度能快不少。初始化的时候多一行代码就行。基于这个库的 App这个库本身只是个 SDK不带界面。但已经有两个不错的 App 是基于它做的dvd 是作者自己做的视频下载 App界面简洁功能完整适合直接用。Seal 是另一个开发者做的功能更丰富界面也更好看算是把这个库的能力发挥得比较彻底。两个都是开源的可以下载体验也可以看源码学习怎么用这个库。需要注意的地方Android 10 以上系统有 Scoped Storage 限制App 只能直接访问 Download 和 Documents 目录。所以下载路径别乱设老老实实放到这两个目录下。APK 体积会比较大因为库里打包了 yt-dlp、Python、FFmpeg 这些。可以用 abi splits 按架构拆包只打包目标设备需要的 CPU 架构。复杂排版的网页、需要登录才能看的视频yt-dlp 本身就不一定能搞定这个库也一样。适合谁用想在安卓 App 里加视频下载功能的开发者。不用自己折腾 yt-dlp 的交叉编译不用处理 Python 运行时的兼容问题直接一个依赖搞定。做内容聚合、媒体播放类 App 的团队如果需要离线缓存视频这个库能省不少功夫。dlp 的交叉编译不用处理 Python 运行时的兼容问题直接一个依赖搞定。做内容聚合、媒体播放类 App 的团队如果需要离线缓存视频这个库能省不少功夫。