2017-12-17 13 views
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を使用することです:

答えて

0

あなたはByteBufferクラスを使用して、あなたのバイトを変換することができます。

関連する問題