ytdlnis

deniscerriGPL-3.0活跃维护 有专家点评

基于 yt-dlp 的 Android 音视频下载器,支持 YouTube 等站点,可下载 MP3 音频和视频,界面采用 Material Design。

Full-featured audio/video downloader for Android using yt-dlp

v1.9.1.1发布于 2026-10-19 15:02 UTC11,077star +65 / 7 天526fork同步于 2026-11-11 05:27 UTC

专家点评

上手难度:进阶更新于 2026-11-11

在 Android 手机上把 yt-dlp 包装成可日常使用的下载器,替代桌面端命令行流程

适用场景

  • 手机端临时抓取:分享链接后从底部卡片直接下载,不用切到电脑开终端,比在 Termux 里手敲 yt-dlp 少一层环境配置
  • 离线补档:播放列表批量入队、定时下载,适合把整季内容在 Wi-Fi 下挂机拉完再带走,比单条手动下载省事
  • 下载后即时处理:按章节或时间戳裁剪、嵌字幕,省掉导出到桌面再用 FFmpeg 剪一遍的往返
  • 需要非标准参数时:内置 bash 终端可直接调 yt-dlp/Python/FFmpeg,比纯 GUI 下载器多一条绕开界面限制的路径

踩坑

  • 下载失败类问题在 issue 里反复出现(ERROR DOWNLOAD、can't download any video、download failed 需重载页面),撞上的时机通常是站点侧改动或 yt-dlp 版本落后,而不是应用本身配置错
  • Python、FFmpeg、JS 运行时是插件形式单独安装和升级的,首次装完 APK 不等于能跑,缺组件时表现为下载或合并阶段失败
  • 私密/会员内容依赖应用内浏览器登录拿 cookies,issue 里有 cookies 获取无效的反馈,说明这条链路不是填个账号就稳
  • 只从官方 releases 或 F-Droid 装,第三方分发的签名可能被改,出问题时无法判断是应用还是包的问题

同类对比

桌面或服务器场景直接用 yt-dlp 本体加脚本更可控;需要跨平台 GUI 而非 Android 独占时看 Seal 一类的前端。

怎么上手

由 README 提炼,执行前请确认
从 https://github.com/deniscerri/ytdlnis/releases/latest 下载 APK 安装;或从 F-Droid 安装 com.deniscerri.ytdl
硬件要求按 README 说明

运行于 Android 7.0 及以上设备;README 未提及显存、CPU 或 GPU 厂商型号要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

基于 yt-dlp 的 Android 音视频下载器,支持千余网站并内置剪辑与终端

基于 yt-dlp 的 Android 音视频下载器,支持 YouTube 等站点,可下载 MP3 音频和视频,界面采用 Material Design。

核心能力

  • 用 yt-dlp 下载 1000+ 网站的音视频或执行自定义命令
  • 分享链接即可从底部卡片直接下载,无需打开应用
  • 支持播放列表批量编辑、队列、定时与多任务并行下载
  • 按时间戳或章节剪切、裁剪视频并嵌入字幕元数据
  • 内置 bash 终端,可直接使用 yt-dlp、Python、FFmpeg

容易踩的坑

仅上述官方渠道可信,第三方分发可能修改签名;Python、FFmpeg、JS 运行时等组件需通过插件单独安装或升级;下载私密或会员内容需在应用内浏览器登录以提供 cookies。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.9.1.1
  1. nightly-20261109-betaNightly 2026-11-09pre-release2026-11-09 · 2026-11-09 02:13 UTC
    查看更新说明

    Automated nightly build of main at 8a457b5. May be unstable.

    Commits

    • remember last used download paths in the download bottom sheet for quick access (8a457b5d)
    • use yt-dlp downloader instead of urllib to fetch lyrics (68441654)
    • remove cookie file builder (b53def10)
    • remove test (93211c76)
    • refacting and fix incognito cookies not being saved (c9b1f2a1)
    • refactoring (57d20f90)
    • Translated using Weblate (Portuguese (Brazil)) (9af3cbb2)
    • Translated using Weblate (Italian) (6746ca84)
    • Translated using Weblate (Bengali (India)) (b2e9c16b)
    • Translated using Weblate (Portuguese) (0992fbb1)
    • Translated using Weblate (Georgian) (62190feb)
    • Translated using Weblate (Hebrew) (a72a006a)
    • Translated using Weblate (Chinese (Simplified Han script)) (1e77904e)
    • Translated using Weblate (Indonesian) (ad2a650b)
    • fix(search): match english title/summary and preference key in SettingsActivity (1d70e7c5)
    • feat: support English query fallback in multilingual settings search (2131103e)
    • fix: build the Netscape cookie file from individual cookie lines (bcdd8723)

    Full Changelog: https://github.com/deniscerri/ytdlnis/compare/nightly...8a457b5

  2. nightly-20261108-betaNightly 2026-11-08pre-release2026-11-08 · 2026-11-08 02:12 UTC
    查看更新说明

    Automated nightly build of main at 9a7da60. May be unstable.

    Commits

    • changes on how new versions are checked, fix conflicts with nightly (9a7da606)
    • Implement full metadata customization for audio and video downloads (1e416955)
    • make history sort by time instead of id so restore still sorts properly (7b2b34b6)

    Full Changelog: https://github.com/deniscerri/ytdlnis/compare/nightly...9a7da60

  3. nightly-20261104Nightly 2026-11-04pre-release2026-11-04 · 2026-11-04 02:12 UTC
    查看更新说明

    Automated nightly build of main at 1278ff0. May be unstable.

    Commits

    • fix even more broken strings (1278ff0d)
    • fix strings (47bde13a)
    • Translated using Weblate (Russian) (f459099c)
    • Translated using Weblate (Polish) (0ae96aff)
    • Translated using Weblate (Albanian) (f1019abc)
    • Translated using Weblate (Korean) (70874c30)
    • Translated using Weblate (Chinese (Simplified Han script)) (5c5f6be6)
    • Translated using Weblate (Sinhala) (c8c0300e)
    • Translated using Weblate (Mara) (44c6ee21)
    • Translated using Weblate (Arabic (Algerian)) (dfbade2c)
    • Translated using Weblate (Estonian) (7befab3d)
    • Translated using Weblate (Marathi) (0e8aa712)
    • Translated using Weblate (Thai (Northeastern)) (d3f98815)
    • Translated using Weblate (Arabic (Egyptian)) (168f8395)
    • Translated using Weblate (Swahili) (0ddcd8c8)
    • Translated using Weblate (Kabyle) (b0b4d12c)
    • Translated using Weblate (Slovenian) (97c662a1)
    • Translated using Weblate (Odia) (3673721b)
    • Translated using Weblate (Finnish) (9c7212eb)
    • Translated using Weblate (Swedish) (c6548bd5)
    • Translated using Weblate (Bulgarian) (bcaca1b1)
    • Translated using Weblate (Macedonian) (71a553d4)
    • Translated using Weblate (Filipino) (0a58e9eb)
    • Translated using Weblate (Kurdish (Sorani)) (d7a2d354)
    • Translated using Weblate (Dutch) (af0249b8)
    • Translated using Weblate (Serbian) (bb8f4fdf)
    • Translated using Weblate (Hungarian) (dc070db7)
    • Translated using Weblate (Hungarian) (9475f20a)
    • Translated using Weblate (Slovak) (b50c59a2)
    • Translated using Weblate (Sanskrit) (46043ab2)
    • Translated using Weblate (Czech) (ad5671a8)
    • Translated using Weblate (Hebrew) (250f28da)
    • Translated using Weblate (Hebrew) (e921bd6d)
    • Translated using Weblate (Bengali (India)) (de8ef7be)
    • Translated using Weblate (Javanese) (c6a38f52)
    • Translated using Weblate (Punjabi) (bc658fa9)
    • Translated using Weblate (Thai) (9d328102)
    • Translated using Weblate (Chinese (Traditional Han script)) (de9ccd8d)
    • Translated using Weblate (Greek) (f6540017)
    • Translated using Weblate (Portuguese) (ce3a49d5)
    • Translated using Weblate (Norwegian Nynorsk) (94ca164d)
    • Translated using Weblate (Malay) (46a7bddc)
    • Translated using Weblate (Korean) (75006914)
    • Translated using Weblate (Persian) (abedbe94)
    • Translated using Weblate (Hindi) (fa13ab25)
    • Translated using Weblate (Portuguese (Brazil)) (aaf80dd0)
    • Translated using Weblate (Portuguese (Brazil)) (084c3ff0)
    • Translated using Weblate (Chinese (Simplified Han script)) (f3fd10bc)
    • Translated using Weblate (Romanian) (56ef989f)
    • Translated using Weblate (Tamil) (3a85c84d)
    • Translated using Weblate (Ukrainian) (c3290e1b)
    • Translated using Weblate (Latvian) (1004ab3d)
    • Translated using Weblate (Spanish) (02d25346)
    • Translated using Weblate (Bengali) (4bdb3c08)
    • Translated using Weblate (Bengali) (e8f0fd0c)
    • Translated using Weblate (Vietnamese) (fc33fa50)
    • Translated using Weblate (Azerbaijani) (c54bc97a)
    • Translated using Weblate (Azerbaijani) (e2e83146)
    • Translated using Weblate (Italian) (77f5281a)
    • Translated using Weblate (Arabic) (029a9005)
    • Translated using Weblate (Indonesian) (261d19d0)
    • Translated using Weblate (Russian) (458ced28)
    • Translated using Weblate (Polish) (6da22ca0)
    • Translated using Weblate (Japanese) (e6d54e6e)
    • Translated using Weblate (Turkish) (0c2a6a8e)
    • Translated using Weblate (French) (bc449269)
    • Translated using Weblate (German) (a2fb0233)
    • Translated using Weblate (Norwegian Bokmål) (1fa69ba1)
    • Translated using Weblate (Albanian) (c4a491a3)
    • Translated using Weblate (Hebrew) (750e6c9b)
    • Translated using Weblate (Greek) (2fe16415)
    • Translated using Weblate (Portuguese (Brazil)) (dc6a1062)
    • Translated using Weblate (Chinese (Simplified Han script)) (90c7aa33)
    • Translated using Weblate (Bengali) (b017abee)
    • Translated using Weblate (Azerbaijani) (77c7631f)
    • Translated using Weblate (Indonesian) (e02a4290)
    • Translated using Weblate (English) (115b68ec)

    Full Changelog: https://github.com/denisce

  4. v1.9.1.11.9.1.1最新正式版2026-10-19 · 2026-10-19 15:02 UTC

    Hotfix

    • Fix bottom navigation bar hiding the More button, sorry
    • Register application in lrclib lyrics api so its not throttled, also added retry policy
    • Made restore settings only accept json files

    Autogenerated changes

    Full Changelog: https://github.com/deniscerri/ytdlnis/compare/v1.9.1...v1.9.1.1

  5. v1.9.11.9.12026-10-18 · 2026-10-18 15:03 UTC
    查看更新说明

    What's Changed

    Embed Lyrics

    Embed lyrics for audio downloads. New section where u can search lyrics synced or not synced from lrclib.net. Automatic playback of the audio and the lyrics. You can also adjust the timing if its off. You can also save the lyrics .lrc file as separate. This was long ago in my todo.

    Burn Subtitles

    Built internal yt-dlp plugin that burns subtitles for video downloads. Needs save subtitles and/or save automatic subtitles to be checked.

    Failed data fetches in home screen

    App will store all queries or urls it failed to query so u can retry them again, or just jump straight to the download card without fetching data.

    Add welcome screen

    Asks necessary permissions, tells user to read the guide. also u can restore backups straight from it. If backup had custom download paths it also asks to regrant permission for them so downloads won't fail. By the way ytdlnis.org is now full with guides on how to use the app.

    Temporary files settings screen

    Temporary files are now clearly laid out and you can delete them separately or delete all. Now separated as

    • unfinished downloads
    • info jsons
    • yt-dlp cache
    • temporary configurations
    • downloaded apks

    Other stuff

    • Bash shell in Terminal, fix text wrapping etc
    • New download queue design
    • Make app upload files to the cloud if download path is an external provider (like nextcloud)
    • Add translator credits in the settings
    • Add incognito icon when generating cookies bottom sheet
    • reworked setting screen for updating yt-dlp and app
    • Increase notification update interval for live notifications
    • Inject cookies to newpipe extractor so it data fetches private videos
    • Long pressing update formats ignores info json, also when toggling format source
    • Add select range dialog in the home screen
    • Add dialog choosing which items to share / open in the history fragment
    • fix The textfields for cuts uses the regular keyboard instead of numeral one
    • fix Pressing crop when the item data is not fetched and you press update, it opens the cut sheet instead of crop
    • Make app properly cancel yt-dlp jobs like update formats, data fetching
    • add sort by Author, Duration, Title, and Date in download multiple bottom sheet
    • add independent preferred format size for audio, thanks @phoenix14
    • configurable history card quick action thanks @pheonix14
    • add ffmpeg preset preference for app's internal plugins like burnsubs, compatble recorder
    • add copy urls in home screen top menu
    • add search results as backup category
    • make auto start of bgutils server in main activity instead of app so other apps wont autostart it
    • add webview to logs so it handles bigger logs
    • add separate process for incognito mode in webview, also now login persists and still generates proper cookies so regenerating is quick and easy
    • add color highlighter to command templates screens
    • keep screen awake when download queue has items shown
    • Copy Links of Multiple item in Download History screen
    • Add setting toggle to disable automatic clipboard check on app launch
    • Made compatible mode toggle as an internal plugin for better conversion
    • Auto update yt-dlp in the update checker background work if user checked it
    • Add terminal command history tracking
    • Add filesize approx identifier in formats with ~ in front of filesize
    • Rework app locales so now it shows all locales
    • Fix Configuration backup ignores selected SD card directory and crashes
    • Fix Previously paused downloads automatically start downloading after a new download finishes. Now paused items stay there until u press resume all
    • and other small stuff idk

    Autogenerated changes

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    GitHub Releases F-Droid IzzyOnDroid repository Uptodown

    CI Preview release Downloads Translation status community community community website GitHub Sponsor

    Only the links above are the only trusted sources of YTDLnis. Everything else is not related to me.

    💡 Features

    ⬇️ Downloading

    • Download audio, video or run custom yt-dlp commands on 1000+ websites
    • Share a link to the app and download straight from the bottom card, no need to open the app
    • Quick download mode to start instantly without waiting for data to load
    • Playlists and bulk downloads: edit every item separately or bulk edit type, format, path and filename template for all of them, sort by author, duration, title or date
    • Feed a .txt file of links, playlists or search queries and the app processes them all
    • Queue, schedule by date and time, and run multiple downloads at the same time
    • Pause / resume, re-download failed or cancelled items with swipe gestures
    • Observe sources: watch playlists and channels and automatically download new uploads, with optional sync
    • Duplicate checking, failed data fetches are saved so you can retry them later
    • Uploads to cloud providers (e.g. Nextcloud) when your download path is an external storage provider
    • Android 16 live notifications for every running download

    ✂️ Editing your files

    • Cut videos by timestamps or chapters with unlimited cuts, and optionally merge the cuts into one file
    • Crop videos right from the download card
    • Split items into separate files by chapters
    • Remove or mark SponsorBlock segments as chapters
    • Embed subtitles, metadata, chapters and thumbnails, or edit the title and author
    • Burn subtitles into the video
    • Search synced or plain lyrics from lrclib.net, preview and adjust their timing, then embed them or save them as .lrc
    • Compatible mode to re-encode into widely supported formats
    • Filename templates with live preview, or simple subfolders by playlist, website or download type

    🧑‍💻 For power users

    • Full terminal with bash, where yt-dlp, Python, pip, FFmpeg and the other bundled tools are ready to use
    • Command templates with syntax highlighting that you can back up and share
    • Cookies support: log in through the built-in browser and download private or premium content
    • Generate YouTube PO tokens with the built-in BGUtils provider or inside the app's webview
    • Choose NewPipe or yt-dlp as the data fetching extractor
    • Python with curl-cffi bundled, plus JS runtimes (QuickJS, Deno, NodeJS) for website challenges
    • Custom yt-dlp sources and automatic yt-dlp updates
    • Intents for automation with apps like Tasker

    🎨 App

    • Material You design with theming options and a customizable bottom navigation
    • Incognito mode so no history or logs are saved
    • Download logs, search history and a detailed download history with different card layouts
    • Backup and restore almost everything, right from the welcome screen too
    • Files manager to clear caches and leftovers

    🧩 Plugin Support

    YTDLnis orchestrates plugins so users can freely upgrade and downgrade components such as:

    • Python
    • JS Runtimes (NodeJS, Deno)
    • FFmpeg
    • Aria2c

    You can install ytdlnis packages from this repository ytdlnis-packages or through the updating section in the application. For more information refer to the repo's README.

    📲 Screenshots

    💬 Contact

    Join our Discord or Telegram channel for announcements, discussion and releases.

    😇 Contributing

    Please read the contributing section if you would like to contribute.

    📝 Help translate on Weblate

    🔑 Connect with third-party apps using the package name

    The app's package name is "com.deniscerri.ytdl".

    🔍 Verify application signature

    The app should contain the signature below. The github workflow action uses it, and the releases are based on it to make it a reproducible build. If the signature is different, your third party distributor has modified the application. Please use the app with the original signature.

    Signer #1 certificate DN: CN=Denis Cerri, OU=Personal, O=Personal, L=Albania, ST=Albania, C=AL
    Signer #1 certificate SHA-256 digest: 263645cb5272eb290759fe1f59149ae24df6ce171e9f6666eead981d3fc64c95
    Signer #1 certificate SHA-1 digest: 2fec9c2fcef68d29a60857e185c795fec5f56fb6
    Signer #1 certificate MD5 digest: 429d0c6315d2f99650f66cc44cf5a794
    

    🤖 Connect with third-party apps using intents

    You can use intents to push commands to the app to run downloads without user interaction. Accepted variables:

    TYPE -> it can be: audio,video,command BACKGROUND -> it can be: true,false. If its true the app won't show the download card no matter what and run the download in the background

    An example of downloading an audio item in the background with Tasker

    1. Create Send Intent task
    2. Action: android.intent.action.SEND
    3. Cat: Default
    4. Mime Type: text/*
    5. Extra: android.intent.extra.TEXT:url (instead of "url" write the URL of the video you want to download)
    6. Extra: TYPE:audio
    7. Extra: BACKGROUND:true

    📄 License

    GNU GPL v3.0

    Except for the source code licensed under the GPLv3 license, all other parties are prohibited from using the "YTDLnis" name as a downloader app, and the same is true for its derivatives. Derivatives include but are not limited to forks and unofficial builds.

    😁 Donate

    🙏 Thanks

    • decipher3114 for the app's icon
    • dvd for being an example youtubedl-android implementation
    • seal for certain design elements and features I wanted to have in this app when I started developing it
    • youtubedl-android for porting yt-dlp to Android
    • yt-dlp and its contributors for making this tool possible. Without it this app wouldn't exist

    and to a lot of other people, such as contributors.