如何从Java获取声音ID(Chromaprint)以识别mp3/m4a/etc

如何从Java获取声音ID(Chromaprint)以识别mp3/m4a/etc,java,ffmpeg,transcoding,xuggler,audio-fingerprinting,Java,Ffmpeg,Transcoding,Xuggler,Audio Fingerprinting,有人设法使用过声音识别码吗(http://acoustid.org/chromaprint)在Java应用程序中?访问chromaprint clib应该很容易,但我不能只传入音频文件。我需要原始的未压缩音频数据 我曾尝试使用xuggler获取未压缩的音频,但没有成功。基本上我不知道如何从mp3/m4a等编码文件中获取原始音频 有人能做到这一点吗?有人愿意分享他们的代码吗?我建议您使用fpcalc命令行工具(包括在Chromaprint中,网站上包括Windows/Mac/Linux的二进制文件

有人设法使用过声音识别码吗(http://acoustid.org/chromaprint)在Java应用程序中?访问chromaprint clib应该很容易,但我不能只传入音频文件。我需要原始的未压缩音频数据

我曾尝试使用xuggler获取未压缩的音频,但没有成功。基本上我不知道如何从mp3/m4a等编码文件中获取原始音频


有人能做到这一点吗?有人愿意分享他们的代码吗?

我建议您使用
fpcalc
命令行工具(包括在Chromaprint中,网站上包括Windows/Mac/Linux的二进制文件),在Java应用程序的子进程中运行它。您得到的输出如下,应该很容易解析:

FILE=/path/to/file.mp3
DURATION=398
FINGERPRINT=AQADtEqkRIkkrQ...

这就是大多数程序如何集成声学ID,我相信这是最简单的方法。

我通常更喜欢直接连接到本机代码,而不是调用子进程。那我就先做个原型吧。谢谢你的快速回复!我知道你是声学ID的开发者。我只是想知道是否有可能同时提供fpcalc作为c库和可执行文件?如果是本机库,我也可以通过WebStart部署该功能。我不太可能这么做,但如果有人愿意将代码重构为“chromaprint extra”类型的库,我不会反对。将其称为子流程有很多好处,例如fpcalc使用的FFmpeg偶尔会崩溃,如果它是一个库,则会导致应用程序崩溃。我明白你的意思。子流程现在运行得非常顺利。特别是因为我可以一次传入多个文件参数,所以没有任何开销。比如在Android中如何使用它?