gpt4 book ai didi

file - 计算音频文件的校验和而不考虑标题

转载 作者:行者123 更新时间:2023-12-04 19:24:50 25 4
gpt4 key购买 nike

我想以编程方式创建音频文件(MP3,Ogg Vorbis,Flac)的SHA1校验和。
要求是即使 header (例如ID3)更改,校验和也应该是稳定的
注意:音频文件没有CRC

这是我现在尝试的:

1)使用Perl和MPEG::Audio::Frame读取+散列所有MPEG帧

my $sha1 = Digest::SHA1->new;
while (my $frame = MPEG::Audio::Frame->read(\*FH)) {
$sha1->add($frame->content());
}

2)使用Python和libmad (pymad)解码+散列所有MPEG帧
mf = mad.MadFile(path)
sha1 = hashlib.sha1()

while 1:
buf = mf.read()
if (buf is None):
break
sha1.update(buf)

3)使用mp3cat
> mp3cat - - < file.mp3 | sha1sum

但是,这些方法均未提供稳定校验和。即,在某些情况下,在用picard重新标记文件后,校验和发生了变化。

是否有已经提供我想要的库?
我不在乎编程语言...

更新:
我进一步调试了这个案例。
libmad校验和不一致似乎发生在libmad遇到一些解码错误的情况下,例如“霍夫曼数据溢出(0x0238)”。
由于这确实发生在许多mp3文件中,因此我不确定它是否确实表示文件损坏…

最佳答案

如果您正在为实际音乐寻找稳定的哈希值,则可能需要查看libOFA。当前的方法将为您提供不同的结果,因为格式可以具有嵌入式标签。同样,如果您希望具有同一首歌曲的两个不同文件返回相同的哈希值,则需要考虑比特率和采样频率。

另一方面,libOFA可以为您提供稳定的哈希,可在格式和不同编码之间使用。可能是您想要的?

关于file - 计算音频文件的校验和而不考虑标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com