最近要用到sip协议,因此寻找了两个开源项目作对比,分别是linphone和pjsip,经过对比,最终选择pjsip这套开源协议栈进行开发。
主要原因有如下(仅个人参考):
1、linphone的代码结构不如pjsip分明,pjsip在windows下更方便调试;2、linphone更新后不使用osip作为协议栈,改用自行编写的belle_sip,pjsip协议栈还在维护,且一直稳定;3、pjsip作为协议栈开发的示例很多,belle_sip来开发还是linphone头一回。linphone和pjsip都是很优秀的开源项目,我都支持,,都值得学习,只是选择pjsip更适合我的项目。
pjsip的代码结构:
基础库: pjsip基础辅助库:pjutil
(最底层接口)
基础协议栈:pjsiip、pjsip-simple
基础媒体库:pjmedia、pjmedia-codec(pjmedia_audiodev/pjmedia_videodev)、pjnath(nat穿透)(中间层接口,依赖pjsip和pjutil)
整体封装接口:pjsip-ua
应用层接口:pjsua-lib/pjsua2_lib
(依赖中间层接口)
应用:pjsua
示例:sample_pjsua.c 带注册,可拨打和接听
sampleua.c 不带注册,可拨打和接听
siprtp.c 发送和接收rtp包
httpdemo.c 一个简易的http client其中,一层接口都带了test,对学习它的api很有帮助
有兴趣可以一起研究:Q群(437295987)
我想,这就是旅行的真义吧。