流媒体内容通过p2p技术在网络上传输已经被业界广泛的应用到网络视频,电视,会议等各个领域。这一技术充分利用的播放网络中的空闲带宽,提高了视频播放的速度和码率。ppstream,pplive,lync等视频流媒体软件和会议软件都采用了p2p技术来加速。然而这些p2p技术的应用场景一般都是在大陆内主干网上进行数据传输,跨海的,通过海底光纤的网络环境中进行p2p传输还比较少见。
存在的问题:
网络的问题:TTL比较大;丢包率高;
对用户的影响:码率不够高;播放速度不够快,反应有延迟,
本文介绍一个p2plive的框架。该框架包括以下几部分:(1)源提供服务器,(2)边缘服务器,(3)索引服务器,(4)peer用户
(1) 源提供服务器的架构
(2) 边缘服务器架构
edge 通过通道向 本地dispatch 发送消息
0. 连接到前端服务器
1. 注册要直播的频道
2. 向所有的 连接发送 incBUfferMap
3. 向源和所有的边缘发送 心跳
4. 向dispatcher发送自己的状态信息
5. 检查是否connMgr建立新的连接
6. 检查connMgr是否建立peerlist
Dispatch 服务器重要是控制 provider, edge,和接收用户的注册,并且处理HTTP请求;判断接收到的数据类型做相应的处理;
provider接收数据 rtsp, http+ts, udp+ts 流数据; 处理不同层次的问题。
(3) 索引服务器
索引服务索引了所有的频道信息,源服务器,边缘服务器,peer节点的信息,并对这些信息汇总管理和,对所有的进行更新;
(4) peer客户端及其播放机构
前端连接rtsp 流播放器,有可能是p2p模式的,后端连接http流播放器。
buffermap的接收也是通过 peer客户端来管理的;这里接收的速度要和播放的速度相匹配,接收的速度不能快于播放的速度,也不能慢于播放的速度。否则会造成播放的体验不好。如果接收的速度过慢,客户端会强制刷新接收缓存区。