诱变剂:如何 "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。
我正在尝试将 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。