本文概要介绍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模块进行远端分析。最后播放出来。

如下为本地回环录音和播放代码:

[cpp] view plain copy
  1. VoiceEngine* ve = VoiceEngine::Create();
  2. VoEBase* base = VoEBase::GetInterface(ve);
  3. base->Init();
  4. int chId = base->CreateChannel();
  5. base->SetSendDestination(chId,3000,"127.0.0.1",4000);
  6. base->SetLocalReceiver(chId,3000,3001,"127.0.0.1");
  7. base->StartPlayout(chId);
  8. base->StartReceive(chId);
  9. base->StartSend(chId);
  10. //....sleep...wait.....
  11. base->StopSend(chId);
  12. base->StopReveive(chId);
  13. base->StopPlayout(chId);
  14. base->Terminate();

WebRTC音频处理流程简介相关推荐

  1. WebRTC音频处理流程概述

    摘要:本文主要介绍WebRTC的APM. WebRTC强大的技术和易用性在此不再累述.研究了RTC那么久的时间,在国内的社区和论坛鲜见详细介绍其中具体技术的文章和讨论.因此准备花点时间总结一下自己对W ...

  2. stun协议笔记二(webrtc之turn流程简介)

    一.turn典型应用场景 这张图描述的是TURN Client.PeerA.PeerB三方会议之间,网络报文互相通讯的场景.其中: 1.TURN Client客户端.PeerA分别连接到两个内网中,并 ...

  3. WebRTC视频数据流程分析

    本文来自<WebRTC Native开发实战>书籍作者许建林在LiveVideoStack线上分享中的内容,详细分析总结 WebRTC 的视频数据流程,并对大型项目如何快速上手:分析方法, ...

  4. MDM9x35MDM9x35启动流程简介

    1.前言.... 3 1.1编写背景... 3 1.2概述... 3 1.3定义与缩写... 3 1.4参考资料... 4 2.启动流程.... 4 2.1子系统.处理器及启动地址... 4 2.2启 ...

  5. WebRTC音频系统 音频发送和接收

    文章目录 3.1音频数据流发送流程 3.2 发送中的编码.RTP打包 3.3 AudioSendStream类关系 3.4`webrtc::AudioSendStream` 创建和初始化 3.5 创建 ...

  6. webRTC混音流程

    原因:由于目前开始调研混音算法,故在此分析一下webRTC的实现流程,其他实现流程在另外一个博客有记录. 概况:目前调研的混音算法在多路混音时只有webRtc的原理符合基本流程.webRtc充分考虑了 ...

  7. QT程序启动加载流程简介

    1. QT应用程序启动加载流程简介 1.1      QWS与QPA启动客户端程序区别 1.1.1   QWS(Qt Window System)介绍 QWS(Qt Windows System)是Q ...

  8. 【Android 安装包优化】资源混淆 ( 资源混淆效果 | APK 构建流程简介 | 资源 ID 组成 )

    文章目录 一.资源混淆效果 二.APK 构建流程简介 三.资源 ID 组成 四.参考资料 一.资源混淆效果 资源混淆 , 将资源名称与目录进行混淆 , 提高了反编译的难度 , 同时也减小了 APK 文 ...

  9. SLAM:SLAM相机简介、SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略

    SLAM:SLAM相机简介.SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略 目录 SLAM相机 1.单目相机 2.双目Stereo相机 3.深度相机/RGB-D相机 SLAM五步流程

  10. WebRTC 音频发送和接收处理过程

    曾经整理过一个 WebRTC 音频发送和接收处理的关键过程,WebRTC Audio 接收和发送的关键过程 ,不过之前的分析是基于比较老的版本做的.分析所基于的应用程序,依然选择 WebRTC 的示例 ...

最新文章

  1. 人工智能产业的发展是什么样的呢?
  2. Undefined、Null区别渗透
  3. java s1_转!!Java 基础面试题的剖析: short s1=1;s1 = s1 +1 报错? s1+=1 呢
  4. java开发一款坦克大战游戏
  5. Linux环境_源码安装LibreOffice实现文件在线预览doc,doxc,xls,xlsx,ppt,pptx 文件
  6. 在Ubuntu 18.04系统上安装Java 11的方法
  7. pandas将series所有值转变为字符串类型
  8. java web集成ldap_关于Java LDAP登录集成
  9. ASP生成静态页面的方法
  10. 《网上图书销售系统》功能需求
  11. bilibili发送弹幕
  12. 商汤的AI伴游小精灵
  13. 港中深、华为联合培养,韩晓光课题组招收三维视觉数字人方向博士生
  14. 共赴一场有温度的毕业典礼 风声家政商学院高级职业经理人研修班一期收官
  15. Realm学习(二)
  16. mongodb 基本介绍
  17. 美团王兴再调整组织架构,大众点评高管淡出核心部门
  18. 八字易经算法之用JAVA实现排大运
  19. VINS学习(二)IMU预积分原理与实现
  20. python如何利用淘宝赚钱_Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!...

热门文章

  1. Mac下解压.bin文件
  2. 图像处理——乘性噪声和加性噪声
  3. Matlab闪退打不开解决方法
  4. 金沙滩51单片机LED 闪烁程序
  5. 苹果Mac装双系统对电脑有什么影响?Mac装双系统的利弊分析
  6. php创建留言板,PHP开发留言板教程之创建数据库
  7. Codeforces 1194D
  8. arcgis出比例尺大小相同的图
  9. 大数据核心技术是什么?
  10. css flex布局iOS8兼容性问题