WebRTC音频处理流程简介
本文概要介绍webRTC的音频处理流程,见下图:
webRTC将音频会话抽象为一个通道(Channel),譬如A与B进行音频通话,则A需要建立一个Channel与B进行音频数据传输。上图中有三个Channel,每个Channel包含编解码和实时传输协议(Real-time Transport Protocol,RTP)/实时传输控制协议(Real-time Control Protocol,RTCP)发送功能。
以一个Channel而言,应用程序中将包含三个活动线程,录音线程,音频接收线程和播放线程。
1)录音线程:负责麦克风音频的采集,见图中红色路径,采集到音频后,缓存到一定长度,进行音频处理,主要包括AEC,AGC和NS等。然后送到Channel,经过音频Codec模块编码,封装成RTP包,通过Socket发送出去;
2)接收线程:见蓝色路径,负责接收远端发送过来的音频包,解封RTP包,解码音频数据,送入NetEQ模块缓存。
3)播放线程:负责耳机声音播放,见绿色路径。播放线程去OutMixer中获取要播放的音频数据,首先依次获取参与会话的Channel中NetEQ存储的音频帧,可以对其做AGC和NS处理;然后混合多个Channel的音频信号,得到混合音频,传递给AudioProcessing模块进行远端分析。最后播放出来。
如下为本地回环录音和播放代码:
- VoiceEngine* ve = VoiceEngine::Create();
- VoEBase* base = VoEBase::GetInterface(ve);
- base->Init();
- int chId = base->CreateChannel();
- base->SetSendDestination(chId,3000,"127.0.0.1",4000);
- base->SetLocalReceiver(chId,3000,3001,"127.0.0.1");
- base->StartPlayout(chId);
- base->StartReceive(chId);
- base->StartSend(chId);
- //....sleep...wait.....
- base->StopSend(chId);
- base->StopReveive(chId);
- base->StopPlayout(chId);
- base->Terminate();
WebRTC音频处理流程简介相关推荐
- WebRTC音频处理流程概述
摘要:本文主要介绍WebRTC的APM. WebRTC强大的技术和易用性在此不再累述.研究了RTC那么久的时间,在国内的社区和论坛鲜见详细介绍其中具体技术的文章和讨论.因此准备花点时间总结一下自己对W ...
- stun协议笔记二(webrtc之turn流程简介)
一.turn典型应用场景 这张图描述的是TURN Client.PeerA.PeerB三方会议之间,网络报文互相通讯的场景.其中: 1.TURN Client客户端.PeerA分别连接到两个内网中,并 ...
- WebRTC视频数据流程分析
本文来自<WebRTC Native开发实战>书籍作者许建林在LiveVideoStack线上分享中的内容,详细分析总结 WebRTC 的视频数据流程,并对大型项目如何快速上手:分析方法, ...
- MDM9x35MDM9x35启动流程简介
1.前言.... 3 1.1编写背景... 3 1.2概述... 3 1.3定义与缩写... 3 1.4参考资料... 4 2.启动流程.... 4 2.1子系统.处理器及启动地址... 4 2.2启 ...
- WebRTC音频系统 音频发送和接收
文章目录 3.1音频数据流发送流程 3.2 发送中的编码.RTP打包 3.3 AudioSendStream类关系 3.4`webrtc::AudioSendStream` 创建和初始化 3.5 创建 ...
- webRTC混音流程
原因:由于目前开始调研混音算法,故在此分析一下webRTC的实现流程,其他实现流程在另外一个博客有记录. 概况:目前调研的混音算法在多路混音时只有webRtc的原理符合基本流程.webRtc充分考虑了 ...
- QT程序启动加载流程简介
1. QT应用程序启动加载流程简介 1.1 QWS与QPA启动客户端程序区别 1.1.1 QWS(Qt Window System)介绍 QWS(Qt Windows System)是Q ...
- 【Android 安装包优化】资源混淆 ( 资源混淆效果 | APK 构建流程简介 | 资源 ID 组成 )
文章目录 一.资源混淆效果 二.APK 构建流程简介 三.资源 ID 组成 四.参考资料 一.资源混淆效果 资源混淆 , 将资源名称与目录进行混淆 , 提高了反编译的难度 , 同时也减小了 APK 文 ...
- SLAM:SLAM相机简介、SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略
SLAM:SLAM相机简介.SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略 目录 SLAM相机 1.单目相机 2.双目Stereo相机 3.深度相机/RGB-D相机 SLAM五步流程
- WebRTC 音频发送和接收处理过程
曾经整理过一个 WebRTC 音频发送和接收处理的关键过程,WebRTC Audio 接收和发送的关键过程 ,不过之前的分析是基于比较老的版本做的.分析所基于的应用程序,依然选择 WebRTC 的示例 ...
最新文章
- 人工智能产业的发展是什么样的呢?
- Undefined、Null区别渗透
- java s1_转!!Java 基础面试题的剖析: short s1=1;s1 = s1 +1 报错? s1+=1 呢
- java开发一款坦克大战游戏
- Linux环境_源码安装LibreOffice实现文件在线预览doc,doxc,xls,xlsx,ppt,pptx 文件
- 在Ubuntu 18.04系统上安装Java 11的方法
- pandas将series所有值转变为字符串类型
- java web集成ldap_关于Java LDAP登录集成
- ASP生成静态页面的方法
- 《网上图书销售系统》功能需求
- bilibili发送弹幕
- 商汤的AI伴游小精灵
- 港中深、华为联合培养,韩晓光课题组招收三维视觉数字人方向博士生
- 共赴一场有温度的毕业典礼 风声家政商学院高级职业经理人研修班一期收官
- Realm学习(二)
- mongodb 基本介绍
- 美团王兴再调整组织架构,大众点评高管淡出核心部门
- 八字易经算法之用JAVA实现排大运
- VINS学习(二)IMU预积分原理与实现
- python如何利用淘宝赚钱_Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!...