2017-05-22更新!
http://pan.baidu.com/s/1nvbTcRf
jni修改後的代碼,可以直接ndk-build出so檔案!!!!!!!!
-------------------------------------------------------
webrtc代碼在android和chromium項目中都有。但是android中的那個帶有Android.mk,稍微修改下就能用ndk-build編譯出libwebrtc_audio_preprocessing.so
更新
cd webrtc
apm幾個子產品:
NS(Noise Suppression 噪聲抑制)、
VAD(Voice Activity Detection 靜音檢測)、
AECM(Acoustic Echo Canceller for Mobile 聲學回聲消除)
AGC(Auto Gain Control 自動增益控制)
剛開始目錄:
删除了modules下的audio_coding目錄,并把src改名為webrtc了,當然同時得修改Android.mk中對audio_coding相關mk的引用,還要修改路徑,原來是src,要改成webrtc.
最後會生成libwebrtc_audio_coding.so,這個需要在Android.mk中修改。其中有個
LOCAL_MODULE := libwebrtc_audio_coding
把相關的删除,從
include $(CLEAR_VARS)
。。。。
include $(BUILD_SHARED_LIBRARY)
這個也可以通過上面一樣的辦法删除
LOCAL_MODULE := libwebrtc_audio_coding_gnustl_static
其它檔案删除:MODULE_LICENSE_BSD, NOTICE,TODO
test目錄删除,.git目錄删除
最終效果:
發現在modules\audio_processing\test目錄下有unit_test.cc
ndk-build編譯,幾乎很少改動。即可生成libwebrtc_audio_preprocessing.so
===================================
上面錯誤解決:需要将源代碼放在一個叫jni的目錄中。
解決:
#include <map>報錯
由于 NDK 預設使用最小 C++ 運作時庫進行項目的編譯,導緻無法編譯 WebRTC 中使用諸如std::map 等 STL 容器的源碼。是以我們需要自行設定适合本項目的 C++ 運作時庫 gnustl_static。
Application.mk
APP_ABI := armeabi-v7a
APP_STL := gnustl_static
APP_PLATFORM :=21
版本問題,
解決辦法:
APP_PLATFORM := android-9 //對應2.3.1
#APP_STL := stlport_static
2.
undefined reference to 'WebRtcSpl_SqrtFloor'
這個函數在spl_sqrt_floor.c,在
webrtc\common_audio\signal_processing\Android.mk中的LOCAL_SRC_FILES加上
spl_sqrt_floor.c \
生成的so
附:
參考:
<a href="https://github.com/webrtc/samples" target="_blank">https://github.com/webrtc/samples</a>