媒体文件丢失修复 —— 图片和音频渲染不出来怎么办
现象:卡片渲染不出来图片/音频
你可能遇到过:
- 卡片上图片位置显示一个占位符方块(或完全空白)
- 音频标签显示
[sound:xxx.mp3]纯文本而不是播放器 - 模板里明明有
<img>但什么都没显示
通常原因是媒体文件本身不在 AnkiDroid 的 collection.media 目录里,或者字段里的引用名和文件名对不上。
修复步骤(从简单到深入)
步骤 1:检查字段里的引用名
- 在学习屏幕里卡这张出问题的卡
- 点活动栏的 ✎ 编辑按钮 打开笔记编辑界面
- 找到含有媒体引用的那个字段
- 确认:
<img src="图片文件名.jpg">里的文件名和扩展名对不对[sound:音频文件名.mp3]里的文件名对不对- 有没有中文、空格、特殊字符(可能导致文件名匹配失败)
建议:媒体文件名只用英文字母 + 数字 + 连字符/下划线。
步骤 2:跑"检查媒体"
AnkiDroid 有一个专门清理媒体的功能:
- 牌组列表 → 活动栏更多菜单(⋮)
- 选 检查媒体
- 它会扫描 collection,找出:
- 孤立媒体文件(磁盘上有、但没有任何卡片引用 → 可以安全删除)
- 缺失的媒体文件(卡片引用了、但磁盘上没有 → 需要从别处恢复)
如果显示"有 X 个缺失的媒体文件",说明磁盘上真的少了这些文件。
步骤 3:手动恢复媒体文件
方法 A:从 AnkiWeb 拉回来
如果之前同步过,AnkiWeb 上应该有这些媒体文件:
- 确保手机网络通畅
- 手动触发一次完整同步(设置 → 同步 → 强制全同步 下载方向)
方法 B:从原始 .apkg 重新导入
如果这张卡来自某个共享牌组 .apkg:
- 找回原始 .apkg 文件(网盘、朋友那、AnkiWeb 共享牌组目录再下一遍)
- 解压它(把后缀改成 .zip 解压)
- 解压出来的 media 目录里包含所有媒体文件
- 手动把缺失的那几个拷贝到 AnkiDroid 的 collection.media 目录
方法 C:从桌面版 Anki 拷贝
如果桌面版 Anki 正常(能看到这些图片/音频):
- 找到桌面版的 collection.media 目录(在你的 Anki 数据文件夹下)
- 找到缺失的文件
- USB 拷贝到手机 AnkiDroid 的 collection.media 目录
步骤 4:确认媒体目录路径
AnkiDroid 的媒体目录默认位置是:
内部存储 / Android / data / com.ichi2.anki / files / AnkiDroid / collection.media /
如果你在高级设置里改过存储路径,那媒体文件在新位置。确认当前路径:设置 → 高级 → 数据存储路径。
常见媒体丢失原因
| 原因 | 场景 | 解决 |
|---|---|---|
| 手动删了 media 目录 | 用文件管理器清理手机时不小心删了 | 从备份或 AnkiWeb 恢复 |
| 清除 App 数据 | 系统设置里"清除数据"把整个应用目录清了 | 只能从备份/AnkiWeb 恢复 |
| 媒体文件扩展名写错 | 字段里写了 photo.jpg 实际文件是 photo.JPG(大小写敏感!) | 改名统一小写 |
| 同步中断 | 媒体文件同步到一半网络断了 | 重新同步一次 |
| 切换存储路径 | 从内部存储切到外部存储时媒体文件没搬全 | 手动拷贝补全 |
| 从非标准位置导入 .apkg | 某些工具生成的 .apkg 没把媒体打包进去 | 用标准 Anki/AnkiDroid 导出的 .apkg |
防御性建议
- 不要用系统设置里的"清除数据"来清理手机存储——会把 AnkiDroid 整个应用目录(包括媒体)全清
- 定期检查媒体(每月一次)——及时清理孤立文件、发现缺失
- 重要牌组的 .apkg 和媒体文件备份到电脑/网盘
- 避免在多个设备上分别手动加媒体——统一从桌面版批量导入