基于pjsip和webrtc封装sip客户端


         之前一直在做pjsip的开发,pjsip开源库目前是业界评价非常好的协议栈,并且架构非常清晰,开源社区也非常活跃,经过我们的项目测试,也是非常稳定的,功能也很齐全,底层的接口包括pjsippjnathpjmediapjsip实现了标准的sip协议,pjnath实现了stunturn以及ice解决方案,pjmedia实现了所有的音视频处理,包括编解码以及传输层;上层的接口ua层,也封装的很到位,分c接口和c++接口,基本上会编程的都能简单的使用起来。

        目前的项目在使用webrtc的库,也是非常不错的,毕竟曾经是商用的库,qq也是用的这个,信令层用的是jingle协议,支持所有的音频编解码,视频支持VP8,不支持H264,同样支持stunturn以及ice协议,尤其音视频引擎模块是其核心的技术,音频引擎(VoiceEngine)是包含一些列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案,视频引擎(VideoEngine)是包含一些列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。

         以上两个项目各有各的特点,但是侧重点以及优势各不相同,pjsip侧重于的sip协议,webrtc侧重于web端的接口,而pjsip使用的sip协议是目前voip开发的主流协议,很成熟也很灵活,但是媒体处理确是其短板,尤其是androidios平台的支持还不够完善,并且效果也一般般,相反的,webrtc的媒体处理效果是大家公认的好,但是其信令就没有那么灵活,尤其作为客户端开发,UAC架构的基本上可以舍弃了,到这里,大家可能会问了,那有没有把这两个开源项目结合的开源项目呢,答案还真有,叫csipsimple,也是一个开源项目,但是这个开源项目只是使用了webrtc的部分编解码,而没有直接使用其音视频引擎,这样就是还没有完全发挥webrtc的优势,而且项目比较复杂,也很难维护。所以我有个设想,能不能将webrtc的音视频引擎添加上pjsip的协议处理,在加上pjnath组成一个完整的客户端,再在这三个基础上封装一层UA层,方便客户端使用,当然这里面还有很多的工作要做,目前也只是个想法,您觉得可行么?欢迎留言提建议。

你可能感兴趣的:(WebRTC,voip,SIP,pjsip,sip客户端)