rtsp基本信令

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
    

你可能感兴趣的:(rtsp/rtp/rtcp,网络通信协议,音视频)