GB28181移植总结
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的方式
注册
–TODO-- (刷新注册: 过程类似 register_id保持不变)
注销
设备信息查询
实时点播
开源库交叉编译
先编译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/installPKGCONFIGPATH=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移植总结相关推荐
- 用android实现GB28181监控客户端app
武汉一直笼罩在新冠状病毒的疫情中,我不喜欢在朋友圈拿疫情去炒作,但我知道,如果真的智能AI智能识别,智能机器人,自动驾驶,远程分级诊疗等热门技术如果只要有一样能够落地能够应用,武汉的疫情不会如此被动. ...
- PowerBuilder程序 ASA 数据库移植后不能连接解决
前言: 软件开发工具实践课作业用的powerbuilder自带的数据库画板建立的,建好之后运行成功后就没有再管过了.后来代码在别人的机器跑不起来.报错信息如下 找到原因: 程序运行完后,没有手动断开连 ...
- node.js实现国标GB28181流媒体点播(即实时预览)服务解决方案
背景 28181协议全称为GB/T28181<安全防范视频监控联网系统信息传输.交换.控制技术要求>,是由公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100 ...
- web server大全之GoAhead移植(转载)
转自:http://linux.chinaunix.net/techdoc/develop/2009/06/19/1119124.shtml 注:最近在做goAhead web server和移植其到 ...
- Tomcat V6 Examples移植到Apusic V5.1
目标:将Tomcat V6的的例子Examples移植到Apusic V5.1上 术语:Tomcat:只提供了WEB容器的开源服务器: Apusic:提供了完整的J2EE支持的商用服务器: %TOMC ...
- 嵌入式linux alsa,嵌入式Linux下ALSA音频架构ALSA-lib移植与编译心得
**************************************************************************************************** ...
- java的移植性_详细介绍JAVA的可移植性
软件可移植性指与软件从某一环境转移到另一环境下的难易程度.为获得较高的可移植性,在设计过程中常采用通用的程序设计语言和运行支撑环境.尽量不用与系统的底层相关性强的语言.下面介绍JAVA的可移植性. 1 ...
- [mqtt]mqtt嵌入式移植
目前在无线这块,很多4G模组的厂商已经将mqtt放入模块内,无需在项目代码中再实现mqtt移植 github eclipse paho source code: https://github.com/ ...
- NDK/JNI demo ( 五 ) ORB_SLAM2在Android上的移植过程
Android平台搭建和NDK环境配置 Android移植基础 NDK是集成的Android中调用C++代码的工具包,核心是JNI(Java Native Interface)技术,具体这里略过不表. ...
- 如何将cocos2d-x程序分别移植到ios,android,windowsphone三个手机平台上
作者:方格子 链接:https://www.zhihu.com/question/21505500/answer/22152464 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
最新文章
- HDU1892(二维树状数组)
- 计算机知识浩瀚,计算机视觉基础
- Ubuntu使用ssh公钥实现免密码登录
- 【2012百度之星 / 资格赛】I:地图的省钱计划
- SQL Server 默认跟踪报表
- Scott 32 岁前端年终总结,探寻另一种可能
- 北科大计算机技术研招考纲,北京科技大学2021年全国硕士研究生招生考试自命题科目考试大纲...
- python mock测试_使用mock测试python中的函数
- 进行java环境设置的原因_java环境变量的设置原因
- 从面向对象的api中识别软件组件(论文翻译)
- Twitter数据抓取的方法(二)
- 单例设计模式(懒汉式)(饿汉式)
- Ubuntu 安装 gcc 过程
- 计算机弹琴游戏,电脑键盘钢琴软件(弹钢琴小游戏)
- nginx反向代理负载均衡功能
- 手机里面android什么意思,wipe什么意思?安卓手机如何wipe
- 记录ExtJs时间控件日期加一天
- Arduino 学习思考与记录
- IPFS-Cluster 集群安装与验证测试
- mysql杀掉sql语句,Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
热门文章
- 设计模式之组合模式——Java语言描述
- 浅谈 C# CLR 执行模块
- php分页查询·······类
- Caused by: org.hibernate.HibernateException: unknown Oracle major version [0]
- 学会使用Trace和Debug
- Delphi 的绘图功能[2] - 入门
- Hadoop在运行几个T数据量时报堆内存溢出
- Goland的下载与安装
- hbase常识及habse适合什么场景
- 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!