GB28181 概述

  • 控制协议:基于国际的SIP协议和XML协议,相关开源库:libosip, libeXosip, mxml, md5
  • 流媒体:采用PS流的RTP封装,简易流程:H264 -> PS -> RTP -> SIP服务器

定义

  • SIP: 会话发起协议
  • SDP:会话描述协议(关于流媒体的信息)
  • RTP:实时传输协议

SIP消息语法

请求 — 应答机制

消息 = 消息头 + 消息体

请求

请求消息头 = 起始行 + 若干消息头字段行

起始行 = SIP方法 + 请求URI + SIP版本

消息头字段行,必须包含:To, From, Cseq, Call-ID, Max-Forwards, Via 字段名

SIP方法:

  • REGISTER:终端注册
  • INVITE:建立会话
  • CANCEL:取消发送请求
  • ACK:应答
  • BYE:结束会话
  • UPDATE:更新会话
  • OPTIONS:终端支持的SIP方法
  • INFO:终端查询
  • SUBSCRIBE:事件订阅
  • MESSAGE:即时通信
  • NOTIFY:事件通知

除了ACK,其他都需要应答

应答

应答消息头 = 状态行 + 若干消息头字段行

状态行 = SIP版本 + 状态码 + 状态说明

消息头字段行 = 字段名 + ‘ :’ + 字段值

状态码:

  • 1xx:临时应答
  • 2xx:请求成功
  • 3xx:请求重定向
  • 4xx:请求失败
  • 5xx:服务器错误
  • 6xx:严重错误

字段名:

  • via:用于事务传输,必须包含branch参数(事务层的事务标准),必须以“z9hg4bk”开始
  • To:请求消息的逻辑接收者,包含tag参数(Dialog 标识的组成部分)
  • From:请求消息的逻辑发起者,包含tag参数(Dialog 标识的组成部分)
  • Call-ID:初始请求标识,Dialog的组成部分,具有唯一性
  • Cseq:请求序号,32bit无符号整型,每请求一次,递增1
  • Max-Forwards:最大路由次数
  • Contact:消息的逻辑通信方,INVITE请求中必须包含该字段
  • Accept:逻辑终端支持的数据格式(defalut: application/sdp)
  • Allow:逻辑终端支持的SIP方法
  • WWW-Authenticate:认证提示信息
  • Authorization:认证信息
  • Content-Type:消息数据类型,消息体非空时,必须包含该字段
  • Content-Length:消息体长度,消息头需要包含
  • Expires:过期,单位:S
  • Route:路由信息
  • User-Agent:客户端代理标识
  • Server:服务器代理标识

功能通信时序图

这里是简单的UAC/UAS的方式

注册

UACUASregister401 Unauthorizedregister200 OKUACUAS

–TODO-- (刷新注册: 过程类似 register_id保持不变)

注销

UACUASregister(expires=0)401 Unauthorizedregister(expires=0)200 OKUACUAS

设备信息查询

UASUACMessage(DeviceInfo请求)200 OKMessage(DeviceInfo响应)200 OKUASUAC

实时点播

UASUACINVITE(Play)101 Dialog Establishment (eXosip自动发起)200 OK(含SDP)ACK流媒体传输UASUAC

开源库交叉编译

先编译libosip2,再编译libeXosip2。

备注:arm-hisiv600-linux为交叉编译器

libosip2

tar xf libosip2-3.6.0.tar.gz

cd libosip2-3.6.0

mkdir install

./configure --host=arm-hisiv600-linux --prefix=$PWD/install

make

make install

install目录:生成相应的库和头文件

libeXosip2

tar xf libeXosip2-3.6.0.tar.gz

cd libeXosip2-3.6.0

mkdir install

./configure --host=arm-hisiv600-linux --prefix=PWD/installPKGCONFIGPATH=PWD/install PKG_CONFIG_PATH=PWD/installPKGC​ONFIGP​ATH=PWD/…/libosip2-3.6.0/install/lib/pkgconfig (指向libosip2的生成目录)

make

make install

intall目录:生成相应的库和头文件

mxml-2.10

tar xf mxml-2.10.tar.gz

cd mxml-2.10

./configure --host=arm-hisiv600-linux

make

说明:make 会发生错误,编译可执行文件,不用理会,这时已经产生了库。

