rtsp基本信令
程序员文章站
2022-07-01 09:54:44
...
1、OPTIONS
-
client->server
OPTIONS rtsp://192.168.0.158:554/video_high1080.h264 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12)
-
server->client
RTSP/1.0 200 OK CSeq: 2
2、DESCRIBE
这部分属于SDP,描述媒体的格式。
-
client->server
DESCRIBE rtsp://192.168.0.158:554/video_high1080.h264 RTSP/1.0 CSeq: 3 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12) Accept: application/sdp
-
server->client
RTSP/1.0 200 OK CSeq: 3 Content-Base: rtsp://192.168.0.158:554/video_high1080.h264/ Content-Type: application/sdp Content-Length: 127 v=0 o=- 0 1 IN IP4 0.0.0.0 s=RTSP Server i=video_high1080.h264 t=0 0 a=control:* m=video 0 RTP/AVP 96 a=control:track1 a=rtpmap:96 AVC/9000/2 a=fmtp:96 profile-level-id=%s; packetization-mode=1; sprop-parameter-sets=%s,%s a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1408"
a=rtpmap中的9000是clock_rate,2是音频通道数
a=fmtp中profile-level-id=%s是profile_level_id;sprop-parameter-sets后面分别是SPS和PPS的base64
strcpy(SPS_base64_0,base64_encode(h264Sps+4,SpsLen));
strcpy(PPS_base64_0,base64_encode(h264Pps+4,PpsLen));
sprintf(profile_level_id_0,"%02X%02X%02X",h264Sps[5],h264Sps[6],h264Sps[7]);
H265时a=fmtp换成以下格式:
a=fmtp:96 packetization-mode=1; profile-space=0;profile-id=1;tier-flag=0;level-id=123;interop-constraints=B00000000000;sprop-vps=%s; sprop-sps=%s; sprop-pps=%s
最后面的3个%s是VPS、SPS、PPS的base64
strcpy(SPS_base64_0,base64_encode(h265Sps+4,SpsLen));
strcpy(PPS_base64_0,base64_encode(h265Pps+4,PpsLen));
strcpy(VPS_base64_0,base64_encode(h265Vps+4,VpsLen));
sprintf(profile_level_id_0,"%02X%02X%02X",h265Sps[5],h265Sps[6],h265Sps[7]);
a=fmtp:97是音频AAC的格式参数
以组播方式时,需要加入以下内容,c=IN IP4后面是组播ip地址和TTL
a=type:multicast
c=IN IP4 %s/%d
3、SETUP
这环节指定取流的方式,TCP/UDP单播/UDP组播,以及端口
-
client->server
SETUP rtsp://192.168.0.158:554/video_high1080.h264/track1 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12) Transport: RTP/AVP;unicast;client_port=49382-49383 SETUP rtsp://192.168.0.158:554/video_high1080.h264/track1 RTSP/1.0 CSeq: 5 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12) Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Transport指定传输的方式:
RTP/AVP;unicast是UDP单播,client_port=指定RTP和RTCP的接收端口。
RTP/AVP;multicast是UDP组播,port=指定组播端口。
Transport: RTP/AVP/TCP;unicast指TCP单播,interleaved=指定RTP和RTCP交叉存取的最大通道号,
-
server->client
RTSP/1.0 200 OK CSeq: 5 Session: 93EA048C Transport: RTP/AVP/TCP;unicast;interleaved=0-1 Transport: RTP/AVP;unicast;client_port=%d-%d;source=%s;server_port=%d-%d
第一种Transport是tcp方式,第二种Transport是udp方式。
source是数据源的ip,单播时是server的ip,组播时是组播地址的ip
4、PLAY
-
client->server
PLAY rtsp://192.168.0.158:554/video_high1080.h264/ RTSP/1.0 CSeq: 6 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12) Session: 93EA048C Range: npt=0.000-
Range指定播放的时间
-
server->client
RTSP/1.0 200 OK CSeq: 6 Range: npt=0.000-0.000 RTP-Info: url=rtsp://192.168.0.158:554/video_high1080.h264/track1;seq=0;rtptime=0
5、TEARDOWN
-
client->server
TEARDOWN rtsp://192.168.0.158:554/video_high1080.h264/ RTSP/1.0 CSeq: 7 User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12) Session: 93EA048C
-
server->client
RTSP/1.0 200 OK CSeq: 7
上一篇: Elasticsearch
下一篇: 结巴分词1--结巴分词系统介绍