zoukankan      html  css  js  c++  java
  • webrtc的音频处理模块apm( audio processing)下载与编译出libwebrtc_audio_preprocessing.so

    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目录删除
     
     
     
    最终效果:
    发现在modulesaudio_processing est目录下有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
     
     

    版本问题,

    好像webrtc对Android的版本要求过高,至少要求2.3.1,所以从原来的2.2换成2.3.1即可

     解决办法:

    #APP_PLATFORM := android-8     //对应2.2

    APP_PLATFORM := android-9     //对应2.3.1
    #APP_STL := stlport_static 
    APP_STL := gnustl_static

     
    2.
     
    undefined reference to 'WebRtcSpl_SqrtFloor'
     

    这个函数在spl_sqrt_floor.c,在

    webrtccommon_audiosignal_processingAndroid.mk中的LOCAL_SRC_FILES加上
    spl_sqrt_floor.c
     
     
    生成的so
    附:
     
    Application.mkAndroid.mk
     
     
  • 相关阅读:
    【Windows】Windows server2008远程桌面只允许同时存在一个会话
    【go进阶】一个简单的go服务器实现
    【linux杂谈】查看centOS系统的版本号和内核号
    【linux杂谈】centos6和centos7中固定IP的方法
    Eclipse导入GitHub项目(转)
    国际锐评
    Spring Boot与分布式
    Spring Boot与分布式
    springboot 与任务
    废掉一个人最隐蔽的方式,是让他忙到没时间成长(转)
  • 原文地址:https://www.cnblogs.com/lidabo/p/7324080.html
Copyright © 2011-2022 走看看