2

AudioRecordAndroidデバイスでオーディオを録音するために使用します。のインスタンスを作成するには、オーディオ データを格納するためにAudioRecordの固定サイズを設定する必要があります。buffer次に、これからbuffer継続的にデータを取得する必要があります。のサイズbufferが小さすぎてデータの取得が遅すぎると、bufferオーバーフローが発生します。
この例外を回避するために、サイズをbufferできるだけ大きく設定し、時間内にデータをフェッチしたいと考えています。オーディオ ハードウェアがサポートできる最小サイズを取得する方法を
AudioRecord提供します。しかし、これは の適切なサイズではなく最小サイズです。 getMinBufferSize(int,int,int)bufferbuffer

私の質問は、buffer?の適切なサイズを計算して設定する方法です。

これが私が使っているものですAudioRecord

audioRecord = new AudioRecord(audio_source, sampleRate, audio_channel, audio_encoding, buffer_size);
new Thread(new Runnable{
    while(true){ //Loop start
        readSize = audioRecorder.read(readBuffer, 0, useReadBufferSize); // fetch data from  buffer to readbuffer
        // throw readbuffer data out, do this operation as qucik as possible, Avoid to block thread
        // check if the AudioRecord stopped and break if true
    }
}).start();
4

0 に答える 0