Webrtc audio
2024-10-20 03:50:11
整体理解
在 WebRTC 中,Call 是peer connection 的。
为 WebRTC Call 注入的 AudioState 来自于全局的 MediaEngine 的 VoiceEngine。
AudioState 是全局的,而 Call 则是 connection 内部的。
创建接受者 WebRtcAudioReceiveStream
WebRTC 应用需要起一个专门的专门的连接,用于接收媒体协商信息。在收到媒体协商信息之后,则将媒体协商信息进行层层传递及处理.
BaseChannel::SetRemoteContent // 设置远端内容
WebRtcVoiceMediaChannel::AddRecvStream() //最终执行的
Call:: CreateAudioReceiveStream //Call 创建
网络包到播放前
- 从网络收到 UDP 包,
PhysicalSocketServer::Wait()
BaseChannel::OnPacketReceived
BaseChannel::ProcessPacket
到媒体引擎
根据 RTP 包的 ssrc 派发进不同的 channel,ACM receiver 的处理,一直到最终插入 NetEq 的缓冲区。在 NetEq 中将会完成数据包的重排序,网络对抗,音频的解码等处理操作。
创建发送者 AudioSendStream
BaseChannel::SetLocalContent
webrtc_voice_engine:: WebRtcAudioSendStream
Call::CreateAudioSendStream
网络包发送
- 编码线程
ChannelSend::ProcessAndEncodeAudio
PacedSender:: InsertPacket
// PacedSender有生产消费模型, 定时器消费插入的数据BaseChannel::SendPacket
最新文章
- python头部注释 vim添加头部注释
- POJ 1244 Slots of Fun(计算几何)
- 利用smarty call函数实现无限极分类
- 由浅入深了解Thrift之客户端连接池化
- 内网能PING通TELNET通不能访问解决
- 使用Yeoman搭建 AngularJS 应用 (1) —— 介绍
- 基于Jquery+Ajax+Json实现分页显示
- Selenium webdriver 操作chrome 浏览器
- xcode4.5.1、iphone5、ios6 使用记录
- 利用try-catch判断变量是已声明未声明还是未赋值
- Open ID Connect(OIDC)在 ASP.NET Core中的应用
- Python高级笔记(二) -- 深拷贝和浅拷贝
- hibernate查询出的实体,set值后,自动更新到数据
- 初尝Spring Cloud Config
- mysql 开发进阶篇系列 13 锁问题(关于表锁,死锁示例,锁等待设置)
- winfrom里面打印类似小票
- extern 用法,全局变量与头文件(重复定义)
- POJ2125 Destroying The Graph
- MySQL中INSERT的一般用法
- Servlet容器请求处理
热门文章
- Postgresql invalid command \N数据恢复处理
- ChatGpt聊天API使用
- kubebuilder简明教程
- AttributeError: module 'openai' has no attribute 'ChatCompletion'的解决办法
- shiyansi
- Python爬取亚马逊商品页面
- layui富文本编辑器提交时无法获取到值
- Centos操作系统在虚拟机VMware上的安装(二)
- java ArrayList 原理
- react toolkit 异步请求之后调取其他函数