【音视频】通俗讲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协议。

相关推荐
JS-s1 天前
【无标题】
音视频
山海青风1 天前
语音合成 - 用 Python 合成藏语三大方言语音
开发语言·python·音视频
coding-fun2 天前
电脑音频录制工具(语音聊天录音软件)
音视频
却道天凉_好个秋2 天前
音视频学习(七十二):视频压缩:分块与预处理
音视频·视频压缩
gf13211112 天前
python_字幕文本、音频、视频一键组合
python·音视频·swift
YANshangqian2 天前
音频录制和编辑软件
音视频
gf13211112 天前
python_字幕、音频、媒体文件(图片或视频)一键组合
python·音视频·swift
daizhe2 天前
基于JavaCV实现FFmpeg设置视频moov前置以及截取封面图片
ffmpeg·音视频·javacv
DsirNg2 天前
Vue3 实时音频录制与转写 Composable 技术实现
音视频
平凡灵感码头2 天前
第一次做蓝牙产品,从零开发(5)蓝牙音频项目中功放芯片
单片机·嵌入式硬件·音视频