音视频--SDP协议

版权声明:未经说明,禁止转载 https://blog.csdn.net/tqs_1220/article/details/82597402

SDP:会话描述协议,是一种会话描述格式,为描述多媒体数据而设计。

SDP协议介绍

  • SDP 完全是一种会话描述格式(对应的RFC2327 , RFC4566)
  • 它不属于传输协议 ,它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。
  • SDP协议也是基于文本的协议,这样就能保证协议的可扩展性比较强,使其具有广泛的应用范围。
  • SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息,媒体协商这一块要用RTSP来实现。
  • SDP描述信息附带在DESCRIBE报文中由RTSP服务端发出,主要目的是告之会话的存在和给出参与该会话所必须的信息,SDP会话完全是文本形式,采用UTF-8编码的ISO 10646字符集

SDP描叙符包括:

  • 会话名和目的
  • 会话激活的时间区段
  • 构成会话的媒体
  • 接收这些媒体所需要的信息(地址,端口,格式)
  • 会话所用的带宽信息
  • 会话负责人的联系信息
  • 媒体信息包括:
    • 媒体类型(视频,音频等)
    • 传送协议(RTP/UDP/IP H.320等)
    • 媒体格式(H,264视频,MPEG视频等)
    • 媒体地址和端口

SDP协议格式

SDP描述由许多文本行组成,文本行的格式为:
<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。
<type> = < value > [CRLF](CRLF表示换行)
- type: 该字节为单字节(如: v,o, m等)区分大小写,=号两侧不允许有空格
- value: 为结构化文本串

SDP会话描述

  • 协议版: v=0, 给出sdp的版本号,目前为0版本,无子版本号本。
  • 会话源 : o=(用户名) (会话标识) (版本) (网络类型) (地址类型) (地址)
    • 如果不存在用户登录名,该字段标志位“-”会话标识为一随机数字串,版本为该会话公告的版本 \r\n网络类型为文本串,\n “IN’表示internet地址类型为文本串,目前定义为”IP4”和“IP6”两种地址。
  • 会话名: s=(会话名) 每个会话描述必须只有一个会话名。
  • 会话信息: i=(会话信息) 此字段并非必须,建议包括进来用于描叙相应会话文字性说明,每个会话描叙最多只能有一个。
  • URL:u=(URL) 此字段并非必须提供ur的描叙信息
  • 连接数据: c=(网络类型) (地址类型) (连接地址)

SDP时间描述

  • t = (会话活动时间)
  • r = * (0或多次重复次数)

SDP媒体描述

  • m = (媒体名称和传输地址)
  • i = * (媒体标题)
  • c = * (连接信息 — 如果包含在会话层则该字段可选)
  • b = * (带宽信息)
  • k = * (加密密钥)
  • a = * (0 个或多个会话属性行)
    m描叙行:
  • 格式: m=(媒体)(端口)(传送层)(格式列表)
  • 媒体类型:音频(audio),视频(video),应用,数据和控制
  • 端口:媒体传送层端口
  • 传送层:ip4上大多基于rtp/udp上传送(RTP/AVP)、IETF RTP协议,在udp上传输
  • 格式列表: 对应的音频负载类型(PT)
  • m=video 0 RTP/AVP 96
    a描叙行:
  • 格式:a=rtpmap:(净荷类型)(编码名)/(时钟速率)[编码参数]可选参数
  • a=control:(音/视频连接信息)
  • a=control:rtsp://192.168.1.197/h264stream0/trackID=0
  • a=rtpmap:96 H264/90000

SDP描述实例:

v=0//版本
o=- 2205756022 2205756022 IN IP4 127.0.0.1//不存在用户登录名则用‘-’替代、会话标识、版本、网络类型、地址类型、地址
s=EasyDarwin//会话名
i=EasyDarwin//会话信息
c=IN IP4 127.0.0.1//网络类型、地址类型、连接地址
t=0 0//会话活动时间
a=x-qt-text-nam:EasyDarwin//a表示会话属性
a=x-qt-text-inf:EasyDarwin
a=x-qt-text-cmt:source application::EasyDarwin
a=x-qt-text-aut:
a=x-qt-text-cpy:

m=video 0 RTP/AVP 96//媒体、端口、传送层、格式列表
a=rtpmap:96 H264/90000//净荷类型、编码名/时钟速率/编码参数(编码参数项为可选参数)
a=fmtp:96 packetization-mode=1;sprop-parameter-sets=//视频“a=fmpt”字段参考RFC3984的8.2节
a=control:trackID=1//音/视频连接信息


m=audio 0 RTP/AVP 97//媒体、端口、传送层、格式列表
a=rtpmap:97 MPEG4-GENERIC/44100/2//净荷类型、编码名/时钟速率/编码参数(编码参数项为可选参数)
a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210//音频“config”参数解析参考RFC3016
a=control:trackID=2//音/视频连接信息

猜你喜欢

转载自blog.csdn.net/tqs_1220/article/details/82597402