Android IOS WebRTC 音視頻開發總結(十六)-- 音頻設備操作之opensl與jni


 

本節主要分享視頻通話中android和ios上操作音頻設備的方式,如調解音量大小,啟用揚聲器(本系列文章轉載請說明出處,博客園RTC.Blacker).

 

先看看webrtc中處理音頻設備代碼的目錄結構:

 

第一種方式就是直接調用Android或ObjectC的API,代碼如下(WebRtcAudioTrack.java):

通過調用Android提供的AudioManager類來操作音頻設備(webrtc是用C++寫的,通過JNI來調用這些JAVA方法).

 

下面是IOS中操作音頻設備的方式(audio_device_impl.mm).

 

2,在介紹另外一種方式前我們可以先想想既然WebRTC是用C++來實現的,可以用JNI來調用Android的API,那能不能不通過JNI調用JAVA,而是直接調用他底層的實現類庫呢?帶着這個疑問我們直接看音頻設備初始化方法(audio_device_impl.cc):

通過編譯指令WEBRTC_ANDROID_OPENSLES來控制操作音頻設備的方式,如果啟用則直接調用OpenSles,OpenSles說明如下:

OpenSL ES 提供了可通過C++調用的C語言接口,這些接口功能基本類似於Android中通過JAVA調用的接口:

對於Android NDK開發來說,通過JNI調用OpenSL ES 提供的API,您即可實現大部分音頻操作需要而不用在通過Java來操作.

opensles_input.h內容如下:

opensles_output.h截圖如下:

 

以上,如有錯誤或遺漏,請糾正或補充,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM