news 2026/2/9 4:13:56

<span class=“js_title_inner“>rk3568移植WebRTC AudioProcessing</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>rk3568移植WebRTC AudioProcessing</span>

前言:

大家好,我是飞一样的成长,今天这篇文章主要想分享音频3A的内容。在之前有网友找我怎么移植原生的webrtc到rk3568/rk3588上,当时我自己也没有移植过,后面折腾了一个礼拜才搞定,当时遇到的最大问题,主要是编译器g++对于webrtc最新版本是不兼容的,导致始终无法编译过,后面切换了低一点的版本才搞定:

但是这里面的内容比较多,其实也是可以专门关注webrtc audio模块的,主要就是关注音频3A算法:

  • AEC

  • ANC

  • AGC

其实我自己也关注了很久了的音频3A这块,比如有rk自带的3A模块,还有一些开源的项目:

  • rnnoise

但是效果最好的还是webrtc的效果最好,而且也最成熟,如果从商业开发的角度来看的话。

而且为了简化内容,webrtc 有专门抽取出来的webrtc audio开源模块WebRTC AudioProcessing,所以我的精力就想专门研究里面的3A算法,要搞就搞最好的,不搞杂毛:

同时结合我自己的工作经历,这块的内容还是非常的重要,搞音频最难的地方,就是这块。当然还有底层的音频,也会涉及到算法。在我们做嵌入式开发,音频的指标,也是有严格的标准的,需要用专业的仪器测试,比如说信噪比指标。

rk3568移植WebRTC AudioProcessing:

其实这里没有平台的限制,只是我这里以我手上有的板子来进行移植,其他平台都可以按照我下面的方法进行移植即可。

移植步骤:

  • 1、 meson和ninja安装:

sudo apt update sudo apt install meson ninja-build python3-pip pip3 install --user meson
  • 2、在webrt audio processing源码下创建一个文本,同时里面填写的内容如下:

[binaries] c = '/home/txp/rk3568/rk3568_sdk/buildroot/output/rockchip_atk_dlrk3568/host/bin/aarch64-buildroot-linux-gnu-gcc' cpp = '/home/txp/rk3568/rk3568_sdk/buildroot/output/rockchip_atk_dlrk3568/host/bin/aarch64-buildroot-linux-gnu-g++' ar = '/home/txp/rk3568/rk3568_sdk/buildroot/output/rockchip_atk_dlrk3568/host/bin/aarch64-buildroot-linux-gnu-ar' strip = '/home/txp/rk3568/rk3568_sdk/buildroot/output/rockchip_atk_dlrk3568/host/bin/aarch64-buildroot-linux-gnu-strip' pkgconfig = '/home/txp/rk3568/rk3568_sdk/buildroot/output/rockchip_atk_dlrk3568/host/bin/pkg-config' cmake = 'cmake' [properties] needs_exe_wrapper = true# 如果在构建中需要运行可执行文件(通常交叉时不能执行) exe_wrapper = 'qemu-arm-static'# 如果有 QEMU 支持运行目标可执行文件来生成一些配置 [host_machine] system = 'linux' cpu_family = 'arm' cpu = 'aarch64' endian = 'little'
  • 3、开始构建和编译:

meson setup build_arm --cross-file cross_arm_linux.txt --buildtype=release
cd build_arm ninja
  • 最后,安装编译出来的库:

ninja install

查看是否成功了:

可以看到成功了。

最后就开启2025年正式研究音频3A了。

后面的内容,会测试一下效果,先用alsa或者tinyalsa采集音频,然后看一下经过webrtc audio processing处理效果以及里面的具体实现学习。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 2:34:43

which命令

which命令,查看所使用的一系列命令的程序文件存放在哪里语法:which要查找的命令find 用于查找指定的文件按文件名查找:find起始路径 -name"被查找文件名"支持通配符按文件大小查找:find 起始路径-size1-n[kMG]

作者头像 李华
网站建设 2026/2/7 1:12:50

<span class=“js_title_inner“>ZYNQ MPSOC VCU介绍</span>

1 什么是VCU?VCU 的全称是 Video Codec Unit,即视频编解码单元, Zynq UltraScale MPSoC 系列产品分为三种类型,分别是 CG 型器件、 EG 型器件和 EV 型器件, 其中只有 EV 型器件集成了 VCU。 VCU 适用于视频监控和网络视频连接应用…

作者头像 李华
网站建设 2026/2/6 22:31:00

企业级社区养老服务系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着人口老龄化进程的加快,社区养老服务需求日益增长,传统的养老服务模式已难以满足现代社会的需求。社区养老服务系统的数字化、智能化成为提升服务效率和质量的关键。企业级社区养老服务系统通过整合资源、优化管理流程,为老年人提供便…

作者头像 李华
网站建设 2026/2/6 21:51:53

企业级在线互动学习网站管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着信息技术的快速发展和教育模式的数字化转型,企业级在线互动学习平台成为提升员工培训效率和知识管理的重要工具。传统线下培训模式受限于时间和空间,难以满足现代企业灵活、高效的学习需求。在线学习系统通过实时互动、个性化课程推荐和数据分…

作者头像 李华
网站建设 2026/2/7 10:18:15

SpringBoot+Vue 社区养老服务系统管理平台源码【适合毕设/课设/学习】Java+MySQL

摘要 随着人口老龄化问题日益加剧,社区养老服务需求快速增长,传统养老服务模式已无法满足高效化、信息化的管理需求。社区养老服务系统管理平台旨在通过数字化手段优化养老服务流程,提升服务效率和质量。该系统整合了老年人健康档案管理、服务…

作者头像 李华
网站建设 2026/2/8 7:11:37

本地 vs 云端部署:成本、隐私、延迟、运维复杂度怎么选?

传送锚点TL;DR(给赶时间的读者)1) 先把概念说清:本地、云端、混合各是什么?2) 成本对比:CAPEX vs OPEX,隐藏账单在哪里?2.1 本地成本(On-Prem)的真实构成2.2 云端成本&am…

作者头像 李华