一种对视频信息进行分段下载均衡的方法

文档序号:7992106阅读:159来源:国知局
专利名称:一种对视频信息进行分段下载均衡的方法
技术领域
本发明涉及网络通信领域,具体涉及一种对视频信息进行分段下载均衡的方法。
背景技术
近年来,随着计算机网络的普及,互联网视频业务得到了高速的发展。各个视频网站的后端服务器中都存储了海量的视频或音频信息,并推出相应的网络电视供应客户端在线观看信息内容。为了保证及时播放信息,需要充分利用网络带宽进行快速下载,以提高客户端在线观看的流畅性。传统的信息下载技术是单链接类型的,将要下载的信息在一个线程内与服务器建立一条TCP链接,利用所述TCP链接从头到尾遍历下载的信息对象,将其存入本地客户端。 其客户端主机网络输入/输出端口吞吐量和时间的关系如图1所示,其中,横向坐标轴代表下载的时间,纵向坐标轴代表主机网络输入/输出端口吞吐量。单链接类型下载的缺陷在于,由于操作系统内核的TCP缓冲区的存储容量有限, TCP滑动窗口会控制输入/输出流量,因此,虽然信息传输的过程较为稳定,但是网络输入/ 输出吞吐量远低于客户端输出口的网络带宽的大小,且如图1所示,无法继续提高,即当下载时间到tl时,吞吐量达到最大值max,然后吞吐量不在随着时间的增长继续线性增长,而是保持不变。以网络视频业务为例,由于客户端播放网络视频时需要高码率(码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是Icbps,即千位每秒),例如720p、1080p 的高清视频,传统的单链接下载容易导致视频无法保证播放的连续性。因此,需要对传统的单链接类型进行改进,将服务器端要下载的文件从逻辑上切分为若干段,客户端与服务端同时建立多条链接,每条链接分别对应不同的文件段下载,总计使用的带宽为每条链接占用的带宽的累加,
在实现文件分段下载时,首先想到的是多线程方式,即每个线程负责一个文件块的下载。在单个CPU的情况下,多线程的“并发”只是逻辑上的“并发”,而不是物理上的“并发”。 操作系统以轮换方式为每个线程分配时间片,并负责线程的调度。这些都是要耗费资源的。 而且多线程技术涉及到竞争、互斥等问题,若处理不当非常容易导致逻辑上的错误。

发明内容
本发明的目的是提供一种对视频信息进行分段下载均衡的方法,有效地占用主机带宽,而且必须同时满足保证视频流畅播放并且保证多链路负载相对均衡。现代的操作系统都在内核层级中提供了对I/O多路复用,即同一工作线程内多链路的支持。每条链路是独立的,都在做数据包的I/O处理,数据块在各自链路所属的用户空间缓冲区、内核空间缓冲区、网络协议栈发送缓冲区/接收缓冲区、网卡发送缓冲区/接收缓冲区之间来回拷贝。I/O多路复用在内核中基本都是以事件驱动、Reactor等技术实现, 并向应用层提供了简单的接口,如Iinux中的印oll、Select,windows中的IO完成端口等。因此从应用层编程的角度来说,单线程多链路是非常容易实现的,且简单易用,因为很多重要的工作都是由操作系统内核来处理。因此可以使用单线程多链路或多线程多链路的方式来替代多线程。所述方法包括
a)在客户端建立全局调度表,所述全局调度表包括已调度区和未调度区;
b)在所述客户端启动对服务器端视频信息的下载任务,获取所述服务器端视频信息的文件大小N’和视频码率,已经为文件分段大小指定一个最高的阈值U ;
c)在所述客户端建立M条与所述服务器端的链接,M为正整数,且大于等于2;
d)在所述客户端为每条链接分配对应的第一个下载任务,将所述第一个下载任务指定下载的文件大小记为firstlen,此时,所述已调度区为;
e)在所述客户端对每条链接上的数据进行下载,当第N(N大于等于1,且小于等于M) 条链接上的所述第一个下载任务下载完毕后,计算所述第N条链接上的带宽;
f)计算出在保证所述视频信息播放流畅的情况下,已经当前已经安排下载的视频信息全部播放完毕所需的时间T ;
g)根据所述时间T和所述第N条链接上的带宽,计算第N条链接上的第二个下载任务的文件大小secondLen,且所述secondLen的大小不能超过所述阈值U ;
此时,所述已调度区为;
h)重复步骤e)至步骤g),直到所述服务器端的视频信息全部下载完毕为止。优选的是,所述第N条链接上的带宽通过firstlen除以所述第N条链接下载所述第一个任务的时间获得。优选的是,所述已经当前已经安排下载的视频信息全部播放完毕所需的时间T通过当前播放点对于已调度区终点firstLen*M的距离除了视频码率获得。优选的是,所述当前播放点对于已调度区终点f irstLen*M的距离通过firstLen*M减去当前已经播放的视频信息大小获得。优选的是,所述第二个下载任务的文件大小secondLen通过所述时间T乘以所述第N条链接上的带宽获得。优选的是,所述最高的阈值U为视频文件码率大小的10倍。优选的是,所述第二个下载任务的文件大小secondLen的取值范围为大于等于所述时间T乘以所述第N条链接上的带宽,且小于等于所述最高的阈值U。与现有技术相比,本发明的优点在于在保证视频流畅播放的前提下,使得多链路负载相对均衡,因此,客户端得到了较好的服务体验。


