Android VOIP 介绍一

以前觉得IP电话很神奇,他比用座机和手机便宜太多了(移动,联通等巨头估计收到他的冲击很大),但不知道他的原理是怎样的,前段时间刚好有机会做这部分工作,所以研究了其实现方式(涉及SIP,RTP,SRTP,NAT,STUN,TURN),下面介绍这部分涉及到的内容:

 

一、IP电话如何实现P2P通信?

1、通信最终都是通过TCP/IP协议来实现的,具体通信过程包括信令控制和数据传输,信令控制走的是SIP协议,简单来说就是双方如何交互(你拨打,我接听,你转接,我挂断等等操作),数据传输走的是RTP协议:

 

2SIP协议:该协议主要描述了打电话过程中客户端与客户端,客户端与服务器之间的几个常用操作,包括电话注册(客户端先注册到服务器)、拨打、接听、拒绝、转接、挂断,SIP协议即定义了通话双方的交互过程和方式。

 

3RTP:通话过程主要是P2P进行数据流的传输,如语音流、视频流,现在P2P交互基本上用的都是RTP协议,webRTC里面也是用RTPSRTP来传输数据流。

 

4CodeC:音视频设备收集到数据后会对其先进行压缩、编码,然后传输给对方,对方接收到后分别进行解码、解压(这里面还涉及到抖动,噪声消除),常用的编码方式有:VP8,H264,PCMU,PCMA,SILK,ILBC

 

5NAT:因为IP地址有限所以我们的PC基本上分配的都是内网地址,最后通过网关转发出去。这样问题就产生了一个问题:不在同一内网下的两台PC如何通信,这就涉及到NAT穿越了,STUN,TURN就是为了解决这些问题而产生的技术。

 

上面这些知识点扩展下去都是一个很大的知识点,这里抛砖引玉,也希望有兴趣的朋友可以找资料研究,如有疑问或建议欢迎一起讨论。

 

二、Android上优秀开源VOIP电话介绍:

1Sipdroid

2linphone

 

上面这两个开源软件的代码我都有所研究,下篇文章进行介绍,有兴趣的朋友可以一起探讨。

你可能感兴趣的:(Android VOIP 介绍一)