Python - eyeD3 Lame标签CRC校验失败

时间:2016-04-15 00:00:07

标签: python mp3 media crc eyed3

我正在尝试使用Python和eyeD3编写一个脚本来清理mp3文件名,但是当我尝试使用以下内容加载mp3文件时,我收到“警告:eyed3.mp3.headers:Lame标签CRC检查失败”脚本

import string
import os
import eyed3

count = 0

for root, dirs, filenames in os.walk('path'):
    for song in filenames:
        audiofile = eyed3.load(song)

因此我无法重命名库中的大多数文件。有关此主题或不同图书馆的任何经验吗?

7 个答案:

答案 0 :(得分:1)

我发现第一个周转方法可检测到可悲地发送到stdout的eye3d“错误”: 实际上,eyed3并没有看起来那么脏,这是因为它的错误,甚至是log.warnings, 所以我以这种方式查看日志得到了这些错误: -在eye3d调用之前,我将日志重定向到stringIO -在eye3d调用之后,我检查此stringIO是否仍然为空(或不是)

示例代码:

import logging
import io
import eyed3

log_stream = io.StringIO()
logging.basicConfig(stream=log_stream, level=logging.INFO)
audiofile = eyed3.load('myfullfilename')
llog = log_stream.getvalue()
if llog:
    # deal here with the error message which in llog
    # and then purge the log_stream to reuse it for next eye3d call
    log_stream.truncate(0)
# all this code can be improved : enclose it in a try..catch, etc.

答案 1 :(得分:0)

我遇到了同样的问题,我的mp3文件是由ffmpeg生成的并且遇到了这个问题。此外,它没有任何信息设置。

我手动(在Windows中,使用文件属性)仅编辑标题并将其设置为" X",之后我能够使用eyed3而不会遇到CRC错误。

答案 2 :(得分:0)

我在某些文件上也会出现此错误,但这不是真正的Python错误,它只会打印到stdout。您可以忽略警告并以您认为合适的任何方式重命名文件。

答案 3 :(得分:0)

看到了几个没有明确答案的问题;这个动作似乎动作最多。我也遇到了这个问题,但是很明显该错误与任何人的特定Python脚本无关。您可以通过如下运行命令行eyeD3工具来判断(输出缩写):

% eyeD3 -v '03 - The Presidents Of The United States Of America - Lump.mp3'
eyed3.mp3.headers:WARNING: Lame tag CRC check failed
.../03 - The Presidents Of The United States Of America - Lump.mp3 [ 5.28 MB ]

ID3 v2.4:
title: Lump
artist: The Presidents Of The United States Of America

您可以通过以下方式查看有关LAME标签的更多信息:

% eyeD3 -P lameinfo '03 - The Presidents Of The United States Of America - Lump.mp3'
eyed3.mp3.headers:WARNING: Lame tag CRC check failed

Encoder Version     : LAME3.82U
LAME Tag Revision   : 10

Music CRC-16        : 5555
LAME Tag CRC-16     : 5555

我还没有真正研究过它,但是我猜测它是如何工作的是计算出的CRC与标签中的CRC不匹配?

不幸的是,我不确定如何使用eyeD3或任何其他工具来实际修复LAME标签。但是,我能够解决该警告的方法是重新编码并覆盖该文件(在Mac上,我使用了“ Switch Sound File Converter”程序)。 LAME标签似乎在此过程中丢失了(由于LAME与编码有关,因此很有意义):

% eyeD3 -P lameinfo '03 - The Presidents Of The United States Of America - Lump.mp3'

03 - The Presidents Of The United States Of America - Lump.mp3  [ 5.71 MB ]
-------------------------------------------------------------------------------
No LAME Tag

% eyeD3  '03 - The Presidents Of The United States Of America - Lump.mp3'
.../03 - The Presidents Of The United States Of America - Lump.mp3 [ 5.71 MB ]

ID3 v2.3:
title: Lump

因此警告消失了(也请注意将ID3标签版本更改为旧版本...然后我使用了名为Tagr的程序来更新标签,并写回了最新版本)。我目前不知道该怎么做,但是我很想知道其他人是否对使用不同的工具有想法,或者对这一切的工作方式有更深入的了解。

答案 4 :(得分:0)

我能够通过这样做来抑制这个错误:

from logging import getLogger


  # (in main)
  # Suppress WARNINGS generated by eyed3
  getLogger().setLevel('ERROR')

答案 5 :(得分:0)

就我而言,该错误似乎是上述建议的“不明智设置”的副作用。我使用 Audacity 从黑胶唱片中“录制”了 mp3,并注意到数据的音量很高。我用较低的增益重新录制了录音。问题迎刃而解!

答案 6 :(得分:-1)

您访问/修改文件的速度过快。比实际加载或正确关闭快。 我在每个间隔中增加了一点时间睡眠并解决了问题。

import string
import os
import eyed3
import time

count = 0

for root, dirs, filenames in os.walk('path'):
    for song in filenames:
        audiofile = eyed3.load(song)
        time.sleep(0.01)