我有代码解码MP3并使用所有'值'填充数组。 我的问题是:这些价值观是什么?它们是频率吗?他们是振幅吗? 这是代码:
File file = new File(song.getFilepath());
if (file.exists()) {
AudioInputStream in = AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
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);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] data = new byte[4096];
SourceDataLine line = getLine(decodedFormat);
int nBytesRead = 0, nBytesWritten = 0;
while (nBytesRead != -1) {
nBytesRead = din.read(data, 0, data.length);
if (nBytesRead != -1) {
nBytesWritten = line.write(data, 0, nBytesRead);
out.write(data, 0, nBytesRead);
}
}
byte[] audio = out.toByteArray();
System.err.println(audio.length);
for (byte b : audio) {
System.err.println(b);
}
}
我获得了大约40,000,000个数字(字节数组长度)的3分钟歌曲,但我不知道它们是什么?
答案 0 :(得分:2)
它们是振幅。通常,每个幅度为16位(2个字节,范围从-32768到32767),并且有两个通道(左和右)。在这种情况下,一个声音样本跨越四个字节。 例: 100,0,2,1 表示左幅度为100(32767),右边为258。