ByteBuffer 从 short 到 byte[]

ByteBuffer from short to byte[]

我让用户录制一小段声音。它存储为 short[]

final int samples = 44100;
boolean isMono = true;
final short[] data = new short[samples * 5];
final AudioRecorder recorder = Gdx.audio.newAudioRecorder(samples, isMono);
final AudioDevice player = Gdx.audio.newAudioDevice(samples, isMono);
ByteBuffer buffer;

开始录制:

public void startRecord(){
    new Thread(new Runnable() {
        @Override
        public void run() {
                System.out.println("Record start:");
                recorder.read(data, 0, data.length);
                recorder.dispose();
                //buffer.putShort(data[1]);
                System.out.println("Record ended:");
            }

    }).start();
}

并播放录制的声音:

public void playRecorded(){
    new Thread(new Runnable() {
        @Override
        public void run() {
            player.writeSamples(data, 0, data.length);
            player.dispose();

        }
    }).start();
}

我现在需要将他们的音频片段存储在文件句柄中。为此,我需要将其转换为我所知道的 byte[]。

试试这个

ByteBuffer buffer = ByteBuffer.allocate(2);
buffer.putShort(short_value);
return buffer.array();