1.1 VlC—> IPC:询问有哪些方法可用
IPC—> VlC: 回应信息中包括提供的所有可用方法
1.2 VlC—> IPC:要求得到提供的媒体初始化描述信息
IPC—> VlC: 回应媒体初始化描述信息,主要是sdp
v=0
o=- -8959208383676837327 -8959208383675879549 IN IP4 192.168.1.233
c=IN IP4 0.0.0.0
a=tool: RtpRtspFlyer
a=range:npt=0-
m=audio 0 RTP/AVP 96
a=rtpmap:96 mpeg4-generic/48000/2
a=fmtp:96 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1190; SizeLength=13;IndexLength=3; IndexDeltaLength=3; Profile=1;
a=control:rtsp://192.168.1.233/test_FHD/trackID=0
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42001e;sprop-parameter-sets=Z2QAKK2wpDBSAgFxQWKQPQRWFIYKQEAuKCxSB6CKwpDBSAgFxQWKQPQRTDoUKQNC4oJHMGIemHQoUgaFxQSOYMQ9MOhQpA0LigkcwYh6xEQmIVilsQRWUURJsogxOU4QITKUIEVlCCTYQVhBMJQhMIjGggWQJFaIGBJZBAaEnaMIDwsSWQQKCwsrRBQYOWQweO0YEBZASNAogszlAeAIn5cBEAAAu7AAK/IOAAADAF9eEAAA7msqL34wAAADAvrwgAAHc1lRe/DtBEIlLA==,aP48sA==;
a=control:rtsp://192.168.1.233/test_FHD/trackID=1
sdp的格式
v=<version>
o=<username> <session id> <version> <network type> <address type> <address>
s=<session name>
i=<session description>
u=<URI>
e=<email address>
p=<phone number>
c=<network type> <address type> <connection address>
b=<modifier>:<bandwidth-value>
t=<start time> <stop time>
r=<repeat interval> <active duration> <list of offsets from start-time>
z=<adjustment time> <offset> <adjustment time> <offset> ....
k=<method>
k=<method>:<encryption key>
a=<attribute>
a=<attribute>:<value>
m=<media> <port> <transport> <fmt list>
v = (协议版本)
o = (所有者/创建者和会话标识符)
s = (会话名称)
i = * (会话信息)
u = * (URI 描述)
e = * (Email 地址)
p = * (电话号码)
c = * (连接信息)
b = * (带宽信息)
z = * (时间区域调整)
k = * (加密密钥)
a = * (0 个或多个会话属性行)
时间描述:
t = (会话活动时间)
r = * (0或多次重复次数)
媒体描述:
m = (媒体名称和传输地址)
i = * (媒体标题)
c = * (连接信息 — 如果包含在会话层则该字段可选)
b = * (带宽信息)
k = * (加密密钥)
a = * (0 个或多个媒体属性行)
1.3 VlC—> IPC:设置会话的属性,以及传输模式,提醒建立会话
Libo:: trackID 为通道号,如音频媒体流通道ID,视频媒体流的通道ID。
IPC—> VlC: 建立会话,返回会话标识符,以及会话相关信息
VlC—> IPC:设置会话的属性,以及传输模式,提醒建立会
IPC—> VlC: 建立会话,返回会话标识符,以及会话相关信息
注:如果采用TCP的方式传送RTP,则可能transport 字段为:Transport: RTP/AVP/TCP;unicast;interleaved=0-1 ,这里解释下interleaved,因为采用TCP方式传送,所以传送的RTP,RTCP包都在同一个链路上,需要区分,所以有了interleaved,0表示是RTP的通道,1表示是RTCP的通道.体现在包上面就是在RTP,RTCP包上封装了一层interleaved frame,格式如下:
Magic:0x24
Channel:0x01(表示RTCP)
Length:84
Libo: 不同的通道需要使用不同的Interleaved值来区分RTCP还是RTP.
1.4 VlC—> IPC:请求播放
IPC—> VlC: 回应该请求的信息
开始数据发送…………………………………….
……………………停止。
1.5 VlC—> IPC:请求关闭会话
IPC—> VlC: 回应该请求