0
私はこのコードを持っている:私は、16ビットのサンプルデータを読み取ることがしたいサンプルあたり2バイトのサイズでサウンドカードの入力ストリームを読み取る方法は? (Java)の
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);
が、関数line.read()私だけが変数のバイトで8ビットのデータを使用することができますが - ときに私それをintまたはshortに変更したいのですが、エラーです。 16ビットデータを取得するにはどうすればよいですか?
short[] shortArray = new shorts[data.lentgh/2];
ByteBuffer
.wrap(data)
.order(ByteOrder.LITTLE_ENDIAN)
.asShortBuffer()
.get(shortArray);
をさらに別の解決策は、あなたがあなたのストリームから直接、16ビットのデータを読み取ることができる方法.readShort()
を持ってDataInputStream
を使用することです: