当前位置: 首页 > article >正文

【音视频】SIP(推流中涉及SIP信息分析)

概述

RFC3261 中文翻译 中文RFC RFC文档 RFC翻译 RFC中文版

本文仅仅是对sip的基本了解,主要是实现sip的基本交互,详细参考上述文档

INVITE请求处理事例

GB28181平台向目标设备发送获取视频的请求(INVITE)

INVITE sip:34020000001320000001@221.230.1.1:15060 SIP/2.0
Via: SIP/2.0/UDP 121.229.21.99:15060;rport;branch=z9hG4bK881052973
From: <sip:34020000002000000001@3402000000>;tag=410052973
To: <sip:34020000001320000001@231.230.1.1:15060>
Call-ID: 184052872
CSeq: 8549084 INVITE
Content-Type: APPLICATION/SDP
Contact: <sip:34020000002000000001@121.229.21.99:15060>
Max-Forwards: 70
User-Agent: LiveGBS v240830
Subject: 34020000001320000001:0200000001,34020000002000000001:0
Content-Length: 222

参数分析

  • INVITE sip:34020000001320000001@231.230.1.1:15060 SIP/2.0
    • INVITE:SIP 请求方法,用于发起会话或通话
    • sip: 目标sip标识符@目标服务器IP地址:目标服务器的监听端口号
  • Via: SIP/2.0/UDP 121.229.21.99:15060;rport;branch=z9hG4bK881052973
    • via:经过的代理,主要是用于追踪路由,对于整体逻辑不影响
  • From: <sip:34020000002000000001@3402000000>;tag=410052973
    • 请求发起方:告知接受者谁发起的请求
    • tag:发起方的标识符,主要用于区分同一个设备的多个会话
  • To: <sip:34020000001320000001@231.230.1.1:15060>
    • 请求到达的目标地址:也就接收地址
  • Call-ID: 184052872
    • 用于表示一个会话 :同一个会话,所有的请求和响应都会使用相同的Call-ID,从而确保它们可以被正确的关联
  • CSeq: 8549084 INVITE
    • 请求序列号+方法:主要就是用来区分同一个会话中的多个请求
  • Content-Type: APPLICATION/SDP
    • 请求体的媒体类型:该处表示请求体内容是一个SDP消息
  • Contact: <sip:34020000002000000001@121.229.21.99:15060>
    • 发起请求的设备IP地址:注意后续也就是通过这个地址来回复请求或者进行后面的通信

SDP信息

v=0
o=34020000001320000001 0 0 IN IP4 121.229.21.99
s=Play
c=IN IP4 121.229.21.99
t=0 0
m=video 30196 RTP/AVP 96 97 98
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:97 MPEG4/90000
a=rtpmap:98 H264/90000
y=0200000001
  • v=0
    • 版本号,SDP协议
  • o=34020000001320000001 0 0 IN IP4 121.229.21.99
    • o:会话创建者的会话标识符,也就是创建会话的设备
    • IN:表示会话地址类型和使用的IP地址
  • s=Play
    • 会话名称:此处是播放会话
  • c=IN IP4 121.229.21.99
    • 连接信息:此处是连接sip服务端的地址信息
  • t=0 0
    • 会话时间范围:开始时间到结束时间,此处表示的是一个实时流媒体
  • m=video 30196 RTP/AVP 96 97 98
    • m:媒体描述,这里表示有一个视频流
    • 端口号+支持的协议类型
      • 96 PS
      • 97 MPEG4
      • 98 H264
  • a=recvonly
    • 会话属性:这里表示只接收数据
  • a=rtpmap:96 PS/90000
    • 媒体流的编码格式:96表示ps(播放顺序),90000则是媒体流的时钟频率
  • a=rtpmap:97 MPEG4/90000
    • 同上
  • a=rtpmap:98 H264/90000
    • 同上
  • y=0200000001
    • 某种设备或者会话标识符
       

补充

INVITE请求中 from地址和Contact地址不同的原因

  • From地址是逻辑上的标识符,用于标识发起者(用于标识谁发起了请求)
    • 此处的From地址是静态的,根据平台的设定条件,一般是跟注册的时候使用的ID相同
  • Contact
    • 后面两者沟通使用的地址:用于指定发起者的实际联系地址,告诉接收者如何直接联系发起者。这是一个动态地址,可能包括实际的 IP 和端口


http://www.kler.cn/a/568366.html

相关文章:

  • 【软路由】ImmortalWrt 编译指南:从入门到精通
  • SQL Server 视图的更新排查及清除缓存
  • agent实现路径规划
  • ZYNQ-PL实践课堂(三)IP核之MMCM/PLL
  • 想学大模型,但分不清longchain,huggingface,ollama各种工具之间区别?
  • 机器学习的三个基本要素
  • 每天一个Flutter开发小项目 (9) : Flutter状态管理进阶 - Provider构建你的简易购物车应用
  • go如何排查某个依赖是哪里引入的
  • openssl下aes128算法CFB模式加解密运算实例
  • 【C】初阶数据结构8 -- 链式二叉树
  • javaEE初阶————多线程初阶(5)
  • ​Java 实体类中的常见问题:@Data 注解与 is 前缀字段的陷阱​
  • Linux find 命令
  • 高频 SQL 50 题(基础版)_2356. 每位教师所教授的科目种类的数量
  • 《Java加密与解密的艺术》第3章java加密利器
  • 17、什么是智能指针,C++有哪几种智能指针【高频】
  • 考研408数据结构线性表核心知识点与易错点详解(附真题示例与避坑指南)
  • 游戏引擎学习第127天
  • Java数据结构第十六期:走进二叉树的奇妙世界(五)
  • 【QT线程】子线程阻塞主线程的一次网络api请求案例