音訊延遲 (適用於應用程式開發人員)

如要盡可能降低音訊延遲,建議使用 Oboe

Oboe

Oboe 使用原生音訊,並以 Android 8.1 (API 級別 27) 以上版本的 AAudio 和 OpenSL ES 為基礎。如要盡可能縮短裝置的延遲時間,請設定 setPerformanceMode(oboe::PerformanceMode::LowLatency)setSharingMode(oboe::SharingMode::Exclusive)。如要進一步瞭解 Oboe,請參閱入門指南README.md完整指南。如需使用 Oboe 的範例應用程式,請參閱 Soundboard 應用程式

如果您使用 AudioTrack 在 Java 中建立輸出音訊串流,以用於延遲時間敏感型應用程式,請使用 PERFORMANCE_MODE_LOW_LATENCY 模式。

導入作業檢查清單

如要使用 Android 原生音訊,請按照下列步驟操作:

  1. 下載並安裝 Android NDK
  2. 請參閱 Oboe 的入門指南
  3. 在 Oboe 建構工具上呼叫 setPerformanceMode(oboe::PerformanceMode::LowLatency)setSharingMode(oboe::SharingMode::Exclusive)
  4. 使用 android.media.AudioManager.getProperty(java.lang.String) 傳回的建議原生緩衝區空間和取樣率。

  5. 請確保回呼處理常式簡短,且不會造成 CPU 使用率暴增或無限期封鎖。避免優先權反轉

  6. 建議使用非封鎖演算法,在輸入和輸出回呼處理常式之間,以及回呼處理常式和應用程式的其餘部分之間進行通訊。

android-ndk

如要瞭解如何使用 Android 原生音訊,請加入討論群組 android-ndk

回報 Oboe 的錯誤

如果使用 Oboe 時遇到問題,請回報錯誤

影片