• RTSP协议概况


    RTSP协议概况

    简单的交互命令就能实现RTSP对接,C代表Client S代表Server 

    例如:C1-客户端发的第一个命令 S1-服务器响应的第一个回复

    【C1】OPTIONS rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    【S1】RTSP/1.0 200 OK

    【C2】DESCRIBE rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    【S2】RTSP/1.0 200 OK

    【C3】SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=1 RTSP/1.0

    【S3】RTSP/1.0 200 OK

    【C4】SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=2 RTSP/1.0

    【S4】RTSP/1.0 200 OK

    【C5】PLAY rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    【S5】RTSP/1.0 200 OK

    【C6】TEARDOWN rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    【S6】RTSP/1.0 200 OK

    1.      请求OPTION

    C1OPTIONS

    OPTIONS rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    CSeq: 5

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="29f1b8fae9acf74fc8f4c2487f8ce6ce"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    询问RTSP服务器有哪些命令可以使用

    S1Reply

    RTSP/1.0 200 OK

    CSeq: 5

    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

    服务器回应客户端的请求。这个回应第一行为OK,则表明服务器接受查询命令,并且反馈给客户端信息,可以使用的命令有:OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER,则下一步就可以向服务器发送这些命令,如果没有,则服务器不接收这些命令。

     

    2.      认证请求资源描述DESCRIBE

    【C2】DESCRIBE

     DESCRIBE rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    CSeq: 6

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="f493d85860c733643783636bc1f8f050"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    Accept: application/sdp

     

    发送具有认证标识的信息到服务器,去获取服务器的资源列表。

    S2Reply:

    RTSP/1.0 200 OK

    CSeq: 6

    Content-Type: application/sdp

    Content-Length: 561

     

    v=0

    o=- 1109162014219182 0 IN IP4 0.0.0.0

    s=HIK Media Server

    i=HIK Media Server Session Description : standard

    e=NONE

    c=IN IP4 0.0.0.0

    t=0 0

    a=control:*

    a=range:npt=0.0-

    m=video 0 RTP/AVP 96

    i=Video Media

    a=rtpmap:96 H264/90000

    a=fmtp:96 profile-level-id=4D0014;packetization-mode=0;sprop-parameter-sets=Z00AH5WoFAFuQA==,

    a=control:trackID=1

    m=audio 0 RTP/AVP 0

    i=Audio Media

    a=rtpmap:0 PCMU/8000

    a=control:trackID=2

    a=Media_header:MEDIAINFO=494D4B48010100000400000110710110401F000000FA000000000000000000000000000000000000;

    a=appversion:1.0

     

    首先第一行给了OK,表明上一个命令成功--DESCRIBE成功得到服务器认证

    其次,给出了服务器的媒体信息-具有两路码流--音频(audio)和视频(video) 并给出了请求两路数据的地址

    3.      请求视频资源

    C3SETUP

    SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=1 RTSP/1.0

    CSeq: 7

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="461640905696ab12dcbb3cac681f18fa"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    Transport: RTP/AVP;unicast;client_port=59740-59741

    请求获取流媒体服务器上的视频资源 并告知服务器可以往客户端56740端口发送视频数据,56741为RTCP接收端口,发送方式为单播。传输方式为UDP 

    **********************传输方式与Transport string的对应关系**********************

    UDP传输:Transport:RTP/AVP

    TCP传输:Transport:RTP/AVP/TCP

    RAW UDP传输:Transport:RAW/RAW/UDP

    ****************************************************************************************

    S3Reply

    RTSP/1.0 200 OK

    Session: 583714312

    Transport: RTP/AVP;unicast;client_port=59740-59741;server_port=62028-62029;ssrc=22cac608

    CSeq: 7

    服务器同意发送视频数据给客户端 56740为视频接收端,56741为RTCP接收端口,发送方式为单播。传输方式为UDP 

     

    4.      请求音频资源

    C4SETUP

    SETUP rtsp://10.8.164.145/ch1/main/av_stream/trackID=2 RTSP/1.0

    CSeq: 8

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="461640905696ab12dcbb3cac681f18fa"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    Transport: RTP/AVP;unicast;client_port=59742-59743

    Session: 583714312

    请求获取服务器上的音频资源 并告知服务器可以往客户端56742端口发送视频数据,56743为RTCP接收端口,发送方式为单播。传输方式为UDP 

     

    S4Reply

    RTSP/1.0 200 OK

    Session: 583714312

    Transport: RTP/AVP;unicast;client_port=59742-59743;server_port=62030-62031;ssrc=22cac609

    CSeq: 8

    服务器同意发送音频数据给客户端 56742为视频接收端,56743为RTCP接收端口,发送方式为单播。传输方式为UDP 

    5.      开始数据接收

    C5PLAY

    PLAY rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    CSeq: 9

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="8ee54555450f6ddfec5841379e30313f"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    Session: 583714312

    Range: npt=0.000-

    告知服务器一切准备就绪,数据可以发过来!

    S5Reply

    RTSP/1.0 200 OK

    Session: 583714312

    CSeq: 9

    服务器告知客户端,朋友我已经送数据过来了,你可以接收了!

    这个时候我们打开Wireshark,在过滤栏输入rtp,可以看到如下数据,表明服务器已经向客户端的56740、56742端口发送数据

                           

    6.      关闭播放

    C6TEARDOWN

    TEARDOWN rtsp://10.8.164.145/ch1/main/av_stream RTSP/1.0

    CSeq: 10

    Authorization: Digest username="admin", realm="TIGERYIN", nonce="05821411a3fea112e108c76a10a02860", uri="rtsp://10.8.164.145/ch1/main/av_stream", response="4a6b541848b9d1c37e31f87797b32188"

    User-Agent: LibVLC/2.2.0 (LIVE555 Streaming Media v2014.07.25)

    Session: 583714312

    关闭数据传输 释放服务器资源 如果需要重新获取码流 则需要从1~5再来一次

    S6Reply

    RTSP/1.0 200 OK

    CSeq: 10

    Session: 583714312

    Connection: close

     服务器已经成功关闭当前链接

  • 相关阅读:
    Harbor私有镜像仓库(下)
    项目课---企业级Memcached服务应用实践(八)
    项目课---OpVEN架构实施方案(七)
    项目课---Mha-Atlas-MySQL高可用方案实践(六)
    Nginx 反向代理
    Ansible搭建LNMP
    Ansible
    Ansible运维自动化
    JAVA企业级应用服务器之TOMCAT实战
    ssh自动分发密匙脚本样板
  • 原文地址:https://www.cnblogs.com/baiduboy/p/7762317.html
Copyright © 2020-2023  润新知