我将FFT恢复到音频文件上,但它没有考虑到该频率发生在歌曲中的时间。我首先尝试获取文件的长度,然后在轨道长度上均匀地扩展FFT结果,但这可能是错误的并且没有给出正确的频率。所以现在我试图将文件分成1秒钟,然后单独返回第二个频率,然后我将其保存在数据库中以保存它。
但我不知道如何保存它,我找到的所有其他线程和我所做的研究只展示了如何分成x个部分,而不是像歌曲那样每秒。有没有办法做到这一点?
很抱歉,如果这是一个微不足道的话题,但我对Java和编程很陌生,所以这对我来说非常困难。
提前致谢
到目前为止,这是我的代码:
File file = new File(FILENAME);
float durationInSeconds = 0;
Tag tag;
java.util.logging.Logger.getLogger("org.jaudiotagger").setLevel(Level.OFF);
AudioFile audioFile;
try {
audioFile = AudioFileIO.read(file);
System.out.println("Track length = " + audioFile.getAudioHeader().getTrackLength());
durationInSeconds = audioFile.getAudioHeader().getTrackLength();
} catch (CannotReadException | TagException | ReadOnlyFileException
| InvalidAudioFrameException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
convert();
System.out.println(((durationInSeconds)/endResult.length)*1000);
for(int i = 0; i < endResult.length; i++) {
Thread.sleep((long) (((durationInSeconds)/endResult.length)*1000));
System.out.println(endResult[i]);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}