诱变剂:如何 "correctly" 将专辑封面嵌入到 mp3 文件中,以便我可以看到 picuture 显示为文件图标

Mutagen: How can I "correctly" embed album art into mp3 file so that I can see the pitcure display as file icon

我正在尝试将 flac 文件转换为 mp3 格式,使用 pydub for conversion and mutagen 作为标签和专辑封面副本。

将 flac 文件转换为 320Kbps mp3:

from pydub import AudioSegment

path_flac  = 'mc_test/from/01 Lapislazuli.flac'
path_mp3   = 'mc_test/to/01 Lapislazuli.mp3'
flac_audio = AudioSegment.from_file(path_flac, format="flac")
flac_audio.export(path_mp3, format="mp3", bitrate='320K')

从 flac 文件加载专辑封面图像并将其嵌入 mp3 文件 (follow this question):

from mutagen.flac import FLAC
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC

file = FLAC(path_flac)
art = file.pictures[0].data

audio = MP3(path_mp3, ID3=ID3)    
audio.tags.add(
    APIC(
        encoding=3, # 3 is for utf-8
        mime='image/png', # image/jpeg or image/png
        type=3, # 3 is for the cover image
        desc=u'Cover',
        data=art
    )
)
audio.save()

我成功地将专辑封面嵌入到mp3文件中,图片在foobar和MPC等播放器中显示,但在文件图标中没有正确显示。如果我通过 foobar 转换文件,它会正确显示,但不适用于诱变剂。

有谁知道如何使专辑封面正确显示为图标?

感谢@diggusbickus 的建议,我发现并比较了 foobar 和 pydub 生成的 mp3 文件之间的差异。区别在于编码。

在 pydub 转换文件中,诱变剂添加了哪些标签和专辑封面:

path_mp3 = 'mc_test/to/01 Lapislazuli.mp3'
file_mutagen = File(path_mp3)
file_mutagen.tags['APIC:'].encoding

它显示<Encoding.UTF8: 3>,这可能来自上面的audio.tags.add(APIC(encoding=3))

在 foobar 转换文件中:

path_mp3_foobar = 'mc_test/foobar/01 Lapislazuli.mp3'
file_foobar = File(path_mp3_foobar)
file_foobar.tags['APIC:'].encoding

显示 <Encoding.LATIN1: 0>

所以我在嵌入图像时将设置更改为 audio.tags.add(APIC(encoding=0)),它起作用了,现在我可以看到专辑封面作为图标预览图像。我还做了一个小调查来检查其他编码数字是否有效,专辑封面是否会正确显示编码 = 0、1 和 2。