我试图找到一种在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

10-06 14:00