24
QQ 直直 (QQLive) 直直 Zhangqing zbf 2007/11

腾讯大讲堂14 qq直播(qq live) 介绍

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 腾讯大讲堂14 qq直播(qq live) 介绍

QQ 直播 (QQLive) 介绍

Zhangqing 、 zbf2007/11

Page 2: 腾讯大讲堂14 qq直播(qq live) 介绍

客户端介绍

Zhangqing2007/11

Page 3: 腾讯大讲堂14 qq直播(qq live) 介绍

P2PStreaming 的发展和技术要点主要特性和特点软件结构后续发展方向

Page 4: 腾讯大讲堂14 qq直播(qq live) 介绍

P2PStreaming 发展过程

WebCast

萌芽期(1998)

EMS

NICE->ZigZagOvercast

第一个里程碑(2000)

第二个里程碑(2002)

CoolStreamingSplitStream

第三个里程碑(2004)

P2P Live Streaming

Page 5: 腾讯大讲堂14 qq直播(qq live) 介绍

关键技术点

网络的构建及维护 决定系统的可扩展性、可维护性、稳定性、以及系统运转的效率。Buffer 管理

根据具体的应用来选取合适的Buffer 管理策略;例如直播与点播的 Buffer 管理策略不相同;伙伴节点的选择

决定系统运转的效率,伙伴节点过多,则造成系统维护开销过大;伙伴节点过少,则造成系统的稳定性差。伙伴节点的质量差则系

统 的服务质量难以满足Streaming 的需求;数据传输的优化调度;

决定流媒体数据传输的QoS。

Page 6: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLive 流媒体部分系统架构

与服务器B连接的Peer

与服务器A连接的Peer

SP

服务器群

服务器A

服务器B

SP1

SP2

源(发布者)

Proxy Server

...

...

...

图例

信息通道

数据通道

接入 Server

信息通道 Stun测试 Server

Page 7: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLive 主要特性和特点

基于 P2P(Peer To Peer) 的流媒体直播节省带宽 90% 以上稳定的提供流媒体直播…

和频道相关的聊天室节目导航

频道列表频道节目预告、实时截图、介绍等…

简单易用的 SDK个人信息播放控件最近观看一键点击播放

Page 8: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLive 客户端模块广告 UI

Skin

QQLive API

Web Other Components

QQLive Player Control Chat

一些基础程序,网络通讯/HTTP下载等

认证/收费P2PStreaming

导航

Page 9: 腾讯大讲堂14 qq直播(qq live) 介绍

P2P 流媒体播放部分

P2PSTREAMING LAYER(live.dll)P2P协议,P2P连接,P2P网络,P2P数据交换

P2PNETWOAK层略(其他开发组提供tntprox.dll)

LIVESTREAMING LAYER(livestream.dll)连接播放器和P2P 数据源把播放任务传给P2P层处理

把P2P 数据以STREAM的方式提供给PLAYER播放

OCX LYAER(qqliveocx.dll)集成PLAYER,实现一个能播放STREAMING的ACTIVX控件

(两个版本:精简版本,复杂版本)

MULTIPANE(multipane.dll)提供一个多PANE功能的ACTIVEX,其中一个PANE是

PLAYER OCX的容器

QQLIVE应用程序(QQLIVE.EXE)

QQLIVEX(qqlivex.dll)

IE P2P播放 WEB PAGE

函数调用 消息回调

COM EVENT回调

Page 10: 腾讯大讲堂14 qq直播(qq live) 介绍

P2P 数据交互概要

从 CLIENT 的视点来看,一个 QQLIVE CLIENT 和 SERVER交互两件事情:

登陆,注册网络状态信息;获取 SP , PEER 信息,播放的文件信息连接 SP 和其他 PEERS ,得到 STREAM DATA

然后就是 Client 通过 Server 筛选合适的种子与其交换数据

Page 11: 腾讯大讲堂14 qq直播(qq live) 介绍

未来的 QQLive – 网络流媒体播放软件

同时支持点播和直播支持不同的格式,对用户保持一致的体验允许用户自发布……

Page 12: 腾讯大讲堂14 qq直播(qq live) 介绍

一些正在探索加强的技术点

带宽限制 / 调度;减少延迟;提高流畅度;新的界面技术;整合点播 ;

丰富的格式支持;安全性和兼容性的增强;……

Page 13: 腾讯大讲堂14 qq直播(qq live) 介绍

服务端介绍

Zbf2007/11

Page 14: 腾讯大讲堂14 qq直播(qq live) 介绍

介绍

现有 P2Pstreaming 方案QQLive- 方案选择QQLive- 基本架构QQLive- 流程QQLive- 模块介绍

Page 15: 腾讯大讲堂14 qq直播(qq live) 介绍

P2P-Streaming- 主要方案1- 树形

采用 server 中心控制,客户端上报自己的网络状况和带宽信息, server 实现成员管理,并生成最优的转发树 .server 仅负责信令通讯 , 数据由各节点进行转发,并可扩展 .

优点:

1. 客户端逻辑实现比较简单,不需要考虑文件的分片,一个客户端仅对应一个源提供者 , 简单的收到数据然后转发 .

