seal 中文文档 下载 App

mutagen 元数据引擎 — Seal 如何在本地写入音频文件标签

mutagen 是什么

mutagen 是 Python 生态里最成熟的音频文件元数据读写库之一。它是 yt-dlp 默认集成的元数据处理工具,Seal 继承了这个集成。

mutagen 支持几乎所有主流音频格式的标签规范:

格式标签规范支持程度
MP3ID3v2.4完整
AAC/M4AMP4 原子标签完整
FLACVorbis Comment完整
OpusOgg Vorbis完整
WAVRIFF INFO基础
WMAASF基础
其他...大多支持

为什么 Seal 选 mutagen

三个原因:

1. 与 yt-dlp 原生集成

yt-dlp 自己就用 mutagen 处理元数据——Seal 用 youtubedl-android 把 yt-dlp 和 mutagen 一起打包进 APK。不需要额外引入其他元数据库,减少依赖体积和兼容性风险。

2. 纯 Python,安卓可移植

mutagen 是纯 Python 实现(不需要 C 扩展),所以能在安卓设备上直接通过 Python 解释器运行。这比用 Kotlin/Java 重写一套元数据逻辑(可能不完整)更可靠。

3. 覆盖格式广

大多数手机端下载器要么不做元数据写入,要么只支持 MP3——mutagen 一次覆盖 AAC/MP3/FLAC/Opus 等几乎所有主流格式,Seal 能保证无论下载哪种格式音频都能正确写标签。

Seal 调用 mutagen 的时机

下载完成后(aria2c 把字节抓完、ffmpeg 合并流),Seal 调用 mutagen 依次写入:

  1. 视频标题 → 音频文件的 Title 字段
  2. 上传者/频道名 → Artist 字段
  3. 播放列表标题 → Album 字段(v1.12.0 起)
  4. 封面图(视频缩略图)→ AlbumArt/AlbumCover 字段

v1.10.0 起"强制内嵌元数据"变成可选——关掉后 Seal 还是会写标题和艺术家,只是不嵌封面图。

元数据写入的常见问题

问题原因
播放器不显示封面播放器本身不支持封面显示、或封面格式不匹配(mutagen 会尽量写通用格式)
中文标题乱码极少数播放器对 Unicode 标签支持不好,不是 Seal 的问题
标签写入失败权限不足(下载目录只读)或文件被其他应用锁定

想了解 Seal 的 UI 技术栈?跳到 Kotlin + Jetpack Compose。