拷贝相应的库:libmxml.a libmxml.so libmxml.so.1 libmxml.so.1.5

头文件:mxml.h

测试代码

GB28181移植总结相关推荐

  1. 用android实现GB28181监控客户端app

    武汉一直笼罩在新冠状病毒的疫情中,我不喜欢在朋友圈拿疫情去炒作,但我知道,如果真的智能AI智能识别,智能机器人,自动驾驶,远程分级诊疗等热门技术如果只要有一样能够落地能够应用,武汉的疫情不会如此被动. ...

  2. PowerBuilder程序 ASA 数据库移植后不能连接解决

    前言: 软件开发工具实践课作业用的powerbuilder自带的数据库画板建立的,建好之后运行成功后就没有再管过了.后来代码在别人的机器跑不起来.报错信息如下 找到原因: 程序运行完后,没有手动断开连 ...

  3. node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案

    背景 28181协议全称为GB/T28181<安全防范视频监控联网系统信息传输.交换.控制技术要求>,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100 ...

  4. web server大全之GoAhead移植(转载)

    转自:http://linux.chinaunix.net/techdoc/develop/2009/06/19/1119124.shtml 注:最近在做goAhead web server和移植其到 ...

  5. Tomcat V6 Examples移植到Apusic V5.1

    目标:将Tomcat V6的的例子Examples移植到Apusic V5.1上 术语:Tomcat:只提供了WEB容器的开源服务器: Apusic:提供了完整的J2EE支持的商用服务器: %TOMC ...

  6. 嵌入式linux alsa,嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得

    **************************************************************************************************** ...

  7. java的移植性_详细介绍JAVA的可移植性

    软件可移植性指与软件从某一环境转移到另一环境下的难易程度.为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境.尽量不用与系统的底层相关性强的语言.下面介绍JAVA的可移植性. 1 ...

  8. [mqtt]mqtt嵌入式移植

    目前在无线这块,很多4G模组的厂商已经将mqtt放入模块内,无需在项目代码中再实现mqtt移植 github eclipse paho source code: https://github.com/ ...

  9. NDK/JNI demo ( 五 ) ORB_SLAM2在Android上的移植过程

    Android平台搭建和NDK环境配置 Android移植基础 NDK是集成的Android中调用C++代码的工具包,核心是JNI(Java Native Interface)技术,具体这里略过不表. ...

  10. 如何将cocos2d-x程序分别移植到ios,android,windowsphone三个手机平台上

    作者:方格子 链接:https://www.zhihu.com/question/21505500/answer/22152464 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

最新文章

  1. HDU1892(二维树状数组)
  2. 计算机知识浩瀚,计算机视觉基础
  3. Ubuntu使用ssh公钥实现免密码登录
  4. 【2012百度之星 / 资格赛】I:地图的省钱计划
  5. SQL Server 默认跟踪报表
  6. Scott 32 岁前端年终总结,探寻另一种可能
  7. 北科大计算机技术研招考纲,北京科技大学2021年全国硕士研究生招生考试自命题科目考试大纲...
  8. python mock测试_使用mock测试python中的函数
  9. 进行java环境设置的原因_java环境变量的设置原因
  10. 从面向对象的api中识别软件组件(论文翻译)
  11. Twitter数据抓取的方法(二)
  12. 单例设计模式(懒汉式)(饿汉式)
  13. Ubuntu 安装 gcc 过程
  14. 计算机弹琴游戏,电脑键盘钢琴软件(弹钢琴小游戏)
  15. nginx反向代理负载均衡功能
  16. 手机里面android什么意思,wipe什么意思?安卓手机如何wipe
  17. 记录ExtJs时间控件日期加一天
  18. Arduino 学习思考与记录
  19. IPFS-Cluster 集群安装与验证测试
  20. mysql杀掉sql语句,Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

热门文章

  1. 设计模式之组合模式——Java语言描述
  2. 浅谈 C# CLR 执行模块
  3. php分页查询·······类
  4. Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
  5. 学会使用Trace和Debug
  6. Delphi 的绘图功能[2] - 入门
  7. Hadoop在运行几个T数据量时报堆内存溢出
  8. Goland的下载与安装
  9. hbase常识及habse适合什么场景
  10. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!