使用 TagLib 保存时 Explorer MP3 缩略图不更新#
Explorer MP3 thumbnail not updating when saved with TagLib#
我正在使用 TagLib#
编辑一些 MP3
标签。要为曲目设置专辑封面,我使用以下简单的行:
file.Tag.Pictures = new TagLib.IPicture[] { new TagLib.Picture(filepath) };
它可以正常工作并按预期设置图像。当我保存文件、关闭程序并再次加载文件时,我正确地看到了我指定的图像。很明显,它把图像写入了文件。
但是当我查看 Windows Explorer
中的文件时,它没有显示我设置的正确图标,而是显示默认图标。只有当我在 Tagscan
中重新保存文件时,图标才会更新,然后从我的程序修改图像开始更改图标以匹配保存的内容。
这是什么问题?如何让我的图像更改显示为缩略图而无需使用其他程序?
谢谢!
编辑: 这里有一些在此过程中发现的更多信息。我在普通 MP3
中保存了一张图像,并在 Notepad
中查看了它,然后用 Tagscan
重新保存了文件并再次查看有什么变化。这是我找到的数据。
- 没有图像,未动过:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 test nameTALB test albumTPE2 test artistTCOM test artistTPE1 test artistPRIV SampleStart 0 0 : 0 0 : 0 0
- 用我的程序添加的图像:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 test nameTALB test albumTPE2 test artistTCOM test artistTPE1 test artistPRIV SampleStart 0 0 : 0 0 : 0 0 APIC Q image/png ‰PNG IHDR óÿa ‹IDATxœcÀ0¹õ¿yz÷ëÜ~8‰°jxõ‚ø7.ÿŸ;ÿðÿØþÍÿ£{7ÿÏž{ŒAâ¦é½Ä Ò3 †Aâæ™D ²=°y%ŠÈ® h H¡¤{&Ã4ÂøD RÓhœØÆ0~ëj€ÁlDÇD¹ d ÌFd'Ê# 1šY¬Œß IEND®B‚
- 使用 Tagscan 重新保存图像的文件:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 TXXX % ÿþm a j o r _ b r a n d ÿþi s o m TXXX ' ÿþm i n o r _ v e r s i o n ÿþ5 1 2 TXXX A ÿþc o m p a t i b l e _ b r a n d s ÿþi s o m i s o 2 m p 4 1 TSSE ÿþL a v f 5 7 . 5 1 . 1 0 2 TIT2 ÿþt e s t n a m e TALB ÿþt e s t a l b u m TPE2 ÿþt e s t a r t i s t TCOM ÿþt e s t a r t i s t TPE1 ÿþt e s t a r t i s t PRIV SampleStart 0 0 : 0 0 : 0 0 APIC Ñ image/png ‰PNG IHDR óÿa ‹IDATxœcÀ0¹õ¿yz÷ëÜ~8‰°jxõ‚ø7.ÿŸ;ÿðÿØþÍÿ£{7ÿÏž{ŒAâ¦é½Ä Ò3 †Aâæ™D ²=°y%ŠÈ® h H¡¤{&Ã4ÂøD RÓhœØÆ0~ëj€ÁlDÇD¹ d ÌFd'Ê# 1šY¬Œß IEND®B‚
唯一值得注意的变化是所有东西都……间隔开来了。我意识到在记事本中翻阅歌曲数据可能不是查找信息的最佳方式,但这是我所拥有的最好的方式。
确保您使用 ID3 版本 <= 2.3 进行保存。
Windows 资源管理器显示与 2.4 标签的 .mp3
扩展关联的默认文件图标。
ID3v2.4
,虽然现在已经存在了一段时间,但并不是最兼容的 ID3 版本。 Windows Explorer 和 Groove Music 都无法识别使用该版本保存的标签。我觉得 Google Play Music 也有这个问题。
因此,最安全的做法是使用 ID3v2.3
.
存储标签
我正在使用 TagLib#
编辑一些 MP3
标签。要为曲目设置专辑封面,我使用以下简单的行:
file.Tag.Pictures = new TagLib.IPicture[] { new TagLib.Picture(filepath) };
它可以正常工作并按预期设置图像。当我保存文件、关闭程序并再次加载文件时,我正确地看到了我指定的图像。很明显,它把图像写入了文件。
但是当我查看 Windows Explorer
中的文件时,它没有显示我设置的正确图标,而是显示默认图标。只有当我在 Tagscan
中重新保存文件时,图标才会更新,然后从我的程序修改图像开始更改图标以匹配保存的内容。
这是什么问题?如何让我的图像更改显示为缩略图而无需使用其他程序?
谢谢!
编辑: 这里有一些在此过程中发现的更多信息。我在普通 MP3
中保存了一张图像,并在 Notepad
中查看了它,然后用 Tagscan
重新保存了文件并再次查看有什么变化。这是我找到的数据。
- 没有图像,未动过:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 test nameTALB test albumTPE2 test artistTCOM test artistTPE1 test artistPRIV SampleStart 0 0 : 0 0 : 0 0
- 用我的程序添加的图像:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 test nameTALB test albumTPE2 test artistTCOM test artistTPE1 test artistPRIV SampleStart 0 0 : 0 0 : 0 0 APIC Q image/png ‰PNG IHDR óÿa ‹IDATxœcÀ0¹õ¿yz÷ëÜ~8‰°jxõ‚ø7.ÿŸ;ÿðÿØþÍÿ£{7ÿÏž{ŒAâ¦é½Ä Ò3 †Aâæ™D ²=°y%ŠÈ® h H¡¤{&Ã4ÂøD RÓhœØÆ0~ëj€ÁlDÇD¹ d ÌFd'Ê# 1šY¬Œß IEND®B‚
- 使用 Tagscan 重新保存图像的文件:
ID3 TXXX major_brand isom TXXX minor_version 512 TXXX compatible_brands isomiso2mp41 TSSE Lavf57.51.102 TIT2 TXXX % ÿþm a j o r _ b r a n d ÿþi s o m TXXX ' ÿþm i n o r _ v e r s i o n ÿþ5 1 2 TXXX A ÿþc o m p a t i b l e _ b r a n d s ÿþi s o m i s o 2 m p 4 1 TSSE ÿþL a v f 5 7 . 5 1 . 1 0 2 TIT2 ÿþt e s t n a m e TALB ÿþt e s t a l b u m TPE2 ÿþt e s t a r t i s t TCOM ÿþt e s t a r t i s t TPE1 ÿþt e s t a r t i s t PRIV SampleStart 0 0 : 0 0 : 0 0 APIC Ñ image/png ‰PNG IHDR óÿa ‹IDATxœcÀ0¹õ¿yz÷ëÜ~8‰°jxõ‚ø7.ÿŸ;ÿðÿØþÍÿ£{7ÿÏž{ŒAâ¦é½Ä Ò3 †Aâæ™D ²=°y%ŠÈ® h H¡¤{&Ã4ÂøD RÓhœØÆ0~ëj€ÁlDÇD¹ d ÌFd'Ê# 1šY¬Œß IEND®B‚
唯一值得注意的变化是所有东西都……间隔开来了。我意识到在记事本中翻阅歌曲数据可能不是查找信息的最佳方式,但这是我所拥有的最好的方式。
确保您使用 ID3 版本 <= 2.3 进行保存。
Windows 资源管理器显示与 2.4 标签的 .mp3
扩展关联的默认文件图标。
ID3v2.4
,虽然现在已经存在了一段时间,但并不是最兼容的 ID3 版本。 Windows Explorer 和 Groove Music 都无法识别使用该版本保存的标签。我觉得 Google Play Music 也有这个问题。
因此,最安全的做法是使用 ID3v2.3
.