rk3568移植WebRTC AudioProcessing

前言:

大家好,我是飞一样的成长,今天这篇文章主要想分享音频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安装:
go 复制代码
sudo apt update
sudo apt install meson ninja-build python3-pip
pip3 install --user meson
  • 2、在webrt audio processing源码下创建一个文本,同时里面填写的内容如下:
go 复制代码
[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、开始构建和编译:
go 复制代码
meson setup build_arm --cross-file cross_arm_linux.txt --buildtype=release
go 复制代码
cd build_arm
ninja

  • 最后,安装编译出来的库:
go 复制代码
ninja install

查看是否成功了:

可以看到成功了。

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

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

相关推荐
TrueDei7 小时前
WebRTC ICE 候选变成 mDNS 地址导致连接失败:原因分析与解决方案
webrtc
中屹指纹浏览器svip3 天前
WebRTC泄露是什么,怎么关闭?
webrtc
海边捡石子4 天前
从零设计一个通用智能电话平台:FreeSWITCH + ESL + AI 实战架构
人工智能·架构·webrtc
音视频牛哥4 天前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
直播技术开发交流6 天前
Android 端 WHIP 协议推流技术实践:相机/录屏/多路转发WHIP实现测试
webrtc·android whip·rtsp转whip·毫秒级实时媒体流·whip低延时推送·whip推送实现·rtsp转webrtc
程序员阿明8 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc
O。O蛋黄酥啊11 天前
实时语音 Agent 开发完全指南:从 ASR/TTS 到 WebRTC/VAD 的链路拆解
大模型·webrtc·语音识别·tts·asr
海水冷却12 天前
WebRTC 视频通话:从裸写信令到 30 分钟上线
音视频·webrtc
PiaoKe___12 天前
云手机底层架构与工程实践:从 KVM/容器到 WebRTC 串流
智能手机·架构·webrtc
znnnk12 天前
【网络优化】减少B站直播卡顿的上行占用:AdGuard nowebrtc规则 / WebRTC Control 实测
服务器·网络·webrtc·直播·bilibili·adguard