转自:链接

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

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

转载于:https://www.cnblogs.com/YangBinChina/p/4308025.html

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

  1. linux批量安装 五大开源软件挨个看,Linux批量安装 五大开源软件挨个看(1)(5)

    5.OpenQRM 下面的话摘自OpenQRM的官方网站: "OpenQRM是下一代开源数据中心管理平台,它采取了完全可插拔的架构设计,支持自动.快速和基于设备的部署,提供了监控功能,支持高 ...

  2. 玩转Windows下40款开源软件 (转)

    玩转Windows下40款开源软件   <script src="http://blog.csdn.net/count.aspx?ID=1789004&Type=Rank&qu ...

  3. 玩转Windows下40款开源软件

    这是国外较有影响的网站于2007年9月8日发布的新文章,算是windows下20款开源软件的续篇.发出不久,digg数已上千.xbeta进行简译,以便于国内用户在免费软件方面有更多选择. 信息安全 这 ...

  4. 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

  5. 商业公司主导下的非营利开源软件基金会之 ———— Eclipse 的成长和发展(上)...

    点击上方蓝字 关注开源之道 成为由个人和组织所组成的共同体通力协作打造商业友好的开源项目的领导者. ---- Eclipse 愿景 Eclipse Theia 1.0 发布,剑指微软 VS Code ...

  6. 干货 :建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

  7. 商业公司主导下的非营利开源软件基金会之 ———— Cloud Foundry 基金会简史

    点击上方蓝字 关注开源之道吧 为什么 OpenShift 没有成立基金会? 平台即服务(PaaS),在容器之前的时代,竞争格局还是非常激烈的,尤其是中间件的市场,那么为什么 Spring 选择了成立基 ...

  8. linux开源软件_为什么要使用Linux和开源软件?

    linux开源软件 正如我在"队列"启动时提到的那样 ,尽管通常我会回答读者的问题,但有时我会转而询问读者问题. 自从第一篇专栏文章以来,我还没有这样做,所以已经过期了. 我最近在 ...

  9. 下拉推广系统立择火星推荐_下拉框软件都择火星下拉下拉框软件速来火星下拉...

    区,当用户输入一个字或词,搜索引擎会智能输出与之相关联且流量最大的关键词,所以当客户去搜索某个产品或服务时,一眼就会看到这些加粗的黑体字,就会认为这些是大家最关注.最受欢迎和好评的商家或品牌,直接吸引 ...

最新文章

  1. 深入浅出神经网络的改进方法!
  2. 光流 | OpenCV3实现LK Optical Flow(代码类)
  3. CCNA学习笔记12---黄毛丫头篇(访问控制列表)
  4. 普通索引和唯一索引,傻傻分不清楚?
  5. 告别2019,写给2020:干好技术,要把握好时光里的每一步
  6. chrome控制台如何把vw显示成px_【CSS】rem,em,px的区别和使用场景
  7. 手握顶会顶刊论文,自信满满面试算法岗竟被刷?
  8. Linux中ACL权限设置
  9. allow control allow origin_Origin绘图笔记(一)——如何高效绘制一个漂亮的数据图...
  10. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲
  11. 【数字图像处理系列一】opencv-python快速入门篇
  12. C语言学习资料汇集 助你成为更好的程序员
  13. Facebook分享动态内容
  14. SyncToy 文件同步工具的定时同步方案(不使用第三方软件)
  15. 灵魂有香气的女子李筱懿|讲述女性自我成长的重要性
  16. 天下码农苦外包公司久矣
  17. 2019年安徽省程序设计大赛题解
  18. 中级微观经济学 复习框架思维导图-平狄克
  19. 如何把标签输出为PDF文件
  20. JAVA新生入学报到管理系统计算机毕业设计Mybatis+系统+数据库+调试部署

热门文章

  1. 没有光驱怎样从硬盘上安装Windows XP系统
  2. React开发(274):ant design table额外展开行
  3. [react] 为何说虚拟DOM会提高性能?
  4. React开发(158):ant design级联回显 直接传入数组
  5. [vue] 你有看过vue推荐的风格指南吗?列举出你知道的几条
  6. 前端学习(2372):uni-ui库
  7. 前端学习(2345):项目目录简单介绍
  8. 前端学习(2239):小滴后台管理系统简介
  9. 前端学习(2064):vue的生命周期函数有什么
  10. 玩转oracle 11g(40):Oracle11g 不区分大小写设定