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

标签 android audio audiorecord sample-rate audioformat

我正在使用 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/

相关文章:

Android:RecyclerView 的最后一张卡被切断。无法再滚动。为什么会这样?

java - 音轨在 Android 中不工作

javascript - 为音频添加混响会使其失真且响亮

android - HandlerThread 和 Handler : how to use AudioRecord. setRecordPositionUpdateListener?

android - 如何增加放大 AudioTrack?

java - 当我有一个用于相同目的的网站(php)时通过应用程序登录

php - 通过 php 和 JSON 将 android 应用程序连接到 MySQL

Android 异步执行文件操作

Android MediaPlayer seekTo 精确

c++ - 如何使用 Microsoft Media Foundation 的 Sink Writer 播放音频