视频课程及相关文档代码地址:https://github.com/EasyDarwin/Course#course-3

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]

type: 该字节为单字节(如: v,o, m等)区分大小写,=号俩侧部允许有空格

value: 为结构化文本串

会话描叙格式介绍

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

时间描述

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

媒体描述

  • 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=StreamingServer 3677033027 1437537780000 IN IP4 192.168.1.44
s=\demo.mp4
u=http:///
e=admin@
c=IN IP4 0.0.0.0
b=AS:1398
t=0 0
a=control:*
a=x-copyright: MP4/3GP File hinted with GPAC 0.5.0-rev4065 (C)2000-2005 - http://gpac.sourceforge.net
a=range:npt=0- 216.52167 m=video 0 RTP/AVP 96
b=AS:1242
a=3GPP-Adaptation-Support:1
a=rtpmap:96 H264/90000
a=control:trackID=65536
a=fmtp:96 profile-level-id=42000A; packetization-mode=1; sprop-parameter-sets=Z0IACpZUBQHogA==,aM44gA==
a=framesize:96 640-480 m=audio 0 RTP/AVP 97
b=AS:156
a=3GPP-Adaptation-Support:1
a=rtpmap:97 mpeg4-generic/48000/1
a=control:trackID=65537
a=fmtp:97 profile-level-id=41; config=1188; streamType=5; mode=AAC-hbr; objectType=64; constantDuration=1024; sizeLength=13; indexLength=3; indexDeltaLength=3
视频”a=fmtp”字段的解析 参考 RFC3984的8.2节
音频config描述符的解析 参考 RFC 3016

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2016

EasyDarwin开源社区流媒体视频课程:流媒体传输控制协议(RTSP RTP SDP)详解之sdp的更多相关文章

  1. 我们将要建立的EasyDarwin开源社区

    从12年12月我开始建立EasyDarwin开源项目,已经三年多的时间了,从开始最简单的一个开源流媒体服务器项目,如今已经发展成为目前国内最大的一个流媒体开源社区,截至目前已经有十几个项目在Githu ...

  2. EasyDarwin开源社区 短视频拍摄项目Github地址

    在前面的几篇博客中,我们提到了EasyDarwin开源团队整理出来的短视频拍摄技术要点,这次我们将短视频技术及SDK整理成一个完整的Github项目进行长期维护,同时会支持安卓Android和IOS版 ...

  3. 【视频开发】ONVIF、RTSP/RTP、FFMPEG的开发实录

    ONVIF.RTSP/RTP.FFMPEG的开发实录 前言 本文从零基础一步步实现ONVIF协议.RTSP/RTP协议获取IPC实时视频流.FFMPEG解码.开发环境为WIN7 32位 + VS201 ...

  4. 开源社交系统ThinkSNS v4.6.1更新日志及功能详解!

    ThinkSNS 开源社交系统 v4.6.1更新日志 [修复]聊天无法使用emoji问题 [修复]后台禁用用户后,app第三方登录可登录问题 [修复]部分接口问题 [修复]h5个人中心获取用户信息问题 ...

  5. 短视频 SDK 6大功能技术实现方式详解

    第三方短视频解决方案作为快速切入短视频行业的首选方式,选择一款功能齐全.性能优异的短视频解决方案十分重要. 今天我们来谈谈短视频 SDK 6大重要功能点及其技术实现方式. 短视频拍摄 断点续拍 指在拍 ...

  6. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  7. moviepy音视频开发:音频剪辑基类AudioClip详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...

  8. 开源工作流程引擎ccflow多人待办处理模式的详解

    多人待办工作处理模式,也是待办处理模式.是当接受的节点是多个人的时候,如何处理待办? 根据不用的场景,ccbpm把多人在普通节点下的处理模式分为如下几种. 抢办模式: A发送到B ,B节点上有n个人可 ...

  9. hibernate课程 初探单表映射2-6 session详解(下)

    本节主要内容: 1 介绍了getCurrentSession和opensession的区别 2 demo:通过打印比较两个session是否相同,验证两个session是否是同一session 3 d ...

随机推荐

  1. Codevs 1010 过河卒== 洛谷 1002

     时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同 ...

  2. 【CF1025C】Plasticine zebra(模拟)

    题意: n<=1e5 思路:可以证明答案即为极长交替出现的串长度之和 需要注意其实这个串是一个环,复制后再做 #include<cstdio> #include<cstring ...

  3. Error: spawn xxxx ENOENT原因与解决

    背景: npm 运行项目时出现了该问题 原因: path环境变量配置不当,导致无法找到指定的程序,如Error: spawn cmd.exe ENOENT,出现该问题的原因是因为没有将%SystemR ...

  4. AC日记——拍照 洛谷 P3410

    题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的 ...

  5. CSS-文本(中,英)

    1.缩进文本:text-indent 2.水平对齐:text-align:  left/center/right/justify(实现两端对齐文本效果) 3.字间隔:word-spacing(可以改变 ...

  6. 小程序-初次进入小程序的授权问题(授权更新后的完整步骤)button主动授权

    在此做个笔记 最开始小程序的开发时,信息授权的问题刚完善,后面腾讯就更新了新的授权方式,真心的感到心累. 后来的button,主动授权问题,时间一久就有些忘记了,最近在新开发一个小程序的拆红包活动,需 ...

  7. js-关于微信页面分享(取消或打开)

    在微信二次开发中,我们会遇到页面可以分享或不能分享的情况(私人隐私页面不能.禁止分享) 1.禁止页面分享(取消微信开打页面的分享功能) <script> function onBridge ...

  8. Web前端入门知识

    第一阶段:理论知识 第一章:协议理解 第二阶段:了解知识 第二章:前端简介 第三阶段:入门知识 第三章:标签结构 第四章:常用标签 第四阶段:样式搭配 第五章:样式初见 第六章:属性选择 第七章:属性 ...

  9. 洛谷——P2853 [USACO06DEC]牛的野餐Cow Picnic

    P2853 [USACO06DEC]牛的野餐Cow Picnic 题目描述 The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ ...

  10. Nginx+keepalived双机热备(主主模式)

    IP说明: master机器(master-node):10.0.0.5/172.16.1.5   VIP1:10.0.0.3slave机器(slave-node): 10.0.0.6/172.16. ...