我一直在做一项大型研究,但找不到很多关于此的信息。我想使用 android AudioRecorder 录制音频样本,但我不知道如何以 32 位格式进行录制。我还使用 AudioTrack 来“监控”麦克风并在录制时收听音频,但如果我将 AudioManager 和 AudioTrack 设置ENCODING_PCM_FLOAT
为音频字面上为空,我什么也听不到。
所以问题是如何在 32 位样本中同时录制和收听,AudioFormat.ENCODING_PCM_FLOAT
这样我才能获得最佳质量的音频。
这是我如何使用AXET 音频库初始化 AudioRecord 的快速浏览:
final AudioRecord recorder = Sound.createAudioRecorder(context, sampleRate, ss, 0);
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
final int maxJitter = AudioTrack.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
audioTrack = new AudioTrack(AudioManager.MODE_IN_COMMUNICATION,sampleRate,AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_FLOAT,maxJitter, AudioTrack.MODE_STREAM);
audioManager.setSpeakerphoneOn(false);
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
在线程内部,我只是将缓冲区写入 audioTrack:
audioTrack.write(buffer,0,bufferSize);
我的缓冲区是一个短 [] 数组。
最后我运行线程并播放曲目,正如我在 PCM_16BIT 中所说的效果很好,但在 PCM_FLOAT 中没有:
thread.start();
audioTrack.play();
因此,如果有人有 32 位录制经验,我将不胜感激知道它是如何完成的。谢谢。