我正在使用 AudioRecord
录制音频。目前我使用 44100 作为采样率,16 位作为 AudioFormat
。
我可以使用 48000 作为采样率和 24 位作为 AudioFormat
吗?
下面是采样率为44100,音频格式为16bit的代码。
int SAMPLE_RATE = 44100;
int mBufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioRecord mRecorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, SAMPLE_RATE ,
AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, mBufferSize);
if (AudioRecord.STATE_INITIALIZED == mRecorder.getState()) {
mRecorder.startRecording();
}
根据 Developer site , 44100Hz 是可用的最高采样率。 我的问题是,我可以使用 48000Hz 和 24 位音频格式吗?
谢谢
根据这个link我们可以使用每个样本 24 位来录制音频。 每个样本 24 位 使用 Android L,样本分辨率将从 16 位 PCM 增加到 24 位以获得更好的结果。尽管 2013 年发布的许多智能手机都支持 24 位 96khz DAC,但 Android 操作系统从未能够使用它。
最佳答案
当然这取决于您尝试录制的设备?硬件制造商必须在 HAL 中配置很多这样的东西。
audio_policy.conf 应该在您使用的设备上指明兼容的采样率和格式。您可以检查该文件 - 它通常在您的 android 设备上找到,可能在 system/etc/下
例子:
audio_hw_modules {
primary {
outputs {
primary {
sampling_rates 44100|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL
flags AUDIO_OUTPUT_FLAG_PRIMARY
}
}
inputs {
primary {
sampling_rates 8000|11025|16000|22050|32000|44100|48000
channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_WIRED_HEADSET
}
}
}
在这种特殊情况下,我无法使用 48 KHz 的 24 位音频,但 16 位就可以了。
关于android - 我可以使用 AudioRecord 录制 24/48k 音频吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32390696/