webrtc ns模組android手機音訊處理

2021-07-06 03:20:22 字數 1093 閱讀 8681

專案上要求對手機傳輸出去的音訊進行降噪處理,網上查了查資料,發現webrtc裡面有關於降噪的模組,開始對webrtc學習,ns模組算是乙個開始吧。

首先,需要將webrtc ns模組用android ndk編譯為動態庫,編譯的方法網上很多,不詳細說明了。

webrtc ns模組的使用比較簡單,分為三個部分:

1.初始化

webrtcns_create(&handle);

//先初始化乙個控制代碼

webrtcns_init(handle, frequency);

//將控制代碼傳入,並且要傳入取樣頻率,這裡需要注意,我使用的android上層的audiorecord的取樣頻率是8000,但是我測試發現,給frequency也傳8000,效果很不好,傳入  16000,效果很好,不太理解,有時間了再研究看看

webrtcns_set_policy(handle, kveryhigh);

//將控制代碼傳入,第二個引數是去噪效果,可根據自己要求傳入

2.對音訊資料的處理

int webrtcns_process(nshandle* ns_inst, short* spframe, short* spframe_h, short* outframe, short* outframe_h)

//第乙個引數很簡單,傳入初始化的控制代碼,我的安卓的取樣頻率是8000,所以第三個和第五個引數傳入null,安卓上層採到的音訊傳入低二個引數,去噪完成後的音訊資料,會  從第四個引數傳出。具體如下:

webrtcns_process(handle, buffer_in, null, buffer_out, null); 

需要注意的是:傳入的pcm資料肯定為short型別,傳出的也是short型別,但是我發現,這個傳出的short型別資料如果直接進行g711編碼,如果編碼為g711a的話,會有雜音,但是編碼為g711u的話,沒有雜音,所以,如果專案要求輸出g711a,那麼得先編碼為g711u再轉換為g711a,如果哪位大神知道更好的解決方案,請指教。

3.free

不需要降噪處理了,就將handle釋放即可,webrtcns_free(handle);

windows下用qemu搭建android

3.開啟命令列 如果windows7或更高 則用管理員執行命令列,命令列進入進入解壓qemu的目錄執行 c qemu 0.9.0 windows qemu img create android.img 512m 建立乙個512m的硬碟映象 4.把android映象直接拷貝到qemu的目錄下 5.在命...

Android的開發之 無線除錯android裝置

這段時間一直在忙啊忙,公司要做機頂盒,沒有人做過,無奈之下只能邊研究邊做,經過乙個多月的時間,測試版本終於出來了。今天給大家介紹下使用adb命令無線除錯除錯安卓應用,那有些人肯定會問,無線除錯有啥用啊,連著線除錯挺好的。那如果線壞了那,你會說在換乙個,那如果電腦usb插口壞了那,當然可以換個電腦,哈...

明天 你看好Erlang還是看好android

1.當erlang和android擺在你面前你會選那乙個。android手機開發平台在國內隨3g的到來很多企業都看好android,google的退出也並沒有影響到國內對android的追捧。移動化的中國肯定會有android的一席之地。android的開放式吸引了一大批開發人員。有的帖子上還說70...