【音视频】通俗讲SDP会话描述/协商协议

当两个设备(比如你的手机和朋友的手机)要进行视频通话或语音聊天时,它们需要先互相"沟通"一下,确认"我们能用什么语言交流"(比如音频编解码器)、"在哪个频道上通话"(比如IP地址和端口)等问题。SDP(会话描述协议)就是为这次"沟通"提供标准格式的说明书。

🍽 把SDP想象成一份菜单

你可以把SDP理解为一顿多媒体大餐的"菜单 "或"宴会筹备清单 "。这份清单是基于文本的,每一行都遵循 =<类型><值> 的简单格式,清晰列出了这顿"大餐"的各项信息。

这份"菜单"主要包含两大部分:

  • 会话级描述 :好比是整场宴会的通用信息 。包括宴会名称(s=)、发起人信息(o=)、宴会有效的起止时间(t=)以及网络连接的基本信息(c=)等。这些信息对整个会话有效,是所有媒体流的默认设置。
  • 媒体级描述 :则像是针对每道具体菜肴 的说明。例如,会详细描述"音频"这道菜:用什么方式传输(传输协议,如RTP/UDP)、送到哪个端口(端口号)、具体是哪道菜(编码格式,如OPUS、G.711),以及这道菜有什么特点(通过属性行 a= 描述,如采样率)等。一个SDP里可以包含多个媒体描述,比如同时描述音频流和视频流。

会话级描述中的信息是默认值,媒体级描述可以继承或覆盖这些默认值。

🤝 SDP是如何工作的?

SDP本身并不能直接传送数据,它需要"搭乘"其他的传输协议,比如SIP(用于网络电话)、RTSP(用于流媒体)或在WebRTC中通过信令通道来交换。

一个常见的工作模式是 Offer/Answer 模型

  1. 发起方 生成一个SDP Offer(就像主人先拟好一份初步的菜单草稿),说明自己支持的能力。
  2. 接收方 收到Offer后,会根据自己的能力进行匹配,生成一个SDP Answer(就像客人根据忌口和喜好确认菜单),最终双方协商出一致认可的媒体参数。
  3. 之后,设备间就可以根据协商好的参数建立直接的媒体流传输了。

💡 主要用途与特点

  • 核心作用 :SDP的核心作用在于媒体协商。通过交换SDP信息,通信双方可以了解彼此的能力(如支持的编解码器),并最终协商出一套双方都支持的方案,确保通话或会议能够顺利进行。
  • 重要特点 :SDP是一个文本协议 ,易于阅读、生成和调试。它被设计得足够通用和灵活 ,可以通过自定义属性行(a=)来扩展,以适应新的编解码格式或技术需求(如WebRTC中用于NAT穿越的ICE候选信息)。

WebRTC和网络语音通话VoIP中就使用了SDP协议。

相关推荐
ZEGO即构开发者5 小时前
WebRTC 实战:用即构 SDK 搭建 Web 端 1v1 视频通话(含完整流程与 Demo)
前端·音视频·webrtc
趣浪吧7 小时前
AI在手机上真没用吗?
人工智能·智能手机·aigc·音视频·媒体
qq_282195318 小时前
嵌入式音频USB Audio调试
linux·音视频
代码狂想家8 小时前
CANN视频增强实战:基于Ascend平台的历史影像修复
音视频
1***815311 小时前
Docker视频
docker·容器·音视频
Black蜡笔小新11 小时前
视频融合平台EasyCVR助力守护渔业牧区安全与增效
安全·音视频
Likeadust15 小时前
革新传统勘探:视频推流平台EasyDSS无人机推流如何赋能高效安全的地质考察?
安全·音视频·无人机
AI浩1 天前
Cambrian-S:迈向视频中的空间超感知
人工智能·目标检测·计算机视觉·音视频
微学AI1 天前
华为CANN在智慧城市视频监控中的实践:端云协同的实时目标检测解决方案
华为·音视频·智慧城市·cann
Laravel技术社区1 天前
php 读取视频流(mp4视频文件),快速读取视频解决方案(案例及配置)
开发语言·php·音视频