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

GB28181语音对讲协议详解

GB28181-2016语音对讲流程如下图1所示:   

                                                               图1.语音对讲流程。

        其中, 信令 1 、2 、 3 、 4 为语音广播通知、 语音广播应答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 为 S I P 服务器接收到客户端的呼叫请求通过 B 2 B UA 代理方式建立语音流接收者与媒体服务器之间的媒体流信令过程, 信令 6~1 1 为 S I P 服务器通过三方呼叫控制建立媒体服务器与语音流发送者之间的媒体流信令过程, 信令 1 7~2 0 为 S I P 服务器断开语音流接收者与媒体服务器之间的媒体流信令过程, 信令 2 1~2 4为 S I P 服务器断开媒体服务器与语音流发送者之间的媒体流信令过程。


命令流程描述如下:

  • a ) 1 : S I P 服务器向语音流接收者发送语音广播通知消息, 消息中通过 T o 头域标明作为目的地址的语音流接收者 I D , 消息采用 M e s s a g e 方法携带。
  • b ) 2 : 语音流接收者收到语音广播通知消息后, 向 S I P 服务器发送 2 0 0OK 响应。
  • c ) 3 : 语音流接收者向 S I P 服务器发送语音广播应答消息, 消息中通过 T o 头域标明作为目的地址的 S I P 服务器 I D , 消息采用 M e s s a g e 方法携带。
  • d ) 4 : S I P 服务器收到语音广播应答消息后, 向语音流接收者发送 2 0 0OK 响应。
  • e ) 5 : 语音流接收者向 S I P 服务器发送 I n v i t e 消息, 消息中通过 T o 头域标明作为目的地址的语音流发送者 I D , 消息头域中携带 S u b j e c t 字段, 表明请求的语音流发送者 I D 、 发送方媒体流序列号、 语音流接收者 I D 、 接收方媒体流序列号等参数, S D P 消息体中 s 字段为“ P l a y ” 代表实时点播, m 字段中媒体参数标识为“a u d i o ” 表示请求语音媒体流。
  • f ) 6 : S I P 服务器收到 I n v i t e 请求后, 通过三方呼叫控制建立媒体服务器和语音流发送者之间的媒体连接。向媒体服务器发送 I n v i t e 消息, 此消息不携带 S D P 消息体。
  • g ) 7 : 媒体服务器收到 S I P 服务器的 I n v i t e 请求后, 回复 2 0 0OK 响应, 携带 S D P 消息体, 消息体中描述了媒体服务器接收媒体流的 I P 、 端口、 媒体格式等内容。
  • h ) 8 : S I P 服务器收到媒体服务器返回的 2 0 0OK 响应后, 向语音流发送者发送 I n v i t e 请求, 消息中通过 T o 头域标明作为目的地址的语音流发送者 I D , 消息头域中携带 S u b j e c t 字段, 表明请求的语音流发送者 I D 、 发送方媒体流序列号、 语音流接收者 I D 、 接收方媒体流序列号等参数,请求中携带消息 7 中媒体服务器回复的 2 0 0OK 响应消息体, s 字段为“ P l a y ” 代表实时点播,m 字段中媒体参数标识为“ a u d i o ” 表示请求语音媒体流, 增加 y 字段描述 S S R C 值, f 字段描述媒体参数。
  • i ) 9 : 语音流发送者收到 S I P 服务器的 I n v i t e 请求后, 回复 2 0 0OK 响应, 携带 S D P 消息体, 消息体中描述了媒体流发送者发送媒体流的 I P 、 端口、 媒体格式、 S S R C 字段等内容, s 字段为“P l a y ” 代表实时点播,m 字段中媒体参数标识为“ a u d i o ” 表示请求语音媒体流。
  • j ) 1 0 : S I P 服务器收到语音流发送者返回的 2 0 0OK 响应后, 向媒体服务器发送 A C K 请求, 请求中携带消息 9 中语音流发送者回复的 2 0 0OK 响应消息体, 完成与媒体服务器的 I n v i t e 会话建立过程。
  • k ) 1 1 : S I P 服务器收到语音流发送者返回的 2 0 0OK 响应后, 向语音流发送者发送 A C K 请求, 请求中不携带消息体, 完成与语音流发送者的 I n v i t e 会话建立过程。
  • l ) 1 2 : 完成三方呼叫控制后, S I P 服务器通过 B 2 B UA 代理方式建立语音流接收者和媒体服务器之间的媒体连接。在消息 5 中增加 S S R C 值, 转发给媒体服务器。
  • m ) 1 3 : 媒体服务器收到 I n v i t e 请求, 回复 2 0 0OK 响应, 携带 S D P 消息体, 消息体中描述了媒体服务器发送媒体流的 I P 、 端口、 媒体格式、 S S R C 值等内容,s 字段为“ P l a y ” 代表实时点播, m 字段中媒体参数标识为“a u d i o ” 表示请求语音媒体流。
  • n ) 1 4 : S I P 服务器将消息 1 3 转发给语音流接收者。
  • o ) 1 5 : 语音流接收者收到 2 0 0OK 响应后, 回复 A C K 消息, 完成与 S I P 服务器的 I n v i t e 会话建立过程。
  • p ) 1 6 : S I P 服务器将消息 1 5 转发给媒体服务器, 完成与媒体服务器的 I n v i t e 会话建立过程。
  • q ) 1 7 : S I P 服务器向语音流接收者发送 B Y E 消息, 断开消息 5 、 1 4 、 1 5 建立的 I n v i t e 会话。
  • r ) 1 8 : 语音流接收者收到 B Y E 消息后回复 2 0 0OK 响应, 会话断开。
  • s ) 1 9 : S I P 服务器向媒体服务器发送 B Y E 消息, 断开消息 1 2 、 1 3 、 1 6 建立的同媒体服务器的I n v i t e 会话。

 各信令抓包如下:

             图2. 平台发送Broadcast信令截图

                             图3.海康设备响应Broadcast信令截图。

 

                                                     图4.海康设备invite 音频信令截图。

         设备向上级平台推送音频需要上级平台向设备发起请求视频请求,如果设备支持音频且在网页端已经配置音频流模式为复合流,设备将音频及音频一起打包成PS流推送到平台,这样便实现了双向语音。

GB28181 免费测试工具: https://download.csdn.net/download/JUST_DO_1122/88366062

技术交流,GB28181源码获取,定制开发 332725557

相关文章:

GB28181语音对讲协议详解

GB28181-2016语音对讲流程如下图1所示: 图1.语音对讲流程。 其中, 信令 1 、2 、 3 、 4 为语音广播通知、 语音广播应答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 为 S I P 服务器接收到客户端的呼叫请求通过 B 2 B UA 代理方式建立语音流接收者与媒…...

JavaScript 数据可视化:前端开发的核心工具

随着互联网和大数据的快速发展,数据呈爆炸式增长,如何有效地展示和理解数据成为了一项关键技能。JavaScript 作为前端开发的主要语言,不仅在构建网页方面无可替代,也在数据可视化领域发挥了重要作用。从简单的图表到复杂的交互式展…...

[Redis][哨兵][上]详细讲解

目录 0.前言1.基本概念1.相关名词解释2.主从复制的问题3.人工恢复主节点故障4.哨兵自动恢复主节点故障 0.前言 说明:该章节相关操作不需要记忆,理解流程和原理即可,用的时候能自主查到即可Redis的主从复制模式下,⼀旦主节点由于故…...

如何展开浏览器开发者模式的Fetch/XHR

说明:大多数程序员都用浏览器的F12,开发者模式查看接口,我也不例外。我常用下面这个选项,它会过滤掉掉其他文档、样式请求,只展示访问服务器的接口请求 有次,不知道点了什么,这个菜单消失找不…...

Pydantic 是一个强大的 Python 库

Pydantic 是一个强大的 Python 库,专门用于数据验证和设置管理。以下是对 Pydantic 的详细介绍: 一、主要功能和特点 数据验证: Pydantic 通过 Python 类型注解来定义数据模型,并自动验证输入数据是否符合预定义的类型和结构。提…...

每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java

