gpt4 book ai didi

java - 如何读取每个样本2字节大小的声卡输入流? (Java)

转载 作者:行者123 更新时间:2023-12-03 01:40:21 25 4
gpt4 key购买 nike

我有这个代码:

final static AudioFormat format = new AudioFormat(48000, 16, 1, true, true);
TargetDataLine line;
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
line=(TargetDataLine) AudioSystem.getLine(info);
line.open(format);

line.start();
ByteArrayOutputStream out = new ByteArrayOutputStream();
int numBytesRead;
byte[] data = new byte[16040];
numBytesRead = line.read(data, 0, data.length);

我想读取16位样本数据,但函数line.read()仅允许我按可变字节使用8位数据-当我要将其更改为int或short时,它给了我一个错误。如何获取16位数据?

最佳答案

您可以使用ByteBuffer类转换字节:

short[] shortArray = new shorts[data.lentgh / 2]; 
ByteBuffer
.wrap(data)
.order(ByteOrder.LITTLE_ENDIAN)
.asShortBuffer()
.get(shortArray);

还有另一种解决方案是使用 DataInputStream,它具有 .readShort()方法,因此您可以直接从流中读取16位数据。

关于java - 如何读取每个样本2字节大小的声卡输入流? (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com