我想以编程方式创建音频文件的SHA1校验和(MP3,Ogg Vorbis,Flac).要求是即使标题(例如ID3)改变,校验和也应该是稳定的.
注意:音频文件没有CRC
这是我现在尝试的:
my $sha1 = Digest::SHA1->new; while (my $frame = MPEG::Audio::Frame->read(\*FH)) { $sha1->add($frame->content()); }
mf = mad.MadFile(path) sha1 = hashlib.sha1() while 1: buf = mf.read() if (buf is None): break sha1.update(buf)
> mp3cat - - < file.mp3 | sha1sum
但是,这些方法都没有提供稳定的校验和.也就是说,在某些情况下,在使用picard重新归档文件后,校验和发生了变化.
是否有任何图书馆已经提供了我想要的东西?
我不关心编程语言......
更新: 我进一步调试了案例.libmad校验和不一致似乎发生在libmad获得一些解码错误的情况下,例如"Huffman数据溢出(0x0238)".因为这确实发生在许多mp3文件上,我不确定它是否真的表明文件损坏...