为了使本发明便于理解,现在结合附图描述本发明的具体实施例。图1为客户端主机网络输入/输出端口吞吐量和时间的关系; 图2为链接数M和带宽的函数关系坐标图3为确定链接数M的算法流程图。
具体实施例方式下面结合附图和具体实施方式
对本发明作进一步详细描述。本发明的目的是设计一种文件分段下载调度均衡的方法,该方法的特点是在保证视频流畅播放的前提下,采用单线程多链路的方式,实现多链路负载相对均衡,充分有效地占用主机带宽。为了实现上述目的,本发明是通过如下技术方案来实现的
首先,为实现对文件分段的实时动态管理,引入全局调度表的概念。调度表分为已调度区和未调度区,分别用来记录已经安排下载的文件分段和未被安排下载的文件分段。客户端程序为每个已安排下载的文件分段分配一个下载任务(task),在任务中执行指定文件分段的下载。每个任务包含一个定时器变量,用来计算从任务开始时到任务结束时耗费的时间,以秒为单位。假设在一个下载任务中指定文件分段大小为Size (KB), 任务执行耗费的时间为%((秒),则可计算出该下载任务所处TCP链接上的当前带宽 Bandwidth
Bandwidth = Size / Sec (KB/秒)
每条链接上的带宽值在文件下载期间都是动态变化的,后续被安排下载的文件分段大小与链接的当前带宽值密切相关。本发明的一个优选实施例为,
步骤一,在未启动下载时,服务器端和客户端都不存在网络链接,不存在下载任务,此时,全局调度表为空。步骤二,启动对客户端选定的视频文件的下载时,客户端首先从服务器端获取到文件的大小和视频码率,这里,我们标记需要从服务器端下载的文件的大小为N比特,所述文件的视频码率为rate。步骤三,客户端同时建立M条与服务器端的TCP链接,这里M为至少大于或等于 3,在本发明的方法执行过程中,链接的数目一旦确定,就不会发生变化。这里以M = 3为示例。然后为每条已经建立的链接都分配一个下载任务,即每条链接上的第一个任务,第一个任务指定下载的文件分段大小是预先定义的固定值,标记为firstLen.
此时,全局调度表分为两个区域,分别是已调度区和未调度区,分为调度表的状态是 已调度区。步骤四,每条链接上的数据执行各自的下载任务,互不干扰,设定经过Sec秒之后,M条链接中的第N条(1 ^N^ M)链接上的任务率先执行完毕,则由此可以计算出第N 条链接中的
Bandwidth = firstLen / Sec
步骤五,假设当前视频播放流畅,无缓冲,播放点位置为pos (当前已经播放的文件大小为KB),则当前播放点距离已调度区终点的缓冲大小为dis 根据下述公式可以得出 dis = firstLen氺3-pos
因此,可以推导出,在保证客户端播放流畅的情况下,已安排下载的视频文件分块全部被播放完毕所剩时间T为 T = dis/rate
艮口,时间T过后,若本地没有后续视频数据块,播放将卡住。由此可算出为该链接上下一个下载任务指定的文件分段大小secondLen SecondLen = T氺Bandwidth。其中,SecondLen不是常数,为防止secondLen过大导致网络传输瞬间的抖动,为文件分段大小指定一个最高阈值,记为U,secondLen不可超过U。在客户端程序中,设定U 的取值为视频文件码率大小的10倍
U = 10*rate
因此,secondLen 的取值为secondLen = Min { T氺Bandwidth,U } 此时调度表的状态是所述已调度区为
;在所述客户端对每条链接上的数据进行下载,当第N (N大于等于1,且小于等于M)条链接上的所述第一个下载任务下载完毕后,计算所述第N条链接上的带宽;计算出在保证所述视频信息播放流畅的情况下,已经当前已经安排下载的视频信息全部播放完毕所需的时间T ;根据所述时间T和所述第N条链接上的带宽,计算第N条链接上的第二个下载任务的文件大小secondLen,且所述secondLen的大小不能超过所述阈值U ; 此时,所述已调度区为
;重复步骤e)至步骤g),直到所述服务器端的视频信息全部下载完毕为止。
2.一种如权利要求1所述的用于对视频信息进行分段下载均衡的方法,其特征在于 所述第N条链接上的带宽通过firstlen除以所述第N条链接下载所述第一个任务的时间获得。
3.—种如权利要求1所述的用于对视频信息进行分段下载均衡的方法,其特征在于, 所述已经当前已经安排下载的视频信息全部播放完毕所需的时间T通过当前播放点对于已调度区终点firStLen*M的距离除了视频码率获得。
4.一种如权利要求3所述的用于对视频信息进行分段下载均衡的方法,其特征在于, 所述当前播放点对于已调度区终点firStLen*M的距离通过firStLen*M减去当前已经播放的视频信息大小获得。
5.一种如权利要求1所述的用于对视频信息进行分段下载均衡的方法,其特征在于, 所述第二个下载任务的文件大小secondLen通过所述时间T乘以所述第N条链接上的带宽获得。
6.一种如权利要求1所述的用于对视频信息进行分段下载均衡的方法,其特征在于, 所述最高的阈值U为视频文件码率大小的10倍。
7.—种如权利要求1所述的用于对视频信息进行分段下载均衡的方法,其特征在于, 所述第二个下载任务的文件大小secondLen的取值范围为大于等于所述时间T乘以所述第 N条链接上的带宽,且小于等于所述最高的阈值U。
8.—种如权利要求1 一 7所述的用于对视频信息进行分段下载均衡的方法,其特征在于,所述链接数M与所述带宽成正态分布。
9.一种如权利要求1 一 8所述的用于对视频信息进行分段下载均衡的方法,其特征在于,所述链接数M取正态分布的μ值时,所述占用的带宽达到最高点。
10.一种如权利要求1 一 9所述的用于对视频信息进行分段下载均衡的方法,其特征在于,所述方法在单线程中实现。
全文摘要
本发明旨在提供一种用于对视频信息进行分段下载均衡的方法,所述方法不仅可以在单线程下实现,也可以在多线程下实现。在每个线程上,在客户端建立下载视频信息之前,根据设定的链接数量,在每段链接上建立一条下载任务,并根据最先完成下载任务的链接上的实际情况,实时的决定下一个下载任务,在保证客户端能够流程播放的前提下,实现多条链接上的网络负载相对均衡,以达到最大程度的利用网络带宽的目的。
文档编号H04N21/63GK102368833SQ20111038674
公开日2012年3月7日 申请日期2011年11月29日 优先权日2011年11月29日
发明者李茗, 邵长松 申请人:乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1