webrtc学习(七)-媒体协商

一.概述

媒体协商嘴主要的作用就是看通信双方都支持那些编解码器,这些编解码器又包含那些参数,比如音频的参数包括采样率,采样大小,通道数,对于视频的参数包括分辨率帧率等一系列参数,此外传输中用的payloadtype也是协商中确定的,这些信息都是在sdp中进行的描述。

二.媒体协商步骤

从上图中可以看到,一共分成8步,对于呼叫端A来说,第一步是创建一个类型为offer的sdp,创建好之后执行第二步将创建好的offer设置到他内部的缓冲区中,第三部将offer通过信令服务器传给对端,第四步被呼叫端将收到的offer保存在自己的缓冲区中,之后创建answer,第六步将自己创建的answer设置在自己的缓冲区中,然后将answer通过信令服务器返回给呼叫端,第8不,呼叫端将远端的answer也设置在自己的缓冲区中。

三.媒体协商时序图

四.完美协商

传统协商内部维护了一个状态机,存在几个问题:1.老的协商容易产生错误,比如同时创建了offer。2.业务逻辑中混杂了协商代码

完美协商双方可以同时收到offer,收到offer之后,需要给双方设定角色,polite和impolite,一个有礼貌一个是没礼貌的,对于没礼貌的那个会退化,创建一个answer,当他收到offer之后,他就会把这个offer抛弃掉。对于完美协商没有creater offer和answer,用不带参数的setlocaldescription自动生产offer和answer。

相关推荐
深蓝海拓20 分钟前
PySide6从0开始学习的笔记(五) 信号与槽
笔记·qt·学习·pyqt
刘孬孬沉迷学习38 分钟前
GTP协议
开发语言·学习·5g·php·信息与通信
炽烈小老头1 小时前
【每天学习一点算法2025/12/16】二叉树的最大深度
学习·算法
白云千载尽1 小时前
基础命令学习之ps 与 pkill 与 nohup 与 2>&1 &
服务器·学习·远程
代码游侠1 小时前
学习笔记——线程
linux·运维·开发语言·笔记·学习·算法
风行男孩1 小时前
stm32基础学习——按键的使用
stm32·嵌入式硬件·学习
一只鹿鹿鹿2 小时前
等级保护建设方案,等保2.0,等保3.0解决方案PPT文件和WORD文件
人工智能·学习·制造·规格说明书·软件系统
拉姆哥的小屋2 小时前
【深度学习实战】突破灾难性遗忘!基于经验回放+EWC的核电站故障诊断增量学习系统完整实现
人工智能·深度学习·学习
dwp11471706072 小时前
CMake学习
学习
keep one's resolveY2 小时前
Spring-AI学习
学习