如何發揮Android SDK的最佳性能
由於Android平臺的碎片化非常嚴重,主要體現在Android本身有多個不同的版本,如目前常見的Android 2.x、Android 4.x等,以及不同的廠家有自己的硬件平臺,會對原生的Android源代碼進行修改來適配硬件,所以AnyChat for Android SDK爲了儘可能多的兼容硬件設備,採取了一些中庸的策略,使得默認設置情況下,AnyChat
for Android SDK的效率不是最佳。
如果您是開發一款普及型的音視頻應用,建議您還是繼續保留AnyChat的默認設置,這樣系統的兼容性會更好,能在絕大部分Android硬件上正常工作。
如果您是針對特定的硬件設備開發音視頻應用,建議您嘗試更改下面的一些設置,提升AnyChat for Android SDK的效率:
一、調整設備驅動。
AnyChat for Android SDK中的Demo程序默認採用了“Java驅動”程序,效率比較低,但是兼容性最好。拿視頻採集來說,有“Java視頻採集驅動”和“內核視頻採集驅動”可供選擇,其中“Java視頻採集驅動”是在JNI層之上調用Android提供的Java API來操作攝像頭,採集視頻數據,視頻數據最終傳到內核,經過了JNI層的轉換,效率較低;而“內核視頻採集驅動”是在JNI層之下調用Android的內核Service直接採集,效率最高,但是有些硬件內核修改了Android原生接口,採用“內核視頻採集驅動”並不能正常的工作,若能正常的工作,則建議設置爲“內核視頻採集驅動”模式。
二、採用硬件編碼。
如果您有當前硬件平臺的硬件編解碼SDK,則可以利用AnyChat的“集成第三方編解碼器”的接口來實現硬件編碼、解碼。若您的硬件編碼器需要YUV420SP的視頻格式輸入,可在庫能力標識(dwCapability)上加上:MEDIACODEC_CAPABILITY_YUV420SPINPUT,如下: 默認情況下AnyChat內核提交給Codec的視頻格式是YUV420P,而Android攝像頭採集出來的數據通常是YUV420SP,AnyChat內核會自動進行格式轉換然後提交給Codec,如果Codec可以接受YUV420SP的數據輸入,則加上MEDIACODEC_CAPABILITY_YUV420SPINPUT標識後,則可以省略YUV420SP -->YUV420P-->YUV420SP之間的格式轉換工作,降低系統資源佔用,提升效率。
如果您是開發一款普及型的音視頻應用,建議您還是繼續保留AnyChat的默認設置,這樣系統的兼容性會更好,能在絕大部分Android硬件上正常工作。
如果您是針對特定的硬件設備開發音視頻應用,建議您嘗試更改下面的一些設置,提升AnyChat for Android SDK的效率:
一、調整設備驅動。
AnyChat for Android SDK中的Demo程序默認採用了“Java驅動”程序,效率比較低,但是兼容性最好。拿視頻採集來說,有“Java視頻採集驅動”和“內核視頻採集驅動”可供選擇,其中“Java視頻採集驅動”是在JNI層之上調用Android提供的Java API來操作攝像頭,採集視頻數據,視頻數據最終傳到內核,經過了JNI層的轉換,效率較低;而“內核視頻採集驅動”是在JNI層之下調用Android的內核Service直接採集,效率最高,但是有些硬件內核修改了Android原生接口,採用“內核視頻採集驅動”並不能正常的工作,若能正常的工作,則建議設置爲“內核視頻採集驅動”模式。
二、採用硬件編碼。
如果您有當前硬件平臺的硬件編解碼SDK,則可以利用AnyChat的“集成第三方編解碼器”的接口來實現硬件編碼、解碼。若您的硬件編碼器需要YUV420SP的視頻格式輸入,可在庫能力標識(dwCapability)上加上:MEDIACODEC_CAPABILITY_YUV420SPINPUT,如下: 默認情況下AnyChat內核提交給Codec的視頻格式是YUV420P,而Android攝像頭採集出來的數據通常是YUV420SP,AnyChat內核會自動進行格式轉換然後提交給Codec,如果Codec可以接受YUV420SP的數據輸入,則加上MEDIACODEC_CAPABILITY_YUV420SPINPUT標識後,則可以省略YUV420SP -->YUV420P-->YUV420SP之間的格式轉換工作,降低系統資源佔用,提升效率。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.