目录 牛客_NC40链表相加(二)_链表高精度加法 题目解析 C代码 Java代码 牛客_NC40链表相加(二)_链表高精度加法 链表相加(二)_牛客题霸_牛客网 题目解析 模拟⾼精度加法的过程,只不过是在链表中模拟。 C代码 /*…...

Dubbo快速入门(一):分布式与微服务、Dubbo基本概念

文章目录 一、分布式与微服务概念1.大型互联网架构目标2.集群和分布式(1)集群 (Cluster)(2)分布式计算 (Distributed Computing)(3)集群与分布式的关系(4)实践中的应用案例 3.架构演…...

jmeter性能测试---csv数据文件设置

(1)什么时候使用CSV数据文件设置? 当不同的用户,或者同一用户多次循环时,都可以获取到不同的值 (2)使用CSV数据文件设置进行参数化的步骤? 实例: 请求:htt…...

交换基础【计算机网络】

交换基础 1、交换机的工作原理有哪4项操作,地址表如何建立的? 4项基本操作 丢弃 当本端口下的主机访问已知本端口下的主机时丢弃 转发 当某端口下的主机访问已知某端口下的主机时转发 扩散 当某端口下的主机访问未知端口下的主机时要扩散 广播 当某…...

Android12的netd分析

1.文件位置 system/netd/server/目录下的main.cpp和Android.bp 可知编译会生成netd的可执行程序。 2.main函数的流程 int main() {Stopwatch s; 。。。。。。。 // 启动NetlinkManager服务NetlinkManager *nm NetlinkManager::Instance();if (nm nullptr) {ALOGE("Una…...

OpenCV图像文件读写(6)将图像数据写入文件的函数imwrite()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像保存到指定的文件中。 函数 imwrite 将图像保存到指定的文件中。图像格式是根据文件名扩展名选择的(参见 cv::imread 获取扩展…...

JVM(HotSpot):方法区(Method Area)

文章目录 一、内存结构图二、方法区定义三、内存溢出问题四、常量池与运行时常量池 一、内存结构图 1.6 方法区详细结构图 1.8方法区详细结构图 1.8后,方法区是JVM内存的一个逻辑结构,真实内存用的本地物理内存。 且字符串常量池从常量池中移入堆中。 …...

JWT的基础与使用

JWT(JSON Web Token) 是一种用于在各方之间传输信息的紧凑、安全的方式,常用于身份验证和授权。它以令牌的形式将用户信息编码后传输,可以确保数据的完整性和安全性。 1.JWT的结构 JWT 是一个基于 JSON 的令牌,由三部…...

处理 VA02修改行项目计划行(SCHEDULE LINES )报错:不可能确定一个消耗帐户

用户修改销售订单行项目 计划行(SCHEDULE LINES) ,从 “CN”改为“CB”时候发生报错提示:不可能确定一个消耗帐户。 Not possible to determine a consumption account Message No. 06138 Diagnosis The system was not able to determine a consumpti…...

【AI基础】pytorch lightning 基础学习

传统pytorch工作流是首先定义模型框架,然后写训练和验证,测试循环代码。训练,验证,测试代码写起来比较繁琐。这里介绍使用pytorch lightning 部署模型,加速模型训练和验证,记录。 准备工作 1 安装pytorch…...

高通量测序技术--组蛋白甲基化修饰、DNA亲和纯化测序,教授(优青)团队指导:从实验设计、结果分析到SCI论文辅助

组蛋白甲基化修饰工具(H3K4me3 ChIP-seq)组蛋白甲基化类型也有很多种,包括赖氨酸甲基化位点H3K4、H3K9、H3K27、H3K36、H3K79和H4K20等。组蛋白H3第4位赖氨酸的甲基化修饰(H3K4)在进化上高度保守,是被研究最多的组蛋白修饰之一。 DNA亲和纯化测序 DNA亲…...

[极客大挑战 2019]RCE ME1

<?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]/",$code)){die("NO.");}eval($code); } else{highlight_file(__FILE__); }// ?>…...

计算机毕业设计 中医院问诊系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

FME辅助规划选址

1.需求&#xff1a;新建运动场馆 用地需求&#xff1a;至少1km*2km 找到符合要求的储备地块 2.已有资源&#xff1a;储备用地 现在城市地块储备比较充足&#xff0c;但都是不规则地块 找出可以建大型场馆的地块 3.问题分析 图斑内部可以放下1000*2000的矩形 4.解决思路…...

Unity中的GUIStyle错误:SerializedObject of SerializedProperty has been Disposed.

一运行就循环打印这个报错&#xff0c; 解决办法&#xff0c;每次改参数之后在HIerarchy中手动保存&#xff0c;就会停止循环打印&#xff0c;style中的字体也显示出来了&#xff0c; 或者 直接换个低版本的...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...