webrtc doubango linphone
1、doubango官网:http://www.doubango.org/
2、doubango是一个开源的VOIP基础平台, 并能用于嵌入式和桌面系统的开源框架,该框架使用ANSCI-C编写,具有很好的可移植性。
3、根据doubango的框架、特点与linphone的对比,显然doubango更适合做视频会议系统和视频会议终端的选择,理由?根据linphone的rtp会话管理可见只适合2方进行视频通话,如要支持多方(>3)视频会议,需MCU配合server进行音视频转发和mix,linphone对于nat穿透的方案只有stun和转发,linphone适合更适合当做一款网络电话终端供普通网民当做视频电话用。
4、doubango包含了 SIP/IMS (VoIP) 的客户端、服务器端的组件。
Client-side components | |
sipML5 | HTML5 SIP client using webrtc2sip Gateway. Enjoy our live demo » |
clik2dial | A complete Click-to-Call Solution using webrtc2sip Gateway and sipML5. Enjoy our live demo » |
webrtc4all | WebRTC extension for Safari, Opera, Firefox and IE. |
Boghe |
|
iDoubs | SIP/IMS VideoPhone for iOS (iPhone, iPad and iPod Touch) and MAC OS X. |
IMSDroid | SIP/IMS Client for Android. |
libSigComp | Signaling Compression (SigComp) library |
Server-side components | |
webrtc2sip | Smart SIP and Media Gateway to connect WebRTC endpoints to any SIP-legacy network. Enjoy our live demo » |
telepresence | Open Source TelePresence system with a smart and powerful MCU. Enjoy our live demo » |
Flash2IMS | Adobe® Flash® to SIP/IMS Gateway. |
5、doubango的主要特点
Powerful MCU (Multipoint Control Unit) for audio and video mixing
Stereoscopic (spatial) 3D and stereophonic audio
Full (1080p) and Ultra (2160p) HD video up to 120fps
Conference recording to a file (containers: *.mp4, *.avi, *.mkv or *.webm)
Smart adaptive audio and video bandwidth management
Congestion control mechanism
SIP registrar
4 SIP transports (WebSocket, TCP, TLS and UDP)
SA (direct connection to SIP clients) and AS (behind a server, such as Asterisk, reSIProcate,
openSIPS, Kamailio…) modes
Support for any WebRTC-capable browser (WebRTC demo client at http://conf-call.org/)
Mixing different audio and video codecs on a single bridge (h264, vp8, h263, mp4v-es,
theora, opus, g711, speex, g722, gsm, g729, amr, ilbc)
Protecting a bridge with PIN code
Unlimited number of bridges and participants
Connecting any SIP endpoint
Easy interconnection with PSTN
NAT traversal (Symmetric RTP, RTCP-MUX, ICE, STUN and TURN)
RTCP Feedbacks (NACK, PLI, FIR, TMMBN, REMB…) for better video experience
Secure signalling (WSS, TLS) and media (SDES-SRTP and DTLS-SRTP)
Continuous presence
Smart algorithm to detect speakers and listeners
Different video patterns/layouts
Multiple operating systems (Linux, OS X, Windows…)
100% open source and free (no locked features)
Full documentation
…and many others
6、doubango架构图
说明:
tinySAK (Swiss Army Knife): Utilities functions (SHA-1, MD5, HMAC, String, List, Timers, Thread, Mutex, Semaphore, ...)
tinyNET: Networking (DNS, DHCPv4/v6, STUN, TURN, ICE, ENUM, Sockets, ...)
tinyHTTP: HTTP stack (CONNECT, DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE, ...)
tinyXCAP: XCAP stack (AUID manager, URL generator) without XML parser (See Java code for parsers)
tinyIPSec: IPSec SA manager. Useless for Android but you MUST have it
tinySMS: SMS over IP (SM-TL, SM-RL) for IMS/LTE networks
tinySIGCOMP: Signaling Compression
tinySDP: SDP protocol
tinyRTP: RTP/RTCP protocols
tinyMSRP: MSRP protocol (Chat and File Transfer)
tinyMEDIA: Media plugins manager (Audio, video, Codecs, sessions, MSRP, QoS, ...)
tinyDAV(Doubango Audio Video): Media plugins implementation
tinySIP: SIP/IMS stack
最新要做一个移动端视频通话软件,大致看了下现有的开源软件
一) sipdroid
1)架构
sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器)实现。NAT传输支持stun server.
2)优缺点:
NAT方面只支持STUN,无ICE框架,如需要完全实现P2P视频通话需要实现符合ICE标准的客户端,音频方面没看到AEC等技术,视频方面还不是太完善,目前只看到调用的是系统自带的MediaRecorder,并没有自己的第三方音视频编解码库。
3)实际测试:
基于sipdroid架构的话,我们要做的工作会比较多,(ICE支持,添加回音消除,NetEQ等gips音频技术,添加视频硬件编解码codec.),所以就不做测试了。
二) imsdroid
1)架构:
基于doubango(Doubango 是一个基于3GPP IMS/RCS 并能用于嵌入式和桌面系统的开源框架。该框架使用ANSCI-C编写,具有很好的可移植性。并且已经被设计成非常轻便且能有效的工作在低内存和低处理能力的嵌入式系统上。苹果系统上的idoubs功能就是基于此框架编写) .音视频编码格式大部分都支持(H264(video),VP8(video),iLBC(audio),PCMA,PCMU,G722,G729)。NAT支持ICE(stun+turn)
2)效果实测
测试环境:公司局域网内两台机器互通,服务器走外网sip2sip
音频质量可以,但是AEC打开了还是有点回音(应该可以修复)。视频马赛克比较严重,延迟1秒左右。
3)优缺点
imsdroid目前来说还是算比较全面的,包括音视频编解码,传输(RTSP,ICE),音频处理技术等都有涉猎。doubango使用了webrtc的AEC技术,但是其调用webrtc部分没有开源,是用的编译出来的webrtc的库。如果要改善音频的话不太方便,Demo的音频效果可以,视频效果还是不太理想。
三)csipsimple
1)sip协议栈用的是pjsip,音视频编解码用到的第三方库有ffmpeg(video),silk(audio),webrtc.默认使用了webrtc的回声算法。支持ICE协议。
2)优缺点:
csipsimple架构比较清晰,sip协议由C实现,java通过JNI调用,SIP协议这一块会比较高效。其VOIP各个功能也都具备,包括NAT传输,音视频编解码。并且该项目跟进新技术比较快,官方活跃程度也比较高。如果做二次开发可以推荐这个。
3)实测效果
测试环境:公司局域网内两台机器互通,服务器走外网sip2sip
音频质量可以,无明显回音,视频需要下插件,马赛克比imsdroid更严重。
四)Linphone
这个是老牌的sip,支持平台广泛 windows, mac,ios,android,linux,技术会比较成熟。但是据玩过的同事说linphone在Android上的bug有点多,由于其代码实在庞大,所以我暂时放弃考虑Linphone.不过如果谁有跨平台的需要,可以考虑Linphone或者imsdroid和下面的webrtc.。。。好像现在开源软件都跨平台了。。。
五) webrtc
imsdroid,csipsimple,linphone都想法设法调用webrtc的音频技术,本人也测试过Android端的webrtc内网视频通话,效果比较满意。但是要把webrtc做成一个移动端的IM软件的话还有一些路要走,不过webrtc基本技术都已经有了,包括p2p传输,音视频codec,音频处理技术。不过其因为目前仅支持VP8的视频编码格式(QQ也是)想做高清视频通话的要注意了。VP8在移动端的硬件编解码支持的平台没几个(RK可以支持VP8硬件编解码)。不过webrtc代码里看到可以使用外部codec,这个还是有希望调到H264的。
总结:sipdroid比较轻量级,着重基于java开发(音频codec除外),由于其音视频编码以及P2P传输这一块略显不足,不太好做定制化开发和优化。imsdroid,遗憾就是直接调用webrtc的库,而最近webrtc更新的比较频繁,开发比较活跃。如果要自己在imsdroid上更新webrtc担心兼容性问题,希望imsdroid可以直接把需要的webrtc相关源码包进去。csipsimple的话,都是围绕pjsip的,webrtc等都是以pjsip插件形式扩充的,类似gstreamer. webrtc如果有技术实力的开发公司个人还是觉得可以选择这个来做,一个是google的原因,一个是其视频通话相关关键技术都比较成熟的原因。个人觉得如果能做出来,效果会不错的。
刚刚搞通linphone,终于能连上sip.linphone.org了,中间过程太心酸了。
一开始下载了linphone,申请了免费了linphone帐号,却不会填帐号密码,以致一直连不上服务器。
后来有开始在自己电脑上装SIP服务器,装的是opensips,又折腾了2天,服务器也没装成功(毅种循环)。
后来google到了windows上面的sip server 2008 + x-lite的挺简单的(带图文教程),所以照着做了一下,也可以连上自己的服务器。
但是用这种在同一个子网的方式连接方式,有时会有各种错误,比如我用教育网的时候就连接不上,而且现在我在用的时候,x-lite可以
注册上服务器,但是两台机子通讯的时候,就显示 bad gateway 错误(还不知道什么原因,以后再找)。后来用linphone也连上sip server 2008。
就是在这个时候才知道了要怎么填opensips帐号密码的。
讲了那么多废话,现在开始进入正题。
一开始我也是下载源代码安装的。后来因为各种不能用,被打击得不行,以为自己没编译好。后来才知道原来是一些没有看到的东西。
然后我用synaptic把linphone全删了,直接用sudo apt-get 安装。
sudo apt-get install linphone-nox #安装linphone,没有图形化界面,用linphone就有。
然后就直接执行 $ linphonec
我错误的原因就是因为SIP的端口5060被占用了,一直没有弄成功。
注意Warning哪句话,Warning: UDP port 5060 seems already in use ! Cannot initialize Ready(原谅我不会画重点)。
这样的话是注册不到服务器的(就是这个害我搞了那么久)。
解决办法是修改端口,不要用这个端口,改端口就可以了。配置文件和一般配置文件一样,在用户的家目录。
可以执行 vim ~/.linphonerc
把sip_port=5060改成其他端口比如5061。
这个时候再执行就没问题了。
这个时候就可以注册进服务器了,注册帐号可以上linphone官网注册。
我这里显示注册成功是因为之前注册过,信息写到.linphonerc里面了,所以会自动登录(也可以改里面的注册信息,自动登录)。
但是第一次登录时,需要注册。
比如我的帐号为 tao@sip.linphone.org 密码为ws123123(注意前面要加sip:)。
然后就注册成功了,这个时候就可以打电话了。
然后就可以用了。
比如 call sip:fxuk@sip.linphone.org
还有很多命令,自己用help查吧。
图形界面的设置之后再传上来吧。
webrtc doubango linphone的更多相关文章
- csipsimple,linphone,webrtc比较
转自: http://www.lxway.com/566299526.htm 最新要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频 ...
- IM比较SipDroid/IMSDroid/CSipsimple/Linphone/Webrtc
一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员和硬件制造商提供免版税认证(RF)的Silk宽带音频编码器 ...
- 开源移动端IM比较SipDroid,IMSDroid,CSipsimple,Linphone,webrtc
最新要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方开发人员 ...
- doubango简介
1.doubango官网:http://www.doubango.org/ doubango常用项目国内镜像(放在淘宝的svn服务器),目前有4个项目:doubango, idoubs, imsdro ...
- doubango介绍
1.doubango官网:http://www.doubango.org/ 2.doubango是一个开源的VOIP基础平台, 并能用于嵌入式和桌面系统的开源框架,该框架使用ANSCI-C编写,具有很 ...
- 单独编译使用WebRTC的音频处理模块
块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...
- WebRTC学习资料大全
在学习WebRTC,找了些资料,记录一下,供以后查询. 有些需要FQ才能看 WebRTC 介绍 官网在这里:https://webrtc.org/.然后这里有一个官方的Getting Started: ...
- Android IOS WebRTC 音视频开发总结(五九)-- webrtc这蛋糕都怎么吃?
本文主要介绍webrtc应用状况,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com WebRTC是个好东东,就好比是 ...
- Android IOS WebRTC 音视频开发总结(二九)-- 安卓噪声消除交流
Android上的音质一直被大家所困扰和诟病,这里面有很多原因, 下面是最近一位前UC同行发邮件跟我交流的一些记录,供参考,支持原创,文章来自博客园RTC.Blacker,转载请说明出处. 以下文字来 ...
随机推荐
- 如何去掉Intellij IDEA过多的警告 设置警告级别
Intellij IDEA的代码提示系统很强大,根据严格的代码规范,包括简洁程度,运行效率,潜在bug提前发现等等给你做出了除编译器之外的大量额外提示.但这些提示有时会给我们带来困扰,比如弄的界面很乱 ...
- Struts2的Action中访问servletAPI方式
struts2的数据存放中心为ActionContext,其是每次请求来时都会创建一个ActionContext,访问结束销毁,其绑定在ThreadLocal上,由于每次访问web容器都会为每次请求创 ...
- 【P2107】小Z的AK计划(优先队列+贪心)
水一发优先队列的水题.. 这个题貌似以前有做过类似的.具体的方法是用大根堆辅助贪心算法得出正解.可以看出来,如果小Z走到了某个地方,那么他最远一定是到了这里,不可能有再走回来这种操作,因为很明显那样不 ...
- 机器学习之K-近邻(KNN)算法
一 . K-近邻算法(KNN)概述 最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类.但是怎么可能所有测试对象都会找到 ...
- CentOS6.4x84挂载U盘
root用户登录 1. 查看磁盘情况: fdisk -l 信息如下: [root@CentOS6 ~]# fdisk -l Disk /dev/sda: 128.8 GB, 128849018880 ...
- 关于Javascript没有块级作用域和变量声明提升
Javascript是没有块级作用域的,在语句块中声明的变量将成为语句块所在代码片段的局部变量.例如: if(true){ var x=3; } console.log(x); 结果输出3. 再如: ...
- jsp:jstl标签库国际化 fmt
首先资源文件目录是:src/man/sources (这是它默认的资源文件) i18n_en_US.properties文件内容 copyright=Copyright \u00A9 2013 lan ...
- TCP 3次握手建立连接
TCP 3次握手建立连接 1. (Client) –> [SYN] –> (Server) 假如Client和Server通讯. 当Client要和Server通信时,Client首先 ...
- 批处理BAT(一)
批处理 全盘根目录下查找文件夹并删除(1)@echo offfor %%a in (C D E F G H) DO (cd\if exist "%%a:\123\" rd /s / ...
- spring mvc中,如何在 Java 代码里,获取 国际化 内容
首先,在Spring的application.xml中定义 <bean id="messageSource" class="org.springframework. ...