2. 结构稳定的时候,延时相对固定 , 数据波动性较小 . 比较流畅

缺点:

1. 没有考虑用户网络带宽的差异性

2. 用户的频繁上下线会导致转发树的不稳定,并对其他用户的收看效果影响较大

3. 就目前状况而言,实现工作量较大

4.当用户数量到万级的时候系统稳定性令人担忧

绿色为服务器 ,黄色为直播源 ,灰色为收看客户端

红线虚线为信令控制流 ,蓝色实现为数据流

箭头表示数据流的方向

Page 16: 腾讯大讲堂14 qq直播(qq live) 介绍

P2P-Streaming- 主要方案2- 网格型

同样采用服务器控制,服务器负责成员管理、播放时间同步,分配给用户正在参与的其他用户信息。客户端与其他用户进行通讯和数据交换。与树形最大不同是客户端之间的数据交换没有严格的顺序,是无序的,数据源的选择和数据的交换依靠客户端的算法来实现。

优点:

1.充分考虑用户间网络的差异性 , 部分网络状况较差的用户不会影响其他用户 .

2. 服务器实现逻辑简单 .

3. 用户的频繁上下线只会影响很少部分的用户

4. 用户数量的多少对系统稳定性影响不大

缺点:

1. 客户端实现逻辑比较复杂,需要考虑播放时间的同步以及获得数据的算法

2. 需要对流数据进行分片处理

3. 播放的延时和流畅性依赖于算法 , 并且波动会较大

绿色为服务器 ,黄色为直播源 ,灰色为收看客户端

红线虚线为信令控制流 ,蓝色实现为数据流

箭头表示数据流的方向

Page 17: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLive- 方案选择

目前主要的 P2PStreaming都采用了网格型方案,原因主要有:1.充分考虑用户间网络状况的差异性2. 考虑用户的频繁上下线3.当在线用户数量上万级时候系统的稳定性4. 考虑服务器实现逻辑的简单化5. 可以在目前已有的 p2p 下载的系统上进行改进,实现工作量较小

需要解决的问题:1. 数据源的选择和数据交换的策略2. 直播媒体流的分片处理和分片传输3. 播放器和编解码器4. 文件播放的延时和抖动的控制5.版权保护

Page 18: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLIVE 基本架构

与服务器B连接的Peer

与服务器A连接的Peer

SP

服务器群

服务器A

服务器B

SP1

SP2

源(发布者)

Proxy Server

...

...

...

图例

信息通道

数据通道

Page 19: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLIVE 流程

用户PC2P2p

Streaming 服务器

节目发布源

中央CDN服务器机群

请求发布CCTV5的节目(带上节目的相关描述信息,)

经过认证,同意发布

登陆服务器,说明我是cdn服务器

登陆成功

查询当前节目列表

返回当前节目列表

分别请求观看cctv5或其他在直播节目

返回节目源信息,记录此服务器信息

心跳维持

连接节目源

仅超级种子可以连接/成功

直播数据交互,心跳维持

查询其他正在观看的用户(定时进行)

返回其他正在观看的用户信息

连接普通用户1,并互相交互数据,维持心跳

用户PC1

连接普通用户1,并互相交互数据,维持心跳

定时查询当前节目列表

返回当前节目列表

发现新的节目源,重复连接数据源过程

登陆服务器

认证通过,登陆成功

请求观看cctv5节目,,服务器记录此用户相关信息

认证通过,返回源描述信息以及cdn服务器资源

连接cdn服务器并交互数据,维持心跳

心跳维持

定时不断查询正在观看此节目的其他用户

随机返回正在收看的用户信息

连接用户2并交换数据,维

持心跳

Page 20: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLIVE 服务模块介绍

Peer 服务模块用户登陆 PServer , PS 分配唯一的 UIN ,并将其加入到 UIN List当中用户请求下载指定节目,实际就是要求观看该节目, PS为其分配 SessionID ,并将其加入 Session List ,返回观看节目的配置参数、当前 SP 信息和当前源的播放时间。用户心跳时 Server返回源的最新播放时间。用户查询种子,根据 SessinID 在 Session List 中返回其他种子。用户停止观看节目,收回 SessionID ,并从 Session List 中删除。用户退出或者超时,收回 UIN ,并从 UIN List 中删除。

Page 21: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLIVE 服务模块介绍

SP 服务模块登录 proxy 服务,从 proxy 服务上同步 SP 节目信息发布源登录 SP ,发送流数据用户登录 SP ,获取初始流数据

Page 22: 腾讯大讲堂14 qq直播(qq live) 介绍

QQLIVE 服务模块介绍

Proxy 服务模块PS 登录 proxy ,获取节目、 SP 等信息SP 登录 proxy ,获取节目、发布源等信息定时同 PS 、 SP 等服务同步节目时间点等信息

Page 23: 腾讯大讲堂14 qq直播(qq live) 介绍

问题讨论流量节约?CDN 部署?突发流量接入?......

Page 24: 腾讯大讲堂14 qq直播(qq live) 介绍

谢谢!