☰
Gamdl 教程:4 步下载 Apple Music 无损歌曲与 4K 音乐视频的完整指南
2026/10/21 1:44:20 网站建设 项目流程

Gamdl 教程:4 步下载 Apple Music 无损歌曲与 4K 音乐视频的完整指南

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

订阅到期后,Apple Music 里的歌无法再以原始音质保存,这是许多付费用户共同的痛点。Gamdl 是一款命令行 Apple Music 下载工具,它直接从官方接口拉取歌曲、音乐视频与动态视频,最高支持 ALAC 24-bit/192kHz 无损音频与 2160p 4K 音乐视频,全流程在本机完成。

能力总览:Gamdl 能下载什么,一张表说清

内容对象输入来源输出上限替代的旧做法
歌曲曲库 / 个人资料库ALAC 最高 24-bit/192kHz、AAC 256kbps、Dolby Atmos 768kbps播放端重录,音质不可控
音乐视频曲库 / 个人资料库2160p(仅 H.265)录屏截取,带压缩与水印风险
动态视频(Post Videos)艺术家主页1080p + AAC 256kbps手工抓取页面流
同步歌词随歌曲一并获取LRC / SRT / TTML 三种格式逐行手工打点
元数据与封面随媒体自动写入全套 MP4 标签,封面默认 1200px 可调手工补标签
批量对象艺术家 / 专辑 / 播放列表链接艺术家内容自动选单、URL 文件逐行读取逐个复制分享链接

下载完成后即成品:标签、封面、同步歌词一次写齐,主流播放器可直接播放。批量任务还会把媒体 ID 记入数据库,重复运行时自动跳过已完成项。

工程设计:可靠性从哪里来

三层管线,各管一段

代码按职责切成三层:gamdl/api/负责 Apple Music API 请求、订阅校验与授权交换;gamdl/interface/负责元数据解析、码流挑选与 DRM 密钥获取;gamdl/downloader/负责下载、解密与标签写入。三层解耦意味着可以逐层阅读,也可以单独替换。API 请求与授权交换的实现里能看到 get_song、get_webplayback、get_license_exchange 等完整方法。

Rust 引擎承担重负载

安装时 gamdl 会把 gamdl/downloader/ammuxer/ 目录下的 Rust 源码编译为原生扩展gamdl._ammuxer,承担 FairPlay/CBCS 解密、MP4/M4A 文件写入与音视频合流。这类连续大块操作在进程内完成,相当于在 Python 里装了一座解密车间,避免了额外的临时文件往返;CLI、调度与元数据仍归 Python 管。

双 DRM 后端,4K 有明确设备要求

默认 Widevine 后端使用内置 WVD 设备文件;--drm-backend playready切换后端后需配合--prd-path提供设备文件。4K 音乐视频则硬性要求 Widevine L1 的.wvd或 PlayReady SL3000(SL3K)的.prd设备。条件写在明处,不存在"碰运气"环节。

上手:4 步下载第一首 Apple Music 歌曲

第 1 步:安装

pip install gamdl

要求 Python 3.10 及以上。跑gamdl --help能看到完整参数表,即表示安装成功。

第 2 步:准备 cookies

在浏览器登录 Apple Music 网页端后,用 Cookie 导出扩展导出 Netscape 格式文件,命名为cookies.txt放进工作目录(也可用-c指向自定义路径)。确认方式:文件是纯文本、包含多行 Cookie 记录。

第 3 步:下载单曲

gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1624945511?i=1624945512"

文件落到./Apple Music,按"艺术家/专辑"归类,文件名带曲目序号。链接若是专辑或艺术家页,会弹出交互式选单:方向键移动、空格选中、Ctrl+A 全选、回车确认。

第 4 步:核对结果

本地播放器能播放该文件,艺术家、专辑、封面标签齐全,同目录有同步歌词文件。同时会自动生成配置文件:Linux 在~/.gamdl/config.ini,Windows 在%USERPROFILE%\.gamdl\config.ini,记录全部参数默认值,命令行优先于配置文件。

🎯 进阶:4 个进阶使用目标

目标一:拿到无损与空间音频

gamdl "<歌曲链接>" --song-codec-priority "alac,aac-web" --use-wrapper

