Android 初始化音频录制
我正在尝试使用Android 初始化音频录制,android,android-audiorecord,Android,Android Audiorecord,我正在尝试使用录音,但无法正确初始化录音。我有两个设备,其中一个运行良好,但另一个不断给出例外 我的代码: bufferSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT); AudioRecord recorder = new AudioRecord(AudioSource.DEFAULT, rate,channelConfig, audio
录音
,但无法正确初始化录音。我有两个设备,其中一个运行良好,但另一个不断给出例外
我的代码:
bufferSize = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord recorder = new AudioRecord(AudioSource.DEFAULT, rate,channelConfig, audioFormat, bufferSize);
为什么这是错误的,正确的做法是什么
private int[] mSampleRates = new int[] { 8000, 11025, 22050, 44100 };
int bufferSize;
AudioRecord audioInput = findAudioRecord();
public AudioRecord findAudioRecord() {
for (int rate : mSampleRates) {
for (short audioFormat : new short[] {
AudioFormat.ENCODING_PCM_8BIT,
AudioFormat.ENCODING_PCM_16BIT }) {
for (short channelConfig : new short[] {
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.CHANNEL_IN_STEREO }) {
try {
Log.d("Mic2", "Attempting rate " + rate
+ "Hz, bits: " + audioFormat
+ ", channel: " + channelConfig);
bufferSize = AudioRecord.getMinBufferSize(rate,
channelConfig, audioFormat);
if (RECORDINGDURATION * sampleRate != AudioRecord.ERROR_BAD_VALUE) {
// check if we can instantiate and have a
// success
AudioRecord recorder = new AudioRecord(
AudioSource.DEFAULT, rate,
channelConfig, audioFormat, bufferSize);
if (recorder.getState() == AudioRecord.STATE_INITIALIZED)
sampleRate = rate;
return recorder;
}
} catch (Exception e) {
Log.e(TAG, rate + "Exception, keep trying.", e);
}
}
}
}
return null;
}
设备很可能不支持16位编码->AudioFormat.encoding\u PCM\u 16位:-)
设备很可能不支持16位编码->AudioFormat.encoding_PCM_16BIT:-)Emulator不支持CHANNEL_CONFIGURATION_STEREO&sampleRate=(11025、16000、22050和44100),如果您想成功运行此功能,则使用CHANNEL_CONFIGURATION_MONO&sampleRate=8000(它仅支持每秒8000个样本)
这里详细介绍了如何操作:如果您想成功运行此功能,Emulator不支持CHANNEL_CONFIGURATION_STEREO&sampleRate=(11025、16000、22050和44100),因此使用CHANNEL_CONFIGURATION_MONO&sampleRate=8000(它只支持每秒8000个样本)
下面是对操作的详细描述:我已经将采样率设置为8000,而且我没有使用emulator来测试这个。我已经将采样率设置为8000,而且我没有使用emulator来测试这个。是的,就是这样!最后,经过几个小时的努力,我的录音在两台设备上都能正常工作。谢谢。这个录制持续时间有什么价值?是的,就是它!最后,经过几个小时的努力,我的录音在两台设备上都能正常工作。谢谢。这个录制持续时间有什么价值?