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

相关推荐
却道天凉_好个秋2 小时前
音视频学习(九十四):NACK和RTX
音视频·nack·rtcp·rtx
NGBQ121385 小时前
Adobe-Premiere-Pro-2026-26.0.2.2-m0nkrus 全解析:专业视频编辑软件深度指南
前端·adobe·音视频
芯跳加速5 小时前
AI 视频自动化学习日记 · 第三天
人工智能·学习·ai·自动化·音视频
chushiyunen5 小时前
python edge-tts实现tts文本转语音、音频
数据库·python·音视频
液态不合群6 小时前
OpenCV多线程编程:从单线程到多线程的视频处理
人工智能·opencv·音视频
飞Link7 小时前
具身智能音频处理核心框架 PyAudio 深度拆解与实战
开发语言·python·音视频
弓.长.8 小时前
ReactNative for OpenHarmony项目鸿蒙化三方库:react-native-video — 视频播放组件
react native·音视频·harmonyos
大傻^8 小时前
Spring AI Alibaba 多模态开发:集成视觉理解与视频分析能力
人工智能·spring·音视频·springai·springaialibaba·混合检索
却道天凉_好个秋9 小时前
音视频学习(九十三):CompoundRTCP
音视频·rtcp·compoundrtcp
山栀shanzhi9 小时前
【FFmpeg】音视频MP4封装格式转封装MOV
ffmpeg·音视频