锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

h264和h265视频流SDP描述详解

时间:2023-04-17 15:37:00 iop到fta连接电缆

h264和h265视频流SDP描述详解

文章目录

  • h264和h265视频流SDP描述详解
    • 1 SDP概述
    • 2.SDP媒体描述极其扩展属性
      • 2.1 m属性介绍
      • 2.2 a=control附加属性介绍
      • 2.3 a=rtpmap附加属性介绍
      • 2.4 a=fmtp附加属性介绍

SDP(Session Description Protocol)会话描述协议是描述信息格式的标准。它不是传输协议,而是由 ITEF 组织下的 MMusic 工作组设计的会话描述格式,其他传输协议通过sdp交换必要的信息,常用于实时音视频交换信息;例如GB28181视频交互(SIP-INVITE)、RTSP(DESCRIBE)、WEBRTC在等音视频交换协议中,用于描述音视频信息。

1 SDP概述

首先看海康摄像头,通过RTSP获得协议交换SDP客户端发送信息DESCRIBE时响应如下:

RTSP/1.0 200 OK CSeq: 3 Content-Type: application/sdp Content-Base: rtsp://10.45.12.141/h264/ch1/main/av_stream/ Content-Length: 593  v=0 o=- 1658575881396804 1658575881396804 IN IP4 10.45.12.141 s=Media Presentation e=NONE b=AS:5050 t=0 0 a=control:rtsp://10.45.12.141/h264/ch1/main/av_stream/ m=video 0 RTP/AVP 96 c=IN IP4 0.0.0.0 b=AS:5000 a=recvonly a=x-dimensions:1920,1080 a=control:rtsp://10.45.12.141/h264/ch1/main/av_stream/trackID=1 a=rtpmap:96 H264/90000 a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AKpY1QPAET8s3AQEBQAABwgAAV QB,aO48gA== a=Media_header:MEDIAINFO=494D4B48010300000400000100000000000000000000000000000000000000000000000000000000; a=appversion:1.0 

Content-Type: application/sdp标识RTSP响应携带的消息类型是SDP,下面对SDP详细介绍消息体

SDP协议包括会话层和媒体层,具体字段如下表所示:

属性名 描述 是否必选 备注
v SDP协议版本号默认为0 默认版本为0
o 会话所有者的标识(originator and session identifier) o=<用户名> <会话版本> <网络类型><地址类型> <地址>
s 会话名称 会话名称
e email地址 一般不用
b b=AS:可用贷款 参数说明服务端本次流最大可用带宽
t 会话时间 (time the session is active) 会话的起始时间和结束时间,没有起止时间要求,可以赋值0。如果是视频回放,可以赋值npt时间
c 数据连接描述 c=
,如果存在于媒体描述中,则不需要会话层
r 重复次数 一般不用
z 时区适配 一般不用
k 密钥 一般不用
a 会话附件的属性根据附件的内容确定 媒体描述层有许多附件属性定义
m 媒体描述,这个属性属于m,直到下一个m出现。 视频会话时,必须选择

在视频流中,SDP媒体描述层识别流媒体服务器流的属性,对客户端的拉流和解码具有重要意义。如果媒体描述层的属性出现错误,客户端可能无法分析。SDP详细介绍中m属性的极其附加属性。

2.SDP媒体描述极其扩展属性

SDP媒体描述具有极大的扩展属性,在不同的协议中有不同的定义。我们需要参考不同协议的协议规范。这里有一个更通用的定义RTSP协议中SDP媒体描述的定义。媒体描述的扩展属性c、b等属性不介绍,主要介绍m极度扩展属性a=control\a=rtpmap\a=fmtp详细介绍。

2.1 m属性介绍

m属性格式如下:
m= ...
实例如下:
m=video 0 RTP/AVP 96
代表每个字段的含义如下:

  • media:目前有媒体类型应用。video/audio/application视频/音频/元数据等类型可根据不通协议规范扩展其他类型

  • port:流媒体服务器发送数据的传输端口号表示服务器从本端口发送流量,0表示随机端口发送,如果是RTSP协议一般为0,后续协议SETUP确定传输端口

  • proto:传输协议类型, RTP/AVP表示支持UDP传输,RTP/AVP/TCP支持TCP主流交互协议也用于传输RTP/AVP表示既支持UDP又支持TCP

  • :媒体格式描述,RTP中用payloadtype赋值,表示流的类型,这里和后面"a=rtpmap:"、“a=fmtp:相关性,具体描述媒体。

2.2 a=control附加属性介绍

