WebRTC相关记录

WebRTC连接流程

连接过程

当前采用服务端框架为 LiCode

WebRTC通话原理及相关概念

媒体协商

彼此了解对方支持的媒体格式

SDP

参数含义

网络协商

WebRTC源码相关

WebRTC业务SDK功能

1.消息推送(语音电话提醒、新消息接收、对方挂断、支持拓展额外参数)

2.本地长连接(WebRTC dataChannel、保活)

3.语音通话(音频采集、降噪、回声消除、静音)

4.各种状态封装(连接成功、超时、失败、重连等)

WebRTC待完成

单独编译VAD(静音检测)、NS(降噪)、AECM(回声消除)三模块

NS:RNNoiseWebRTC-NS

WebRTC随手记

SamplesReadyCallback:在采集音频时可以获取音频信息

setAudioProcessingFactory():设置音频处理相关配置

webrtc_voice_engine.cc音频控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//音频处理默认配置
{
AudioOptions options;
options.echo_cancellation = true;
options.auto_gain_control = true;
options.noise_suppression = true;
options.highpass_filter = true;
options.stereo_swapping = false;
options.audio_jitter_buffer_max_packets = 200;
options.audio_jitter_buffer_fast_accelerate = false;
options.audio_jitter_buffer_min_delay_ms = 0;
options.audio_jitter_buffer_enable_rtx_handling = false;
options.typing_detection = true;
options.experimental_agc = false;
options.experimental_ns = false;
options.residual_echo_detector = true;
bool error = ApplyOptions(options);
RTC_DCHECK(error);
}


//降噪等级默认为 High
if (options.noise_suppression) {
const bool enabled = *options.noise_suppression;
apm_config.noise_suppression.enabled = enabled;
apm_config.noise_suppression.level =
webrtc::AudioProcessing::Config::NoiseSuppression::Level::kHigh;
RTC_LOG(LS_INFO) << "NS set to " << enabled;
}

audio_processing_impl.cc Audio_processing处理类,包含回声消除、降噪等功能


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!