pjsip webrtc-aec3如何开启

2023-04-25 16:40:27 浏览数 (1)

1、开启webrtc-aec3,configure脚本开启--enable-libwebrtc-aec3

代码语言:javascript复制
./configure --host=arm-openwrt-linux-muslgnueabi  --prefix=$PWD/install  --disable-libwebrtc --disable-libyuv --disable-v4l2   --disable-opencore-amrnb --disable-speex-codec --disable-speex-aec --with-openh264=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1/third_party/openh264-2.3.1  --enable-libwebrtc-aec3 --with-opus=/home/lyz/work/broadcast_app/app/thirds_libs_src/pjproject-2.12.1/third_party/opus/ 

修改third_partybuildos-auto.mak

修改前:

代码语言:javascript复制

ifneq (1,1)
ifeq (0,1)
# External webrtc AEC3
else
DIRS  = webrtc_aec3
WEBRTC_AEC3_OTHER_CFLAGS = -fexceptions 
ifneq ($(findstring sse2,),)
    export WEBRTC_AEC3_SRC = 
	common_audio/resampler/sinc_resampler_sse.o 
	common_audio/third_party/ooura/fft_size_128/ooura_fft_sse2.o
    export WEBRTC_AEC3_SRC  = 
	common_audio/resampler/sinc_resampler_avx2.o 
	modules/audio_processing/aec3/adaptive_fir_filter_erl_avx2.o 
	modules/audio_processing/aec3/adaptive_fir_filter_avx2.o 
	modules/audio_processing/aec3/fft_data_avx2.o 
	modules/audio_processing/aec3/matched_filter_avx2.o 
	modules/audio_processing/aec3/vector_math_avx2.o 
	modules/audio_processing/agc2/rnn_vad/rnn_vector_math_avx2.o
    WEBRTC_AEC3_OTHER_CFLAGS  = -mfma
else ifneq ($(findstring neon,),)
    export WEBRTC_AEC3_SRC = 
	common_audio/resampler/sinc_resampler_neon.o 
	common_audio/third_party/ooura/fft_size_128/ooura_fft_neon.o
    WEBRTC_AEC3_OTHER_CFLAGS  = -DWEBRTC_HAS_NEON
endif
endif
endif

修改后:

代码语言:javascript复制

ifneq (,1)
ifeq (0,1)
# External webrtc AEC3
else
DIRS  = webrtc_aec3
WEBRTC_AEC3_OTHER_CFLAGS = -fexceptions -mfpu=neon -mfloat-abi=hard -DWEBRTC_LINUX=1  -DWEBRTC_APM_DEBUG_DUMP=0 -DWEBRTC_POSIX=1
ifneq ($(findstring sse2,sse2),)
#    export WEBRTC_AEC3_SRC = 
#	common_audio/resampler/sinc_resampler_sse.o 
#	common_audio/third_party/ooura/fft_size_128/ooura_fft_sse2.o
#    export WEBRTC_AEC3_SRC  = 
#	common_audio/resampler/sinc_resampler_avx2.o 
#	modules/audio_processing/aec3/adaptive_fir_filter_erl_avx2.o 
#	modules/audio_processing/aec3/adaptive_fir_filter_avx2.o 
#	modules/audio_processing/aec3/fft_data_avx2.o 
#	modules/audio_processing/aec3/matched_filter_avx2.o 
#	modules/audio_processing/aec3/vector_math_avx2.o 
#	modules/audio_processing/agc2/rnn_vad/rnn_vector_math_avx2.o
#    WEBRTC_AEC3_OTHER_CFLAGS  = -mfma
else ifneq ($(findstring neon,sse2),)
    export WEBRTC_AEC3_SRC = 
	common_audio/resampler/sinc_resampler_neon.o 
	common_audio/third_party/ooura/fft_size_128/ooura_fft_neon.o
    WEBRTC_AEC3_OTHER_CFLAGS  = -DWEBRTC_HAS_NEON
endif
endif
endif

2、配置aec-3参数,启动配置文件中增加webrtc echo的配置

代码语言:javascript复制
#webrtc echo
--ec-opt=4

3、开启回音消除后的效果;

4、如何将opus编码调到sdp协商的最开头,修改pjmedia_codec_register_audio_codecs 调整代码的注册顺序;

代码语言:javascript复制

#if PJMEDIA_HAS_OPUS_CODEC
    /* Register OPUS */
    status = pjmedia_codec_opus_init(endpt);
    if (status != PJ_SUCCESS)
        return status;
#endif

0 人点赞