我可以使用AudioRecord录制24 / 48k音频吗?

时间:2015-09-04 05:29:33

标签: android audio audiorecord sample-rate audioformat

我正在使用AudioRecord录制音频。目前我使用44100作为采样率,16bit作为AudioFormat

我可以使用48000作为采样率,将24bit用作AudioFormat吗?

以下是采样率为44100且音频格式为16位的代码。

    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和24bit音频格式。

由于

根据这个link,我们可以使用每个样本24位来录制音频。 每个样本24个比特 使用Android L,样本分辨率将从16位PCM增加到24位,以获得更好的效果。尽管2013年发布的许多智能手机支持24位96khz DAC,但Android操作系统从未能够使用它。

2 个答案:

答案 0 :(得分:1)

简单回答 - 对于大多数应用开发者 - 不,你不能。

Longish回答 -

  • 如果您正在使用Android SDK构建应用程序,那么您不能,因为SDK没有为此定义任何常量。

  • 如果您可以访问Android的基础源代码,那么整个源代码构建。然后你可以检查它们是否支持采样频率和音频格式,然后你可以通过整个安卓堆栈公开它们并在你的应用程序中使用它。
    使用此方法的问题是您无法将应用程序发布到任何设备,设备需要运行从同一源构建的完全相同的图像。此方法通常适用于在自己的树中开发应用程序的OEM公司..

答案 1 :(得分:1)

当然这取决于您要录制的设备?硬件制造商必须在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位会很好。