语音通话-sip电话(一)

本文分享了作者从零开始接触SIP电话系统的历程,详细介绍了SIP电话的基础概念及关键技术,包括SIP协议、NAT穿越、语音编解码与RTP传输,并对比了几款主流的SIP开源库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语音通话-sip电话(一)——概述

最近有接到一个需求,需要做个语音通话系统,因为本人之前是完全没有相关经验的,内心各种抗拒,可是也只能硬着头皮接了下来,于是开始各种搜索,得到的结果:1.某某公司语音通话的SDK 2.voip电话。继续从voip延伸,我搜到了sip电话。

对于sip,我是完全不知道是啥,搜到的时候我也是第一次听到,经历好长一段时间的学习,看代码,现在算是有了一定的了解,所以在这里稍微总结一下。希望对自己和别人有所帮助,如果有任何问题,欢迎给我指点。

现在国内做软电话的公司应该不多,大多模式是以下几种:1.网络电话app,按时间计费。2.提供SDK,让其他开发者嵌入,也是按时间或者流量收费。3.在IM app里面加入语音聊天模块。可能因为相关利益问题,这些技术是没有开源的,相关资料甚少。

我在这里先给出我了解到的资料。
相关技术:

1.sip
2.nat穿越
3.语音编解码
4.语音传输(rtp)

以上四个技术点其实就是sip电话里面的四个模块,sip负责会话创建、维护、中断等;nat穿越就是传说中的p2p打洞,需要stun服务器配合。将语音数据按照某种格式编码,交给传输层传输,传输通常是基于udp的rtp流。

相关协议:

1.sip
2.sdp
3.stun、turn、ice
4.rtp

sip,Session Initiation Protocol,会话初始协议是一个协议栈,集合了注册,呼叫,接听,挂断等相关协议;sdp是会话描述协议,我的理解TA是让两个通讯方指定通讯规则,比如用何种协议传输,音频是何种格式等等,stun、turn、ice是nat穿越使用的,stun采用p2p打洞,turn采用的是转发,ice只是考虑当前环境适合何种方案,然后选择相应解决办法。rtp是实时传输协议,TA其实包括rtp和rtcp两个协议,负责将语音数据的传输。

相关库:

1.linphone
2.pjsip
3.webrtc
4.osip、exosip
5.ortp
6.mediastreamer2

linphone和pjsip都是国外很有名的sip开源库,pjsip的代码很优雅,很美,它里面那一套内存管理跟oc里面的autoreleasePool好像。但我最终使用的是linphone,原因是linphone还提供服务器给我们用,可用于测试。
linphone的官网:http://www.linphone.org,也可从appstore下载linphone先使用;pjsip的比较完整的demo是SIPHON,可以下载一个miniSIPServer搭建服务器尝试使用。
osip是实现sip协议的一个开源库,exosip是osip的一个扩展。
ortp是实现rtp的一个开源库。
mediastreamer2是负责音视频编解码的一个库。

>
>
via:大黄

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值