1

を使って音声を録音してAudioRecordいます。現在、サンプル レートとして 44100 を使用しており、16 ビットを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();
    }

開発者サイトによると、 44100Hzが利用可能な最高のサンプル レートです。私の質問は、24 ビット オーディオ フォーマットで 48000Hz を使用できるかどうかです。

ありがとう

このリンクに従って、サンプルあたり 24 ビットを使用してオーディオを録音できます。サンプルあたり 24 ビット Android L では、サンプルの解像度が 16 ビット PCM から 24 ビットに増加し、より良い結果が得られます。2013年に発売されたスマートフォンの多くは24bit 96khz DACに対応していましたが、Android OSでは使えませんでした。

4

2 に答える 2

1

簡単な答え - ほとんどのアプリ開発者にとって - いいえ、できません。

長い答え -

  • Android SDK を使用してアプリケーションを構築している場合、SDK は同じ定数を定義していないため、作成できません。

  • Android の基礎となるソース コードにアクセスできる場合は、ソース全体がビルドされます。次に、それらがそのサンプリング周波数とオーディオ形式をサポートしているかどうかを確認し、Android スタック全体でそれらを公開して、アプリケーションで使用できます。
    このアプローチの問題は、アプリケーションをどのデバイスにも公開できないことです。デバイスは、同じソースからビルドされたまったく同じイメージを実行する必要があります。この方法は通常、独自のツリーでアプリを開発する OEM 企業に適用されます。

于 2015-09-04T05:40:59.527 に答える
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 ビットは問題ありません。

于 2015-09-04T14:25:55.083 に答える