0

最速」とは、最小のレイテンシーを意味します。

私が知っている2つの方法は次のとおりです。

  1. android.media.AudioTrack を使用する
  2. NDK/C++ で OpenSL ES を使用する

2つのうち、どちらが速いですか? 他の選択肢がある場合は、私に教えてください。

詳細: 私のアプリケーションは、ネイティブ ハードウェアのフォーマットに傾向があるサウンドを再生すると仮定します。たとえば、ネイティブ再生サンプル レートが 44.1KHz の場合、44.1K サウンドをフィードします。ネイティブのサンプル レートが 48KHz の場合は、48KHz のサウンドをフィードします。システム ミキサーやリサンプラーは必要ありません。

4

1 に答える 1

0

前回、Android のソース コードを確認したとき、Jellybean に追加された低レイテンシ パスを使用する API は 2 つだけでした(そして、それも同様かもしれませんOpenSL ESが、ここでは関係ないと思います)。SoundPoolToneGenerator

静的なサウンドがたくさんある場合は、 を使用するのSoundPoolが最も便利なオプションです。リアルタイムでオーディオを生成するには、OpenSL ES を使用する必要があります。

低遅延パスを選択するために満たす必要がある条件のリストについては、libaudioflingerおよびlibwilhelmのソース コードを参照してください。簡単な要約: ネイティブのサンプル レート、モノラルまたはステレオ リニア PCM、エフェクトなしを使用します。

于 2013-08-02T06:06:10.540 に答える