WebRTC 学习笔记(2)--libjingle 部分 (P2P传输)

​说明:此系类的内容都是本人自己对libjingle native API代码的学习总结。​其中可能存在不准确甚至是错误的内容。欢迎大家帮忙指出错误。

此文是个人根据WebRTC项目中的libjingle部分总结出来。
​只代表WebRTC中的libjingle部分的结构,不代表原始的libjingle项目。


1, libjingle 基本结构。

下图仅描述视频部分的传输,音频部分有所不同,但是基本结构类似。
​图中虚线表示媒体数据流向

VideoCapture:          视频捕捉功能抽象, 通过SignalVideoFrame信号传输捕捉的Frame数据。

MediaChannel:         媒体相关功能的抽象,接收capture/network的数据,处理后发送给其他模块。实际的处理工作需要有继承类调用其他模块实现。

TransprotChannel:   提供抽象的P2P传输功能。实现ICE协议,ICE协商后,会选择最好的方法发送。对外只暴露发送和接收的接口。

Port:                         具体的传输模块。派生出各种端口类型,如UDP/Stun/TCP/Turn等。 具体的端口根据相应的协议发送数据。

Candidate:               对本端网络通信能力的一种描述。
​                                对于UDP/Stun协议,candidate仅包含IP及端口信息,
​                                对于trun,包含turn server的IP,端口,以及用户名密码等。
​                                candidate由本端代码生成。生成后通过信令发送给对端。
​                                对端会在本端所有的candidate中选择一个最好的建立与本端的连接。

BaseChannel:         管理MeidaChannel和TransportChannel并维护本端和对端的媒体描述信息(description)



​2, ICE 相关

本端会生成所有网络接口对应不同协议的candidate。 每一个candidate实际上描述了和自己的通信方式。
​比如一个Stun类型的candidate会包含本端在防火墙外的IP和端口类型。
​本端会通过信令协议(sip/xmpp/http)将自己的所有的candidate发送给对端。
​对端接收到后,会尝试连接, 并找到一个最好的连接方式建立和本端的连接。
​之后的数据将通过此连接传输。


3, 启动过程以及对象的建立



4, 主要对象关系Media部分



5, 主要对象关系P2P部分



原文地址:http://blog.csdn.net/oupeng1991/article/details/28613597

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值