在m属性之前,通常会有以下格式的扩展属性,如
a=control:rtsp://10.45.12.141/h264/ch1/main/av_stream/
如果出现在m之前,标志后面的多媒体流控制地址是这样的rtsp://10.45.12.141/h264/ch1/main/av_stream/假如前缀是前缀*,这个标志没有前缀SDP解析的时候可以作为查找依据。

SDP描述可以包含多个流媒体描述,每个流媒体从m开始,直到遇到下一个m,媒体流选择是媒体描述的附加属性a=control:区分,如下SDP信息

      
       v=0
o=- 1387444157003239 1 IN IP4 10.45.149.105
s=LIVE555 Streaming Media v2013.07.03
i=000100
t=0 0
a=tool:LIVE555 Streaming Media v2013.07.03
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2013.07.03
a=x-qt-text-inf:000100
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:8000
a=rtpmap:96 H264/90000
a=control:track1
m=audio 0 RTP/AVP 0
c=IN IP4 0.0.0.0
b=AS:512
a=control:track2
a=rtpmap:0 PCMU/8000
a=recvonly
m=audio 0 RTP/AVP 0
c=IN IP4 0.0.0.0
b=AS:512
a=control:track3
a=rtpmap:0 PCMU/8000
a=sendonly

      

其中包含了三个流的描述,分别为视频、下行语音、上行语音组成,通过a=control:附加属性的值来区分,track1标识视频,track2表示下行预研、track3表示上行语音,在客户端建立连接阶段(RTSP-SETUP)根据自己的需求去建立连接并播放

2.3 a=rtpmap附加属性介绍

附加属性的格式如下:
a=rtpmap:/[/]

实例如下:
a=rtpmap:96 H264/90000

详解如下:

  • payloadtype:负载类型在多路复用技术中表示一个流通道,这里与媒体信息中的fmt对应
  • 扩展描述媒体打包信息
  • encodingname:编码方式,表示流的编码方式,比如H264、H265等
  • clock rate:采样的时钟频率,这里视频流一般为90000,如果为RTP流,时钟频率将作为RTP帧间隔的衡量,例如帧间隔为40ms,则RTP包的时间戳间隔为(40/1000)*90000=3600

2.4 a=fmtp附加属性介绍

附件属性的格式,H264和H265有一定的区别,这里分开来说明,首先看下H264格式:
a=fmtp: profile-level-id=; packetization-mode=1;sprop-parameter-sets=xxx,xxx

实例如下:

a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AKpY1QPAET8s3AQEBQAABwgAAV+QB,aO48gA==

详解如下:

  • payload type:负载类型在多路复用技术中表示一个流通道,这里与媒体信息中的fmt对应

  • profile-level-id:为三个十六进制表示的字节,第一个字节表示profile_idc(编码规格),第二个字节表示profile-iop,第三个字节表示level_idc编码等级,profile_idc一般有三个取值0x42(66)-baseline profile,0x4D(77)-main profile,0x58(88)-extened profile;profile-iop, 0x64(100)-high profile;profile-iop每个字段对应一个含义,主要是区分是否严格按照编码规范,这里一般取00;第三个字节level_idc编码水平,其等于编码等级*10,上例中的编码等级为4.1

  • packetization-mode:表示封装方式,0或不存在时, 必须使用单一NALU 单元模式;1-必须使用非交错(non-interleaved)封包模式;2-必须使用交错(interleaved)封包模式,一般采用非交错模式

  • sprop-parameter-sets:sps,pps;SPS和PPS的数据的base64编码,序列参数集和图像参数NAL单元,采用 Base64 进行编码. 不同的参数集间用","号隔开

H265的fmtp格式不通通信协议中有很多方式,也有与h264统一的格式,即sprop-parameter-sets=VPS,SPS,PPS,这里介绍一种较为常用的格式,如下:

a=fmtp:96 sprop-vps=xxx;sprop-sps=xxx; sprop-pps=xxx

实例如下:
a=fmtp:96 sprop-vps=QAEMAf//AIAAAAMAAAMAAAMAAAMAALUCQA==;sprop-sps=QgEBAWAAAAMAsAAAAwAAAwB7oAPAgBDlja5JMvTcBAQEAg==; sprop-pps=RAHA8vA8kAA=

  • sprop-vps:VPS的base64编码
  • sprop-sps:SPS的base64编码
  • sprop-pps: PPS的base64编码

有关fmtp还可以自定义其他属性,类似方式a= fmtp:96 xxx=xxx;,具体扩展含义,可以自定义,只要客户端和服务器规定一致即可。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章