分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

国内现在很多语音聊天工具都是基于TURN方式实现的,包括YY、AK等等,这种方式对于服务器的性能要求很高,而且在用户量增大的时候,服务器压力也会越来越大,用户的语音质量也会受到很大影响。而基于P2P方式实现的语聊服务器,就可以极大的避免这种情况的发生,而且用户的语音体验也会非常好。
   通过上文(P2P的原理和常见的实现方式(为libjingle开路))我们知道,因为NAT设备没有固定标准的原因,导致并不能100%的实现P2P,但是根据现在通用的ICE&STUN的方式,P2P的成功率可以达到90%多。前段时间在找使用这种方法实现的成熟库,最后猛然发现libjingle就在那里。
   通过一个多星期的研究,在此记录一下libjingle库的大致情况,如有不妥,希望朋友们可以留言或者邮件(peakflys@gmail.com)指正。

Libjingle综述   
   Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与2005年12月15日发布第一个版本,可以粗略的看成是Jingle协议的C++实现库(peakflys注:只是和Jingle协议非常相似,并不完全兼容,区别以后介绍),Google Talk即是基于这个库开发的。通过libjingle我们可以建立一个直通的网络连接(无视中间的NAT、防火墙、中继服务器和代理等),无需特别关心Session建立的细节(加解密、格式等),直接进行数据的交换。它也实现了一些辅助的功能,例如XML的解析和网络代理的处理。我们通过它可以实现如下的应用:

·一个多用户的语音聊天应用

·一个多用户的视频会议应用

·一个多用户的现场音乐、流媒体应用

·一个点到点的文件传输和共享的应用

目前库的版本是0.7.1(2012年10月2日发布),支持Windows和UNIX/Linux,开源许可用的是Berkeley-style,这也就意味着,可以任意的修改和扩展它来更好的满足自己产品的需要。

库的SVN路径:http://libjingle.googlecode.com/svn/trunk/talk

值得注意的是:

①    Libjingle库本身的实现依赖于一些第三方库,例如:语音聊天依赖于Linphone或者GIPS,这取决于使用者的平台

②    Libjingle只是一个客户端的实现, relay Server协议和STUN协议(如果需要),还需要自己实现

实现relay Server后的网络结构(STUN使用 网络上现有的,例如Google等公司提供的公有STUN服务器):

实现relay Server和STUN Server后的网络结构:

STUN协议的实现不难,网上也有很多开源的代码实现,关键是需要一些资源的部署(需要两个公网IP)

P2P的关键实现在客户端,通过使用libjingle我们可以快速的构造一个健壮高效的P2P Client,如果仅仅是实现类似于Skype或者QQ那样的两人或者几人聊天,服务器方面实现就非常容易。但是如果要实现大用户参与的语音室,那么我们就得专注于服务器广播包的优化了。

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

P2P传输的开源库 Libjingle库 综述相关推荐

  1. P2P传输的开源库:Libjingle库 综述

    转自:http://blog.csdn.net/educast/article/details/39472349 其它:http://www.cnblogs.com/welen/articles/50 ...

  2. linux tcp server开源,GitHub - 06linux/cellnet: 高性能,简单,方便的开源服务器网络库...

    cellnet cellnet是一个高性能,简单,方便的开源服务器网络库 自由混合编码,业务代码无需调整. TCP和html5的应用都可以直接使用cellnet迅速搭建服务器框架. 与Java的Net ...

  3. 值得推荐的C/C++开源框架和库

    原文链接:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm 留档备查,非常强大的C/C++开源项目总结文档- 值得学习的C语言开源项目 ...

  4. 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...

  5. Android开源项目及库整理总结

    自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...

  6. iOS、mac开源项目及库

    1.用来生成 @3x 的图片资源对应的 @2x 和 @1x 版本,只要拖拽高清图到 @3x 的位置上,然后按Ctrl+Shift+A即可自动生成两张低清的补全空位.当然你也可以从 @2x 的图生成 @ ...

  7. 【 AI 简报 2020930 期】NVIDIA开源C++标准库等热点新闻等你来!

    导读:本期为 AI 简报 2020930期,将为您带来过去一周关于 AI 新闻 9 条,其他互联网圈内新闻 5 条,希望对您有所帮助~ 有更好的建议或者意见请在下方留言~ AI 1. AI养猪.智能超 ...

  8. 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...

  9. PKplayer(P2P播放器)开源P2P播放器综述

    国内现在很多直播平台都是基于服务器+CDN方式实现的,包括YY.斗鱼等等,这种方式对于服务器的性能要求很高,而且在用户量增大的时候,服务器压力也会越来越大,用户的体验也会受到很大影响.而基于P2P方式 ...

最新文章

  1. linux在多核处理器上的负载均衡原理
  2. 进阶高端,2017年vivo手机用实力说话
  3. 【Vue】component学习笔记
  4. Java实现算法导论中Pollard的rho启发式方法
  5. 若依微服务版怎样修改Nacos中配置文件使Url不受权限认证跳过Token验证
  6. WebIDE sandbox
  7. 小学计算机三年级课程目录,小学生信息技术课本目录.doc
  8. kafka 集群的部署安装
  9. 中国喷墨卡片打印机行业市场供需与战略研究报告
  10. 自学python后自己接单-分享一下我的Python自学历程,分享下我自己学习方法
  11. CSS 实现盒子水平垂直居中
  12. 【数据结构】EOJ 1006. 线性链表的插入与删除
  13. python爬数据是什么意思-python爬虫爬取的数据可以做什么
  14. JavaScript - 自定义属性 -
  15. 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations'
  16. Surface Pro5 如何安装Win10系统
  17. ubuntu 12.04安装截图功能的软件 gimp
  18. IOS主题切换ThemeManager
  19. 如何将视频转化为gif
  20. 矿产资源规划管理信息化建设研究

热门文章

  1. js中内存泄漏的几种情况
  2. linux用户间文件互传,windows和linux间互传文件
  3. java公车系统_今天早上公交车上想到的系统的实现模式
  4. xlrd-操作excel 背景颜色-转载
  5. 凯撒密码中有数字怎么办_破解犯罪大师8.25突发事件中医生的密码(未解慎入)...
  6. C++开发工具 VTK技术实现三维重建CT医学影像PACS系统
  7. request.getParameter()方法
  8. day4-转自金角大王
  9. canvas简单的粒子效果的实现
  10. jQuery-select2 官方文档笔记(一)——基础应用