欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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
    
相关标签: rtsp