我想读取最后1兆字节的MP3文件并计算文件的那一部分的SHA1校验和.我想这样做的原因是,当我在寻找重复的MP3的,标题信息(曲名,专辑等),即使它的EXAKT相同的音频文件不同,所以我想我会来校验更好文件的一部分而不是整个文件.有没有一种有效的方法呢?
MP3没有歌曲/专辑/艺术家的固有"标题"信息.这由ID3处理,ID3可以位于文件的前面(ID3v2,随机大小,取决于指定的信息量)或最后(ID3v1,固定128字节).要通过校验和正确识别MP3,您必须确保忽略ID3标签的两个版本.此外,可以在.wav容器中嵌入MP3,在这种情况下有.wav标题和诸如此类的东西.
当然,总有两种歌曲以不同的比特率,采样率,甚至不同的CD片段和编码器编码的情况.所有这些都会产生完全不同的文件,但仍然是"同一首歌".
你必须使用c包装器进行文件操作:fopen,fseek和fread:
$size = 1024 * 1000;
$handle = fopen($file, 'r');
fseek($handle, -$size);
$limitedContent = fread($handle, $size);
$hash = md5($limitedContent);
Run Code Online (Sandbox Code Playgroud)