当前位置: 首页 > news >正文

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 的团队,如果需要离线缓存视频,这个库能省不少功夫。

http://www.jsqmd.com/news/1085610/

相关文章:

  • 从特征提取到智能决策:物体识别算法的演进与应用实战
  • RVC-WebUI语音转换终极指南:3步实现AI变声的完整教程
  • 如何快速配置世界最佳AI瞄准辅助:面向游戏玩家的完整指南
  • 国密SM2:Java实战指南,从密钥对生成到数据加解密
  • 如何用Universal Pokemon Randomizer ZX创造独一无二的宝可梦冒险体验
  • 大疆T60植保无人机实战评测:多场景作业能力深度解析
  • 为什么FileBrowser能彻底改变你的文件管理工作流?
  • 5步搞定加密视频下载:res-downloader视频解密工具终极实战指南
  • QMCDecode:一键解锁QQ音乐加密文件,让你的音乐随处可听
  • 芋道源码技术架构深度解析:模块化企业级应用框架的设计哲学
  • uniCloud(一) 从零搭建:项目创建、服务空间配置与云对象初体验
  • 节安特(无功补偿设备)
  • LaTeX图表标题引用bibtex文献顺序错乱?notoccite宏包与编译策略详解
  • 双轴温控转台厂家怎么选?2026年高精度惯导测试设备采购指南
  • 【uniapp实战】集成支付宝扫码插件,打造媲美原生应用的扫码体验
  • 网站搬家不止改DNS,这3个谷歌收录操作 | 90%的人会忘,补上后收录翻倍
  • MetaQA数据集全景解析:从多跳问答到多模态评估
  • 系统化网络安全学习路径配套资源,避免盲目踩坑
  • 联想拯救者BIOS深度解锁实战:3个核心功能完整释放硬件潜能
  • HuggingFace Tokenizers 实战指南:从零构建、定制化处理到生产部署
  • 从零到一:基于`majiang-cocos-creator`快速构建你的首款跨平台麻将游戏
  • 从引脚到协议:深度解析树莓派CSI摄像头接口的硬件与信号定义
  • 二叉树核心算法实战
  • 逆向工程实战:基于HOOK与协议分析,构建微信/企业微信自动化工具
  • Xenos完整指南:3步掌握Windows进程注入终极技巧
  • AI绘画支持分层图像:从扁平输出到可编辑语义图层
  • 企业级Java开发终极加速器:芋道源码框架完整实战指南
  • 1.2.6 存储结构-磁盘管理:从单/双缓冲区到流水线,详解I/O性能优化核心计算
  • 情侣飞行棋 UniApp 源码静态托管落地指南
  • 如何用TMSpeech实现Windows离线语音转文字:免费实时字幕终极指南