【问题标题】:Mutagen: How can I "correctly" embed album art into mp3 file so that I can see the pitcure display as file iconMutagen:如何“正确”将专辑封面嵌入到 mp3 文件中,以便我可以看到pitcure 显示为文件图标
【发布时间】:2022-01-10 15:44:12
【问题描述】:

我正在尝试将 flac 文件转换为 mp3 格式,使用 pydub 进行转换,使用 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 转换文件,它会正确显示,但不能使用诱变剂。

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

【问题讨论】:

  • 也许您可以使用诱变剂阅读您的 foobar 版本,看看他们是如何做到的?
  • @diggusbicus 感谢您的建议!我找到了使专辑封面可见的解决方案。下次我会分享答案。

标签: python mp3 flac mutagen albumart


【解决方案1】:

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

在pydub-converted文件中,mutagen添加了哪些标签和专辑封面:

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)),它可以工作,现在我可以将专辑封面视为图标预览图像。另外我做了一个小调查来检查其他编码号码是否有效,专辑封面是否会正确显示 encoding=0、1 和 2。

【讨论】:

    猜你喜欢
    • 2016-10-20
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2021-06-21
    相关资源
    最近更新 更多