项目场景:

硬件平台基于arm32位的RV1126交叉编译pjsip实现SIP语音通话,并开启webrtc-aec3的回声抑制功能。


pjsip版本说明

本人小白一个,https://www.pjsip.org/download.htm # 官方版本 pjproject-2.14.1.tar.gz 编译遇到SSE2不支持问题无法编译通过,后来经过尝试更换sse2neon的头文件,一样无法解决问题,最后放弃了官方版本,哪位大神搞定了官方版本的SSE2问题,欢迎共享经验。
本次编译采用linsys大神的版本,下载地址如下:

https://github.com/aiss83/linsys_pjsip/releases/tag/pjsip-linsys-2.11.8


编译环境说明

系统环境与关键位置信息

# 宿主机使用Ubuntu20.04
Linux ubuntu20 5.15.0-102-generic #112~20.04.1-Ubuntu SMP Thu Mar 14 14:28:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
# 交叉编译器根目录
/home/pi/atk/rv1126/atk-rv1126_sdk_v1.5_20240201/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin
# PJSIP位置
/home/pi/atk/rv1126/app/linsys_pjsip-pjsip-linsys-2.11.8


1 编译alsa-lib-1.2.9,解决arm声卡支持问题

https://www.alsa-project.org/files/pub/lib/ # 下载alsa-lib

tar jxvf alsa-lib-1.2.9.tar.bz2 # 解压缩
cd alsa-lib-1.2.9  
export PATH="/home/pi/atk/rv1126/atk-rv1126_sdk_v1.5_20240201/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/:$PATH"  # 添加临时交叉编译环境变量
./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=`pwd`/__install # 配置编译参数
make  # 编译alsa
make  install   #  按照编译后的库
export CFLAGS+="-I/home/pi/atk/rv1126/app/alsa-lib-1.2.9/__install/include "  # 头文件设置到环境变量(注意最后空格)
export LDFLAGS+="-L/home/pi/atk/rv1126/app/alsa-lib-1.2.9/__install/lib "  # 库文件设置到环境变量(注意最后空格)


2 编译pjsip

https://github.com/aiss83/linsys_pjsip/releases/tag/pjsip-linsys-2.11.8 # 下载地址
linsys_pjsip-pjsip-linsys-2.11.8.tar.gz # 下载文件

tar zxvf linsys_pjsip-pjsip-linsys-2.11.8.tar.gz  # 解压缩
cd linsys_pjsip-pjsip-linsys-2.11.8

vi pjlib/include/pj/config_site.h # 添加插件

#include <pj/config_site_sample.h>
#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0   //关闭port-audio
#define PJMEDIA_AUDIO_DEV_HAS_ALSA 1      //启用alsa
#define PJMEDIA_HAS_WEBRTC_AEC 1          //外部ACE
#define PJMEDIA_WEBRTC_AEC_USE_MOBILE 1   //外部ACE

配置编译选项

./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf  --prefix=`pwd`/__install --enable-libwebrtc-aec3
make dep # 确认依赖
make  # 编译

编译完成
请添加图片描述

拷贝到开发板

cd pjsip-apps/bin
scp pjsua root@192.168.50.15:/root   # 通过scp拷贝到开发板

开发板上测试

./pjsua --ec-opt=4  # 注意关键参数  --ec-opt=4  代表:webrtc-aec3开启
+a # 注册命令,回车
sip:63998@223.254.2.50:6072  # 回车
sip:223.254.2.50:6072   #  回车 
223.254.2.50    # 服务器IP, 回车
63998     # 用户名,回车
1234      # 米啊,回车
# 完成注册,进行拨号
m   # 拨号命令,回车
sip:63993@223.254.2.50:6072

测试结果,回声消除工作正常

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