默认aac-web是 AAC 256kbps / 44.1kHz,日常听感足够。alac是无损路线,取舍在于它受 API 限制,通常需要并行运行 Wrapper v2 服务,配合--use-wrapper使用(wrapper 默认http://127.0.0.1,解密端口 10020);不搭 wrapper 时纯命令行跑 alac 大概率失败。想让支持空间音频的曲目下载 Dolby Atmos 版本,把atmos(768kbps)加进优先级列表即可。

目标二:4K 音乐视频下载

gamdl "<音乐视频链接>" --music-video-resolution 2160p --music-video-codec-priority h265 --music-video-remux-format m4v

关键取舍:H.264 最高 1080p,1440p/2160p 只存在于 H.265 码流,所以想要高分辨率必须把h265放进--music-video-codec-priority。另需 Widevine L1.wvd或 PlayReady SL3000.prd设备,用--wvd-path或--prd-path指定;若设备解不动 H.265,把优先级写成h264,h265,实际得到 1080p 的 H.264 文件。

目标三:艺术家全集批量下载,重复不冗余

gamdl "<艺术家链接>" --artist-auto-select "main-albums,singles-eps" --database-path "./history.db"

--artist-auto-select跳过交互式选单直接开下,可选main-albums、live-albums、top-songs、music-videos等。--database-path指向一个 SQLite 文件,记录已下载媒体,二次运行自动跳过。手里已有链接清单时,逐行写入文本文件后用-r一次读入。

目标四:文件结构重排与标签定制

gamdl "<链接>" --album-folder-template "{album_artist}/{date:%Y}/{album}" --single-disc-file-template "{track:02d} {title}" --exclude-tags "comment,genre_id" -s --cover-format png --cover-size 2000

模板变量含{album}、{date}等,date支持 strftime 写法(如{date:%Y})。--exclude-tags控制不写入哪些标签(all跳过全部打标);-s另存封面为独立文件,格式支持 jpg / png / raw(raw 是艺术家原始格式,此时不嵌入文件)。

常见问题:6 个高频报错与排查思路

问:命令昨天还能用,今天请求不到数据?原因:cookies.txt过期,登录态失效。解法:重新登录网页端,再次导出 Netscape 格式 Cookie 覆盖旧文件,工具本身不用重装。

问:其他编码都成功,为什么 ALAC 会失败?原因:ALAC 码流受 API 限制,需要 Wrapper v2 服务配合。解法:先启动 wrapper,再带--use-wrapper运行;暂时不想搭服务就接受默认aac-web(256kbps)。

问:指定 2160p,实际文件却是 1080p?原因:4K 码流只在 H.265 里提供,H.264 上限 1080p。解法:--music-video-codec-priority h265,并确认设备文件满足 L1 / SL3000 要求。

问:同步歌词写进了文件,播放器歌词面板却不显示?原因:ttml是 Apple 原生格式,多数播放器不支持。解法:默认lrc兼容性最广;追求时间轴更精确时切srt(--synced-lyrics-format)。

问:批量任务跑到某个条目就中断?原因:单个异常会打断整个队列。解法:加--no-exceptions让失败继续,再配合--log-level DEBUG --log-file ./gamdl.log事后定位是哪个文件。

问:下载速度不理想?原因:默认下载模式是 ytdlp。解法:--download-mode nm3u8dlre切换引擎,--nm3u8dlre-path指定可执行文件;N_m3u8DL-RE 依赖 FFmpeg,不在 PATH 时还要设--ffmpeg-path。

适合谁:3 类用户画像

无损归档用户:长期订阅 Apple Music,担心退订后曲库清空。用--song-codec-priority "alac,aac-web"加 wrapper 把专辑归档到 NAS,标签封面齐全,导入即播放。

视频创作者:需要 4K MV 素材做参考或剪辑。固定--music-video-resolution 2160p --music-video-codec-priority h265,H.265 在相近画质下码率更低,长期存放更省盘。

Python 开发者:想把下载能力嵌进自有系统。AppleMusicApi.create_from_netscape_cookies建立会话,downloader.get_download_item_from_url(url)返回异步生成器,URL 清单天然适配批处理;完整示例见 README 的 Embedding 章节。

不适合谁:没有有效 Apple Music 订阅的用户——工具启动前会校验订阅状态,无订阅拿不到码流;想要图形界面的人也要知道它是纯命令行交互。

行动清单:看完立刻可以做的 3 件事 📌

  1. 安装并导出 cookies,跑通一条歌曲链接,在本地播放器核对标签、封面与歌词三件套。
  2. 用一个真实艺术家页验证批量流程:--artist-auto-select "main-albums,singles-eps"加--database-path,运行两遍确认去重生效。
  3. 读源码:git clone https://gitcode.com/GitHub_Trending/ga/gamdl获取完整代码,从 CLI 入口与参数定义 出发,沿 接口层解析与密钥获取、下载器基类与标签写入,最后读gamdl/downloader/ammuxer/下的 Rust 解密引擎,即可看完整条"请求→解析→解密→封装"链路。

【免费下载链接】gamdlA command-line app for downloading Apple Music songs, music videos and post videos.项目地址: https://gitcode.com/GitHub_Trending/ga/gamdl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询