WebRTC offer - answer交换sdp流程分析

news/2024/10/23 22:27:08/

转载学习:
两端开启音视频通讯时,一方做为offer主动发出邀请,另一方做为answer被动等待offer的邀请做出反应。
代码中的流程:

Offer:

  1. offerForConstraints,得到sdp后回调 <第1.1步>。
  • 1.1. didCreateSessionDescription
  • 1.1.1.,如果有错直接返回错误给上层,没错继续 <第1.1.2步>。
  • 1.1.2. setLocalDescription设置sdp,回调 <第1.1.2.1步>。
  • 1.1.2.1. didSetSessionDescriptionWithError 如果有错直接返回错误给上层。

1.2. 根据sdp的RTCSdpType生产msg,调用sendSignalingMessage通过信令服务器发送给远程answer。
1.3. setMaxBitrateForPeerConnectionVideoSender设置视频发送最大码率。
Answer:

  1. 收到Offer的sdp后调用setRemoteDescription,然后回调 <第1.1步>。
  • 1.1. didSetSessionDescriptionWithError

  • 1.1.1. 如果有错直接返回错误给上层,没错继续 <第1.1.2步>。

  • 1.1.2. answerForConstraints回调 <第1.1.2.1步>,传入answerForConstraints得到的sdp。

  • 1.1.2.1 didCreateSessionDescription

  • 1.1.2.1.1 如果有错直接返回错误给上层,没错继续<第1.1.2.1.2步>。

  • 1.1.2.1.2. setLocalDescription设置从answerForConstraints得到的sdp,回调 <第1.1.2.1.2.1步>。

  • 1.1.2.1.2.1 didSetSessionDescriptionWithError 如果有错直接返回错误给上层。没错因为已经设置了localDescription所以不做其他处理。

 **1.1.2.2** 根据sdp的RTCSdpType生产msg,调用sendSignalingMessage通过信令服务器发送给远程offer。- **1.1.2.3** setMaxBitrateForPeerConnectionVideoSender设置视频发送最大码率。

1
2
Offer:

  1. 收到Offer的sdp后调用setRemoteDescription,然后回调 <第1.1步>。
  • 1.1. didSetSessionDescriptionWithError 如果有错直接返回错误给上层。

总结
从以上可以看出代码有多晕,主要层层回调还把didSetSessionDescriptionWithError重用在多处的原因,然后恶心的oc代码又臭又长,每个方法名都长到吓死人,看的人眼花缭乱。
写着上面的1.1,1.2之类的我自己都恶心了。

总结一下流程:
offer先调用offerForConstraints得到自己的offerSdp,setLocalDescription(offerSdp),把offerSdp发给远程answer,同时设置自己发送视频的最大码率。

answer收到offerSdp后,setRemoteDescription(offerSdp)。answerForConstraints得到自己的answerSdp,setLocalDescription(answerSdp),把answerSdp发送给offer,同时设置自己发送视频的最大码率。

offer收到answerSdp后,setRemoteDescription(answerSdp)。

以上很多调用的WebRTC API都产生回调,回调可能返回错误,此时都要处理错误,一般就是把错误传递给上层,然后关闭整个会话。


http://www.ppmy.cn/news/69244.html

相关文章

抖音SEO矩阵系统源码开发搭建(一)

抖音SEI矩阵系统源码开发&#xff0c;需要遵循一下步骤&#xff1a; 1. 确定需求和功能&#xff1a;明确系统的主要目标和需要实现的功能&#xff0c;包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构&#xff1a;根据需求和功能确定系…

基于JavaWeb的美妆购物平台

文章目录 项目介绍主要功能截图:前台登录首页产品中心排行榜品牌库资讯测评后台用户管理产品数据资讯管理广告列表测评审核订单管理部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给…

消息队列中间件介绍

消息队列介绍 消息队列中间件是大型系统中的重要组件&#xff0c;已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能&#xff0c;已经成为异步RPC的主要手段之一。 目前常见的消息中间件有Active…

【代码调试】《Multi-scale Positive Sample Refinement for Few-shot Object Detection》

论文地址&#xff1a;https://arxiv.org/abs/2007.09384#:~:textMulti-Scale%20Positive%20Sample%20Refinement%20for%20Few-Shot%20Object%20Detection.,previous%20attempts%20that%20exploit%20few-shot%20classification%20techniques%20 代码地址&#xff1a;https://git…

二、Eureka注册中心

目录 注册中心主要有三种角色&#xff1a; 1、服务提供者&#xff08;RPC Server&#xff09; 2、服务消费者&#xff08;RPC Client&#xff09; 3、服务注册中心&#xff08;Registry&#xff09; 注册中心实现原理 常用的注册中心&#xff1a; 常用注册中心对比&…

day47—选择题

文章目录 1.对于IP地址130.63.160.2&#xff0c;MASK为255.255.255.0&#xff0c;子网号为&#xff08;B&#xff09;2.将网络物理地址转换为IP地址的协议是&#xff08;D&#xff09;3.TCP连接释放过程&#xff0c;叙述不正确的是&#xff08;B&#xff09;4.下面有关TCP协议的…

菁染料-N-羟基琥珀酰亚胺酯Cyanine7-NHS ester活性脂1432019-64-1

CY7-NHS ester是一种荧光染料&#xff0c;具有橙红色荧光。它的化学式为C41H48ClN3O4&#xff0c;分子量为733.64。CY7-NHS的荧光特性适合生物学应用&#xff0c;它的激发波长为750nm&#xff0c;发射波长为773nm&#xff0c;可用于近红外成像。这种标记物可以用于活细胞成像、…

几个pdf怎么合并在一起?

几个pdf怎么合并在一起&#xff1f;在日常生活和工作中&#xff0c;我们可能会遇到需要将多个PDF文件合并为一个文件的问题。在对PDF文件合并之后&#xff0c;能够更好地组织和管理信息。将pdf文件合并能够在很大程度上提高工作效率&#xff0c;减少查找和打开不同文件的时间。…