• 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连接

    在这里插入图片描述

  • 相关阅读:
    内网穿透方法有哪些?路由器端口映射外网和软件方案步骤
    0.0和0.00竟然不相等!!!BigDecimal别用错了比较方式
    Zig标准库:最全数据结构深度解析(1)
    Java基于springboot+vue的企业人事员工工资考勤管系统 nodejs 前后端分离
    数字孪生智慧园区:大数据驱动下的运营管理革新
    使用fitz将pdf逐页输出为图片
    谈一谈什么是接口测试?怎样做接口测试?
    学生HTML个人网页作业作品:基于HTML实现教育培训机构网站模板毕业源码(8页)
    redis 哨兵 sentinel(二) 哨兵原理
    Python 迭代器与生成器
  • 原文地址:https://blog.csdn.net/www_dong/article/details/134255185