在 java 中,您可以像这样创建 SourceDataLine:
AudioFormat af = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100.0, 16, 1, 2, 44100.0, false);
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
之后,您可以打开然后将数据写入其中:
byte[] data = new byte[1024];
fillwithsounds(data);
sdl.open()
sdl.start()
sdl.write(data, 0, 1024);
这一切都适用于单声道数据。
我想做的是能够编写立体数据,我在网上找不到任何关于如何更改字节数组才能写入立体数据的文档。
似乎我需要在创建 AudioFormat 时增加通道数量 - 使其成为立体声 - 然后我需要将帧速率减半(否则 Java 会抛出 IllegalArgumentException)
我不明白为什么会这样,或者我提供给 DataSourceLine 的数据的新格式应该是什么。
也许在音频格式方面比我有更多经验的人可以对这个问题有所了解。提前致谢!