オーディオバッファを作成して、新しいクラスに送ろうとしました。 このクラスでは、AudioTrackerでこのバッファを再生しますが、動作しません。 時間通りに音が聞こえますが、音は残響のようです。私は間違いのためにIdearを持っておらず、この問題の答えを見つけられませんでした。 私があなたを助けてくれることを願っています。 (申し訳ありませんが、私の英語が最善ではありません) Sorcecode:オーディオバッファを転送して直接再生する方法
public class input {
private static final String TAG = "Aufnahme";
private AudioRecord recorder = null;
private boolean isRecording = false;
private int SAMPLERATE = 8000;
private int CHANNELS = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
private int bufferSize = AudioRecord.getMinBufferSize(SAMPLERATE, CHANNELS,
AUDIO_FORMAT);
private Thread recordingThread = null;
public void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLERATE,
CHANNELS, AUDIO_FORMAT, bufferSize);
recorder.startRecording();
isRecording = true;
recordingThread = new Thread(new Runnable()
{
public void run() {
writeAudioData();
}
});
recordingThread.start();
}
public void stopRecording() {
isRecording = false;
recorder.stop();
recorder.release();
recorder = null;
recordingThread = null;
}
private void writeAudioData() {
byte data[] = new byte[bufferSize];
while (isRecording) {
recorder.read(data, 0, bufferSize);
send(data);
}
}
private void send(byte[] data) {
int minBufferSize = AudioTrack.getMinBufferSize(8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, minBufferSize,
AudioTrack.MODE_STREAM);
at.play();
at.write(data, 0, bufferSize);
at.stop();
at.release();
}
修正のおめでとう!あなたができるときは、他の人があなたの解決策から学ぶことができるように、あなたの答えに「受け入れられた」とマークするようにしてください。乾杯〜 –
私はbufferSizeとminbufferSizeで遊んで、オーディオデータを忠実に再生することができました。私は入力バッファを8192に固定して1024に出力しました。それはさらに調整することができますが、私の目的に役立ちます。元のコードをありがとう。それは必要に応じて動作します。 – axs