• GB28181学习(十五)——流传输方式


    前言

    基于GB/T28181-2022版本,实时流的传输方式包括3种:

    • UDP
    • TCP被动
    • TCP主动

    UDP

    流程

    在这里插入图片描述

    注意:

    • m字段指定传输方式为RTP/AVP;

    抓包

    • SIP服务器发送INVITE请求;
    INVITE sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060
    Contact: <sip:xxx@192.168.0.107:5060>
    Call-ID: xxx
    CSeq: 18467 INVITE
    Allow: INVITE, ACK, BYE, CANCEL, UPDATE, PRACK
    Supported: 100rel
    Subject: xxx:xx,xxx:xx
    Content-Type: application/sdp
    Content-Length:   211
    
    v=0
    o=xxx 0 0 IN IP4 192.168.0.107
    s=Play
    c=IN IP4 192.168.0.107
    t=0 0
    m=video 36000 RTP/AVP 96 98 97   # 36000为SIP服务数据接收端口
    a=recvonly
    a=rtpmap:96 PS/90000
    a=rtpmap:98 H264/90000
    a=rtpmap:97 MPEG4/90000
    y=0100000001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 设备返回200 OK;
    SIP/2.0 200 OK
    Call-ID: xxx
    Contact: <sip:sss@192.168.0.111:5060>
    Content-Length: 226
    Content-Type: application/sdp
    CSeq: 18467 INVITE
    From: <sip:xxx@192.168.0.107:5060>;tag=xxx
    To: <sip:xxx@192.168.0.111:5060>;tag=xxx
    User-Agent: SIP UAS V.2016.xxxx
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport=5060;branch=xxx
    
    v=0
    o=34020000001310000002 0 0 IN IP4 192.168.0.111
    s=Play
    i=VCam Live Video
    c=IN IP4 192.168.0.111
    t=0 0
    m=video 9712 RTP/AVP 96     # 9712为设备端数据发送端口
    a=sendonly
    a=rtpmap:96 PS/90000
    a=streamprofile:0
    y=0100000001
    f=v/0/0/0/0/0a/0/0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • SIP服务器返回ACK
    ACK sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060;tag=xxx
    Call-ID: xxx
    CSeq: 18467 ACK
    Content-Length:  0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    TCP被动

    流程

    在这里插入图片描述

    注意:

    • m字段指定传输方式为TCP/RTP/AVP;
    • sdp信息中增加"a=setup:passive";
    • SIP服务器启动端口监听,设备发起tcp连接请求;

    抓包

    • SIP服务器发送INVITE请求;
    INVITE sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060
    Contact: <sip:xxx@192.168.0.107:5060>
    Call-ID: xxx
    CSeq: 18480 INVITE
    Allow: INVITE, ACK, BYE, CANCEL, UPDATE, PRACK
    Supported: 100rel
    Subject: xxx:xx,xxx:xx
    Content-Type: application/sdp
    Content-Length:   211
    
    v=0
    o=xxx 0 0 IN IP4 192.168.0.107
    s=Play
    c=IN IP4 192.168.0.107
    t=0 0
    m=video 36000 TCP/RTP/AVP 96 98 97 
    a=recvonly
    a=rtpmap:96 PS/90000
    a=rtpmap:98 H264/90000
    a=rtpmap:97 MPEG4/90000
    a=setup:passive
    y=0100000001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 设备返回200 OK
    SIP/2.0 200 OK
    Call-ID: xxx
    Contact: <sip:xxx@192.168.0.111:5060>
    Content-Length: 264
    Content-Type: application/sdp
    CSeq: 18480 INVITE
    From: <sip:xxx@192.168.0.107>;tag=xxx
    To: <sip:xxx@192.168.0.111>;tag=xxx
    User-Agent: SIP UAS V.2016.xxxx
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport=5060;branch=xxx
    
    v=0
    o=xxx 0 0 IN IP4 192.168.0.111
    s=Play
    i=VCam Live Video
    c=IN IP4 192.168.0.111
    t=0 0
    m=video 9724 TCP/RTP/AVP 96    # 9724为设备端数据发送端口
    a=sendonly
    a=rtpmap:96 PS/90000           # 流数据为PS封装
    a=streamprofile:0
    a=setup:active                 # 设备为主动发送方
    a=connection:new
    y=0100000001
    f=v/0/0/0/0/0a/0/0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • SIP服务器返回ACK
    ACK sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060;tag=xxx
    Call-ID: xxx
    CSeq: 18480 ACK
    Content-Length:  0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    TCP主动

    流程

    在这里插入图片描述

    注意:

    • m字段指定传输方式为TCP/RTP/AVP;
    • sdp信息中增加"a=setup:active";
    • 设备返回200 OK,报文的SDP信息中包含tcp监听端口;
    • SIP服务器根据设备监听端口发起TCP连接请求;

    抓包

    • SIP服务器发送INVITE请求;
    INVITE sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060
    Contact: <sip:xxx@192.168.0.107:5060>
    Call-ID: xxx
    CSeq: 19100 INVITE
    Allow: INVITE, ACK, BYE, CANCEL, UPDATE, PRACK
    Supported: 100rel
    Subject: xxx:xx,xxx:xx
    Content-Type: application/sdp
    Content-Length:   211
    
    v=0
    o=xxx 0 0 IN IP4 192.168.0.107
    s=Play
    c=IN IP4 192.168.0.107
    t=0 0
    m=video 38000 TCP/RTP/AVP 96 98 97 
    a=recvonly
    a=rtpmap:96 PS/90000
    a=rtpmap:98 H264/90000
    a=rtpmap:97 MPEG4/90000
    a=setup:active
    y=0100000001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 设备返回200 OK
    SIP/2.0 200 OK
    Call-ID: xxx
    Contact: <sip:xxx@192.168.0.111:5060>
    Content-Length: 264
    Content-Type: application/sdp
    CSeq: 19100 INVITE
    From: <sip:xxx@192.168.0.107>;tag=xxx
    To: <sip:xxx@192.168.0.111>;tag=xxx
    User-Agent: SIP UAS V.2016.xxxx
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport=5060;branch=xxx
    
    v=0
    o=xxx 0 0 IN IP4 192.168.0.111
    s=Play
    i=VCam Live Video
    c=IN IP4 192.168.0.111
    t=0 0
    m=video 9704 TCP/RTP/AVP 96    # 9704为设备端监听
    a=sendonly
    a=rtpmap:96 PS/90000           # 流数据为PS封装
    a=streamprofile:0
    a=setup:passive                # 设备为被动接收方
    a=connection:new
    y=0100000001
    f=v/0/0/0/0/0a/0/0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • SIP服务器返回ACK
    ACK sip:xxx@192.168.0.111:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.0.107:5060;rport;branch=xxx
    Max-Forwards: 70
    From: sip:xxx@192.168.0.107:5060;tag=xxx
    To: sip:xxx@192.168.0.111:5060;tag=xxx
    Call-ID: xxx
    CSeq: 19100 ACK
    Content-Length:  0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • SIP服务器主动发起tcp连接

    在这里插入图片描述

  • 相关阅读:
    3.22每日一题(二重积分求平面区域面积)
    代码随想录算法训练营第23期day57|739. 每日温度、496.下一个更大元素
    Leecode刷题日记
    报错:Error: module property was removed from Dependency
    Java实训:学生信息管理系统
    DMA编程
    编程语言的历史与趣事
    解决Windows 10 家庭中文版没有组策略编辑器的问题
    【译】我为 .NET 开发人员准备的 2023 年 Visual Studio 10 大新功能
    四十九、cookie与session
  • 原文地址:https://blog.csdn.net/www_dong/article/details/134255185