做移动端视频通话软件,大致看了下现有的开源软件(转)

转自:链接

要做一个移动端视频通话软件,大致看了下现有的开源软件

一) sipdroid1)架构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.),所以就不做测试了。

二) imsdroid1)架构:基于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的音频效果可以,视频效果还是不太理想。

三)csipsimple1)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的原因,一个是其视频通话相关关键技术都比较成熟的原因。个人觉得如果能做出来,效果会不错的。
时间: 2024-12-28 10:51:20

做移动端视频通话软件,大致看了下现有的开源软件(转)的相关文章

开源软件与知识产权

目录 1.      软件与知识产权... 2 1.1.      引言... 2 1.2.      著作权法与软件... 3 2.      开源软件概述... 3 2.1.      自由软件运动... 3 2.2.      开源软件的发展... 4 2.3.      开源软件涉及的主要权益... 4 2.3.1.       著作权... 4 2.3.2.       专利权... 4 2.3.3.       商标权... 5 2.4.      开源软件的优势与劣势... 5 3

[转]三维数字地球发布平台探索--几款开源软件介绍

先写想法: 想做个简单的地形漫游,于是考虑在ww直接开发,或找个控件形式的开发组件. 最大的期望有: 1. 支持google的sketchup,快速智能三维建模 2. 设计模式做好点,最好先做成组件形式,然后开发应用程序 3. 性能再好点,对于索引技术,内存管理等等 4. 客户端独立版本 和客户服务器端耦合版本的优化 5. 放点服务器的资料. .net平台 1.WorldWind      知名度很高,介绍也很全.链接在这里NASAWorld Wind     目前分为.net版本和java版本

开源软件测评方法及工具

一.开源史上最成功的八个开源软件 就开源本身而言,它就是个成功案例.它不仅受个人喜欢,而且众多知名企业也青睐于它.虽然开源计划和开源产品数不胜数,但哪一个才是最成功的呢?这里所说的"成功"的定义是:应用广泛+众所周知.而在众多成功的开源产品中,只有少数领头羊,而其他产品基本只能望其项背. Linux 上榜理由:Linux + GNU = GNU/Linux .从Linus Torvalds在1991年宣布他在Minix基础上创建一新OS内核到现在已经接近20年了.在这段时间内,大部分网

0_开源软件

创:unknown 修:16_3_2017 什么是开源软件? 可以自由使用,可以研究或者更改源代码的软件 开源原则: 使用自由(免费) 研究自由(获得源代码) 散步及改良自由(传播,改良,甚至"销售"(卖定制服务)) 商业软件:收费,属于某一公司开发和维护,代码不公开 为啥开源? 软件传播 提高安全性(足够多眼睛盯着看,就可以让问题再现) 带来一定的名气 可以销售注释(不违背开源原则)(没注释的情况下,阅读与改良软件成本高(人力资源)) 开源软件有哪些? Python,mongoDB,

开源软件:信息共赢的哲学

每本软件的著作里,都会提到“开源软件”,多数都会往哲学的层面上去解释,相当的形而上.我想,开源这回事,不就是大家把代码传到网上,给人下载学习,之后有了Linux,Apache一系列牛逼作品么?这么简单接地气的事情,为什么要搞得那么形而上呢? 开源也给我带来了不少的困惑,很多商业软件的授权费相当昂贵,而那些开源软件,水平堪比商业软件,那他们为什么要开源而不去盈利呢?我总以为那就是共产主义心态.国外的大胡子叔叔不仅是马克思,还可以是程序员! 再后来,我自己也写了一些自认为还不错的小程序,刚开始觉得自

开源软件许可证

1.开源精神 开源软件是一种共享精神,标志着使用自由.修改自由.发布自由,同时开源也意味着免费. 存在这样一种思量:昂贵而封闭的软件一定比开源而免费的软件好,更加稳定性能更高.这是一种误区,按照UNIX哲学,做好90%,剩余的10%看它自生自灭,所以开源软件世界里大浪淘沙最终生存下来的都是精品.这也是一种取舍,主要因素是看兼容性.或容忍度.世界上没有完美的软件,也没有100%无bug的软件,那么把错误率保证在哪个等级.把常用功能里的错误率保证在哪个等级,是一种取舍的艺术.事实上,所有的商业软件也

软件开发工具(第5章:软件开发工具的使用与开发)

一.购置与开发的权衡 购买或自行开发软件与哪些条件有关? 购买现成的软件开发工具还是自己开发专用的工具,与具体工作的条件. 环境.人员素质.项目特征都有不可分割的联系 自行开发软件开发工具的优点(重点.记忆) 目标明确,切实符合自己的需要. 便于进一步扩充和升级,不存在引进外面产品时不可避免的冲突 与不一致. 可以商品化,成为软件产品出售. 许多软件技术人员手边都积累了一些自制的.专用的.规模不一的软件开发工具 购买软件开发工具的优点(重点.记忆) 能够帮助人们减轻一定的工作负担,在某些环节上代

开源软件选型分析标准【转载】

http://wenku.baidu.com/view/0f4acf88cc22bcd126ff0ca2.html?re=view 1 标准和目标 1.1前言目前开源的网管软件众多,时间关系只能通过网络上的资料介绍和其他用户的体验进行评估.对于重点调查的开源软件通过运行环境搭建.开发环境搭建的方法进行实践.如果只是对通用网络设备的管理,被调研的软件只要经过适当的配置就可以满足要求. 对于我们的需求,这些软件不能满足我们100%的需求,必须进行二次开发,对软件二次研发的接口的调研就成为我们考察软件

超级联盟逆势而动必败,开源软件大势所趋必胜

近日进入"OpenSource"官网浏览,发现开源(OpenSource)的势头不减当年.什么是开源软件? 根据国际开源软件协会(OSI)的官方定义:"Open source software is software that can be      freely        used, changed, and shared (in modified or unmodified form) by anyone."其中的关键是:任何人可以自由使用.自由改变与自由分