我试图找到一种在Java中使用jack-audio的方法。我已经设法基于jnajack创建包装器,以将音频从jacks的端口获取到Java应用程序(原始的jnajack无法与jack 1.9.8一起使用),但是我找不到操作数据的方法。我开始使用List<FloatBuffer>
,为了进行进一步的数据处理,我需要将其转换为byte[]
。
简而言之...首先,我想将数据保存到文件中,但是据我了解,java sound api只能保存TargetDataLine
和/或byte[]
中的数据。如何将FloatBuffer
转换为byte[]
?我可以找到的唯一方法是floatbuffer.get(float[])
,然后以某种方式(不知道如何)将float[]
转换为byte[]
。
最佳答案
如何将FloatBuffer
转换为byte[]
?
FloatBuffer floatbuffer;
ByteBuffer byteBuffer = ByteBuffer.allocate(floatbuffer.capacity() * 4);
byteBuffer.asFloatBuffer().put(floatbuffer);
byte[] bytearray = byteBuffer.array();
您可能必须更改byte order。