语音通话-sip电话(一)
来源:互联网 发布:开淘宝找货源 编辑:程序博客网 时间:2024/04/29 12:26
语音通话-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:大黄
- 语音通话-sip电话(一)
- Android 语音通话模块介绍(一) 开源的SIP协议栈
- Android 语音通话模块介绍(二) SIP流程
- Android 语音通话模块介绍(二) SIP流程
- 两个电话之间的SIP通话范例
- SIP入门(一):建立SIP软电话环境
- SIP入门(一):建立SIP软电话环境
- SIP入门(一):建立SIP软电话环境
- SIP语音对讲从零到整之(一)sip介绍
- 电信一 电话通话过程
- 实时语音视频通话SDK如何实现立体声(一)
- 用yate2实现软VoIP语音通话(SIP协议)
- 用yate2实现软VoIP语音通话(SIP协议)
- 用yate2实现软VoIP语音通话(SIP协议)
- iOS语音通话(语音对讲)
- iOS语音通话(语音对讲)
- Gtalk2VoIP–通过IM语音来接听SIP电话
- Android SIP 网络通话
- 无IDE时编译和运行Java
- [leetcode] Jump Game
- 玩转oracle学习第七天
- gradle运行java main
- 剑指offer 面试题10
- 语音通话-sip电话(一)
- Add Two Numbers (leetcode 2)
- 【Java】基本数据类型及其封装类、字符串、Date\Calendar\SimpleDateFormate
- cocos2d-android设置透明背景
- 机器视觉光源学习总结——开孔背光源
- 记录是最好的开始
- android程序入门
- javascript延长作用域链
- 机房重构的总结 (一)