• win10系统单独编译和使用WebRTC的回声消除(AEC)、音频增益(AGC)、去噪(NS)模块


    一、简介

    本人想单独编译并使用WebRTC的音频回声消除模块,奈何技术有限,于是在百度的海洋里大海捞针,发现了https://www.cnblogs.com/mod109/p/5827918.html#!comments这篇博文已经做了相关工作,不甚感激!
    但是我的需求是在window系统下进行编译,而该博主是基于其它平台做的项目(由于本人太菜,看不出是啥平台),于是本篇的内容就是基于https://www.cnblogs.com/mod109/p/5827918.html#!comments这篇博文的工作移植到windows系统上并运行成功。

    二、工具

    Windows10+VScode+xmake

    三、具体流程

    • 1、删除不需要的文件,并将WebRtcAudioTest.cpp中主函数名 int _tmain(int argc, _TCHAR* argv[])改为int main(int argc, char* argv[])
      由于我使用VScode,而原项目是vs2010的工程,因此我不需要stdafx.h和stdafx.c这两个文件,先删掉这两个文件,并在WebRtcAudioTest.cpp文件中将#include"stdafx.h"注释掉
      注:理论上使用vs2010打开这个项目能编译成功,但是我尝试一番后,还是运行报错,所以在vs2010上运行此项目未成功。
    • 2、写个最基础的xmake.lua文件,直接进行编译
    点击查看代码
    target("main")
        set_kind("binary")
        add_files("/*.cpp")
        add_includedirs("/")
        set_targetdir("./output")
    
    编译后你会发现有一堆报错,仔细看就会发现是一些函数未定义,如下


    然后只需要将未定义的函数名在vscode中全局搜索一下,看看是在哪个xxx.c文件中定义的,在xmake.lua文件中添加上这个xxx.c文件就可以了

    • 3、重复步骤2,直到编译成功!

    四、结语

    该方法虽然有点繁琐,但是有效啊,千万不要在编译的时候一下子把项目中webrtc库里的所有.c文件都带上,本人刚开始就是这么干的,结果各种报错,搞了好多天都没搞好。
    编译成功后就可以愉快的进行WebRTC中的回声消除、增益、去噪三个模块进行测试了!

    附录:

    下边附上步骤2中所需要的所有.c文件

    点击查看代码
    target("main")
        set_kind("binary")
        add_files("/*.cpp")
        add_files("webrtc/modules/audio_processing/aec/**.c",
                  "webrtc/modules/audio_processing/agc/**.c", 
                  "webrtc/modules/audio_processing/ns/noise_suppression.c",
                  "webrtc/modules/audio_processing/ns/ns_core.c",
                  "webrtc/modules/audio_processing/utility/**.c", 
                  "webrtc/common_audio/signal_processing/splitting_filter.c",
                  "webrtc/common_audio/signal_processing/resample_by_2.c",
                  "webrtc/common_audio/signal_processing/division_operations.c",
                  "webrtc/common_audio/signal_processing/copy_set_operations.c",
                  "webrtc/common_audio/signal_processing/dot_product_with_scale.c",
                  "webrtc/common_audio/signal_processing/spl_sqrt.c",
                  "webrtc/common_audio/signal_processing/randomization_functions.c",
                  "webrtc/system_wrappers/source/cpu_features.cc")
        add_includedirs("/")
        set_targetdir("./output")
    

    下载

    可在该原博客中下载项目代码:https://www.cnblogs.com/mod109/p/5827918.html#!comments

  • 相关阅读:
    Web进阶
    11 | docker-compose 的使用
    RN开发环境的搭建
    【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
    RabbitMQ------死信队列(消息超时、达到最大长度、消费拒绝)(六)
    CSRF 002
    ffplay源码分析:音频重采样
    xsschallenge通关攻略详解
    Springboot简单功能示例-6 使用加密数据源并配置日志
    Flink CDC详细教程(介绍、原理、代码样例)
  • 原文地址:https://www.cnblogs.com/tsblog/p/17754345.html