gpt4 book ai didi

java - 检测带有 ID3 标签的重复 MP3 文件吗?

转载 作者:行者123 更新时间:2023-12-01 15:34:28 26 4
gpt4 key购买 nike

如何检测(最好是 Java)具有不同 ID3 标签的重复 MP3 文件?这些文件具有相同的编码/格式。它应该适用于 ID3 的两个版本:ID3v1 和 ID3v2。

这是我到目前为止的代码。但它不适用于 Id3v1 标签。

try {

String filepath = "c:\tmp";

Vector<String> mp3_files = new Vector<String>();
mp3_files.add(filepath + "test_with_id3.mp3");
mp3_files.add(filepath + "test_without_id3");

Iterator<String> i_mp3fp = mp3_files.iterator();

while (i_mp3fp.hasNext()){

String mp3_fp = i_mp3fp.next();

AudioInputStream din = null;
File file = new File(mp3_fp);
AudioInputStream in = AudioSystem.getAudioInputStream(file);
AudioFormat baseFormat = in.getFormat();

AudioFormat decodedFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
baseFormat.getChannels() * 2, baseFormat.getSampleRate(),
false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);

String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex( din );
System.out.println("Name: "+mp3_fp+" | Hash: "+md5);
din.close();

}

当我这样做时,我想我必须比较具有不同编码的 mp3。无论如何。我认为更好的解决方案是读取 mp3 文件 - 忽略所有 id3 标签 - 进行校验和并比较它们。是否有用于读取和过滤 mp3 文件的库?

谢谢大家的帮助!

最佳答案

将文件转换为原始 PCM,并对输出进行 MD5

虽然在 Java 中肯定有办法做到这一点,但我怀疑使用 FFmpeg + bash 可能会更快。

for file in *.mp3
do
ffmpeg -i $file -f s16le - | md5 > $file.md5
done

关于java - 检测带有 ID3 标签的重复 MP3 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113511/

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