基于OSip协议栈的GB28181视频平台--sip协议栈选型

背景

        近期有个通过国标协议接入摄像机,完成上墙的业务需求。之前采购的平台不具备此能力,经过综合评估后部门决定自研平台,完成该功能。

sip协议栈选型

        我了解到的sip协议栈主要有osip、resip、pjsip三个,其中osip协议栈最简单、历史最悠久、同时网上相关资料最多,甚至有很多demo完成了基本功能;resip协议栈功能强大、稳定,很多电信级产品都是基于此协议栈的,痛点是该协议栈复杂、过度封装,gb28181要求以b2bua的结构实现信令服务器,使用resip不好拆分实现;对于pjsip只是网上看到,没有具体使用过,但是很多人给的评价很高,但是论坛上相关资料比较少。基于项目紧急程度、还有自身经验,本次使用osip协议栈作为sip协议栈。

        osip协议栈有个扩展协议栈exosip,很多人不知道这个和osip的区别和联系,大概解释一下,exosip是osip协议栈的扩展,osip协议栈只封装了sip消息的生成、发送等,sip协议本身是个有有状态机的协议,单纯使用osip需要维护很多定时器和回调函数,并且要求开发者对于sip协议有相当的了解(得熟悉rfc3261),exosip的目的是对于开发者频闭掉这些困难,使开发着更能专注于业务层面的代码设计。

        osip/exosip协议栈版本很多,截止目前最新版本为5.3.0。本着避免最新版本、不用老旧版本的原则本来打算使用5.2.0版本,后续在实现过程中发现此版本构建invite请求时via与contanct头域一直设置为“999.999.999.999:9999”,本来以为是使用问题,后来通过源码定位问题时发现这是osip/exosip协议栈本身的问题。

猜你喜欢

转载自blog.csdn.net/heibao111728/article/details/129790205