2010-05-04 99 views
5

看來這個問題以前已經問過了,我只想知道Android中是否有更新。我打算寫一個涉及低延遲音頻I/O的音頻應用程序(約10毫秒)。基於SDK提出的方法似乎是不可能的,因此在那裏 - 同時 - 使用NDK實現這一目標的一種方法?通過NDK在Android上進行低延遲音頻

回答

4

目前NDK中沒有用於訪問android音響系統的庫,至少沒有被認爲可以安全使用(穩定)的庫。

您是否使用AudioTrack類做過任何測試?它是目前可用的最低延遲選項。

+0

問題是AudioTrack類的最小buffersize約束。這個尺寸太大而不能實現低延遲音頻。而在真實設備上(摩托羅拉Droid),顯示的緩衝區大小甚至高於仿真器。 – user332530 2010-05-04 21:26:32

+0

@hkhauke AudioTrack緩衝區的大小不會影響音頻播放的延遲。換句話說,如果您已經設置了MODE_STREAM,則無需填充AudioTrack緩衝區以供播放即可開始播放。真正的問題將是Android的底層音頻系統執行的速度以及音頻硬件本身的速度。 – Mark 2010-05-04 22:16:54

+0

謝謝你的提示,我會測試這種模式! – user332530 2010-05-05 14:04:38

0

目前兩個主要的API暴露在NDK的音頻: OpenSL(從Android 2.3的API級別9) 的OpenMAX AL(從Android 4.0的API級別14)

一個很好的起點,瞭解OpenSL API在Android中是在NDK的示例代碼中: 查看「native-audio」示例。

約特性測量是在這個博客中: http://audioprograming.wordpress.com/

作爲總結獲得了最好的潛伏期均圍繞100-200ms,遠離你的目標。但是,從android NDK文檔來看,OpenSL接口是未來將從硬件加速中獲益最多的一種,可用於低延遲。