发明内容
本发明实施例提供一种文件下载方法和播放设备,能够有效提升播放器播放媒体文件时的流畅度。
一方面,提供一种文件下载方法,包括:
播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数,N为大于或等于1的正整数;播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;播放设备根据下一个数据块的大小从服务器下载下一个数据块。
由此,可以在播放设备下载数据块之前,根据网络环境变化,动态地调整待下载的数据块的大小,以提升播放器的播放流畅度。
在一种可能的设计中,在播放设备并行从服务器下载文件的N个数据块之前,方法还包括:在下载N个数据块之前,播放设备与服务器建立与N个数据块分别对应的传输控制协议传输控制协议(Transmission Control Protocol,TCP)连接;播放设备与服务器建立与N个数据块分别对应的超文本传送协议(Hypertext Transfer Protocol,HTTP)连接;其中,网络参数包括下载至少一个数据块时的平均速度,播放设备建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,以及播放设备建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延。
由此,由于每个数据块下载之前,播放设备都会和服务器建立TCP连接和HTTP连接,因此在播放设备与服务器建立TCP连接和HTTP连接的过程中可以获取到信令交互的往返时延,并在数据块下载时获取到下载时的平均速度,以根据信令交互的往返时延和数据块下载时的平均速度表征当前的网络环境。
在一种可能的设计中,根据网络参数获取下一个数据块的大小包括:播放设备根据公式获取下一个数据块的大小,公式包括:BlockSize=(T*1000-D1-D2)*S/(8*1000),其中,BlockSize表示下一个数据块的大小,T表示预先设定的N个数据块中的每个数据块的下载时间,D1表示建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,D2表示建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延,S表示下载至少一个数据块时的平均速度。
由此,在播放器使用并发多连接下载数据块时,数据块不能过大或过小,在预定各种网络环境中数据块下载时间保持在T秒或T秒左右的情况下,根据当前的网络参数与预设的下载时间T可以获取下一个将要下载的数据块的大小,以使得下一个将要下载的数据块的下载时间尽量稳定在T秒左右,以提升播放器的播放流畅度。
在一种可能的设计中,至少一个数据块为下载下一个数据块之前,N个数据块中最近一次下载完成的数据块,记为第一数据块;下载至少一个数据块时的平均速度为下载第一数据块时的平均速度;建立至少一个数据块对应的TCP连接时信令交互的平均往返时延为建立第一数据块对应的TCP连接时信令交互的往返时延;建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延为建立第一数据块对应的HTTP连接时信令交互的往返时延。
由此,当下载所述下一个数据块之前,N个数据块中最近一次下载完成的数据块即第一数据块下载完成时,可以获取到该第一数据块所在的单个连接下载数据块时的平均速度,和该第一数据块下载前的TCP连接的信令往返时间和HTTP连接的信令往返时延,以根据该第一数据块对应的网络参数表征的网络环境获取将要下载的下一数据块的数据块大小。
在一种可能的设计中,根据网络参数获取下一个数据块的大小包括:播放设备根据预设的网络参数与数据块大小的对应关系获取与网络参数对应的数据块大小为下一个数据块的大小。
由此,可以将网络参数与数据块大小的对应关系建立对应关系表,通过查表直接获取当前网络环境下的网络参数对应的数据块大小,使得并行下载的数据块的大小自适应于当前的网络环境。
另一方面,提供一种播放设备,包括:
获取单元,用于在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数;获取单元,还用于在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;下载单元,用于根据下一个数据块的大小从服务器下载下一个数据块。
在一种可能的设计中,还包括:建立单元,用于在下载N个数据块之前,与服务器建立与N个数据块分别对应的传输控制协议TCP连接;建立单元,还用于与服务器建立与N个数据块分别对应的超文本传送协议HTTP连接;其中,网络参数包括下载至少一个数据块时的平均速度,播放设备建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,以及播放设备建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延。
在一种可能的设计中,获取单元用于:根据公式获取下一个数据块的大小,公式包括:BlockSize=(T*1000-D1-D2)*S/(8*1000),其中,BlockSize表示下一个数据块的大小,T表示预先设定的N个数据块中的每个数据块的下载时间,D1表示建立至少一个数据块对应的TCP连接信令交互的平均往返时延,D2表示建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延,S表示下载至少一个数据块时的平均速度。
在一种可能的设计中,至少一个数据块为下载下一个数据块之前,N个数据块中最近一次下载完成的第一数据块;下载至少一个数据块时的平均速度为下载第一数据块时的平均速度;建立至少一个数据块对应的TCP连接时信令交互的平均往返时延为建立第一数据块对应的TCP连接时信令交互的往返时延;建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延为建立第一数据块对应的HTTP连接时信令交互的往返时延。
在一种可能的设计中,获取单元用于:根据预设的网络参数与数据块大小的对应关系获取与网络参数对应的数据块大小为下一个数据块的大小。
本发明实施例提供一种文件下载方法和播放设备,播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数;播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;播放设备根据下一个数据块的大小从服务器下载下一个数据块,这样,可以在播放设备下载数据块之前,根据网络环境变化,动态地调整待下载的数据块的大小,以有效提升播放器播放媒体文件时的流畅度。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2所示的多连接并发下载的网络结构示意图,播放设备可以与媒体服务器并行建立N个连接,用于并发下载数据块。具体在播放设备的播放器中可以相应地建立N个线程,每个线程与媒体服务器建立一个独立的连接,向媒体服务器请求对应的数据块。如图2中播放器建立有N个线程:线程1、线程2、线程3,…,线程N,每个线程对应一个连接:线程1对应连接1,线程2对应连接2,线程3对应连接3,…,线程N对应连接N。
针对现有技术中默认的每个连接下载的数据块的大小可能会导致播放不流畅的问题,本发明实施例提供一种文件下载方法,如图3所示,包括:
301、播放设备与服务器建立N个连接。
播放设备可以为个人计算机(Personal Computer,PC)、pad和手机等终端,服务器可以为媒体服务器,用于实现播放设备的各种业务所需的媒体资源功能。例如,播放设备中安装有用于播放音视频的播放器,可以从服务器端请求下载音视频文件后播放。
播放设备在需要并行从服务器下载数据块之前,可以先创建N个线程,通过该N个线程与服务器建立N个连接。具体地,播放设备在创建N个线程后,可以通过该N个线程与服务器建立N个TCP连接,具体通过播放设备与服务器通过TCP协议进行“三次握手”的信令交互完成TCP连接,而后,播放设备与服务器通过HTTP协议建立N个HTTP连接,HTTP协议是建立在TCP协议之上的一种应用,即在每个线程建立TCP连接后,并建立相应的HTTP连接,而后,播放设备通过该N个连接便可以从服务器下载N个连接相应的数据块了。其中,播放设备在从与服务器下载每个数据块之前,都需要与服务器建立相应的HTTP连接,即播放设备下载每个数据块时都会建立一次单独的HTTP连接,在处理完本次请求即下载本次数据块完成后,就自动释放该HTTP连接,而数据块下载之前的TCP连接可以在初次建立时只建立一次,也可以在下载每个数据块之前都建立一次TCP连接。
302、播放设备根据当前默认的参数确定每个连接待下载的数据块大小。
播放设备中可以预设有每个连接下载数据块时的数据块大小,例如预设每个数据块大小设为10M,播放设备在与服务器建立N个连接后,可以根据预设的数据块大小从服务器并行下载N个数据块;或者播放设备通过HTTP请求从服务器获取待下载的文件大小,并根据文件大小划分每个连接待下载的数据块大小,例如播放设备获取到待下载的文件大小为100M,当播放设备与服务器建立3个连接时,播放设备可以划分前3个数据块的大小分别为10M,并确定每个数据块的起始字节和结束字节,例如第1个连接用于下载文件的第0~10M的字节,第2个连接用于下载文件的第10M~20M的字节,第3个连接用于下载文件的第20M~30M的字节,前3个数据块下载了文件的0~(10M+10M+10M-1)内的字节。
303、播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数,N为大于或等于1的正整数。
该网络参数可以包括播放设备下载至少一个数据块时的平均速度,播放设备建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,以及播放设备建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延。例如,N为5时,播放设备可以并行下载5个数据块,播放设备可以记录下载该5个数据块时的平均速度,建立5个TCP连接时信令交互的平均往返时延,以及建立5个HTTP连接时信令交互的平均往返时延,或者,播放设备记录其中3个数据块下载时的平均速度,建立该3个TCP连接时信令交互的平均往返时延,以及建立3个HTTP连接时信令交互的平均往返时延。
示例性的,当播放设备记录了5个数据块中的3个数据块的网络参数时,假设3个数据块大小分别为10M,该3个数据块下载时的平均速度可以为在预设时间段内每个数据块已下载的数据大小与预设时间的比值的平均值,单位为bps。例如记录的3个数据块中的第1个数据块在2s内下载了2M,第2个数据块在2s内下载了3M,第3个数据块在2s内下载了4M,那么这3个数据块下载的平均速度可以为(2/2+3/2+4/2)/3=1.5,即1.5Mbps;建立该3个TCP连接时信令交互的平均往返时延,可以是建立3个TCP连接信令交互的时延的平均值,单位为ms,每个TCP连接信令交互包括播放设备与服务器之间进行“三次握手”的信令交互;建立该3个HTTP连接时信令交互的平均往返时延,可以是3个HTTP连接信令交互的时延的平均值,单位为ms,每个HTTP连接信令交互包括播放设备发送HTTP请求与接收到服务器端的响应的信令交互。
可选的,也可以仅获取N个连接中单个连接的网络参数,例如上述至少一个数据块为下载下一个数据块之前,N个数据块中最近一次下载完成的第一数据块;上述下载至少一个数据块时的平均速度为下载第一数据块时的平均速度;上述建立至少一个数据块对应的TCP连接时信令交互的平均往返时延为建立第一数据块对应的TCP连接时信令交互的往返时延;上述建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延为建立第一数据块对应的HTTP连接时信令交互的往返时延。
其中,平均速度为第一数据块的大小与下载的第一数据块的时间的比值,或平均速度为第一数据块在预设时间段内已下载的数据块大小与预设时间段的比值。
304、播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小。
当N个数据块中的任一数据块下载完成时,该任一数据块所对应的线程处于空闲状态,这时就可以根据该线程对应的连接从服务器继续获取下一个数据块,例如图4为本发明提供的一种数据块下载的示意图,N为5,播放设备并行下载文件的前5个数据块时,若5个连接中的第2个连接对应的数据块下载完成时,播放设备可以在第2个连接中继续下载第N+1个即第6个数据块。这里的任一数据块指下载第N+1个数据块之前,N个数据块中最近一次下载完成的数据块。但是,在开始下载N个数据块之后的下一个数据块之前,需要先根据网络参数获取下一个数据块的大小,即第6个数据块的大小是根据前5个数据块中的至少一个数据块的网络参数反映出的当前的网络状况确定的。
具体地,在播放设备使用并发多连接下载数据块时,数据块不能过大或过小,每个数据块的下载时间不能太长,假设预期在各种网络环境中使得数据块下载的时间保持在Ts左右时,可以从一定程度上缓解播放设备划分的数据块过大或过小的问题,假设播放设备使用HTTP协议下载数据块,播放设备可以根据公式获取下一个数据块的大小,该公式包括:
BlockSize=(T*1000-D1-D2)*S/(8*1000),其中,BlockSize表示下一个数据块的大小,T表示预先设定的N个数据块中的每个数据块的下载时间,D1表示建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,D2表示建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延,S表示下载至少一个数据块时的平均速度。
该公式的推导如下:
当预期的数据块下载的时间为Ts时,换算为ms即为T*1000,即数据块下载的总时间为(T*1000)ms,将下一个数据块的大小表示为
BlockSize,单位为字节时,则换算为比特为(BlockSize*8)bps,再除以网络参数中数据块下载的平均速度,即BlockSize*8/S,可得到下一个数据块下载过程中的时间,而后再换算为ms即为BlockSize*8*1000/S,数据块下载过程中的时间加上建立TCP连接信令交互的平均往返时延和建立HTTP连接时信令交互的平均往返时延,即BlockSize*8*1000/S+D1+D2为数据块下载的总时间(T*1000),即BlockSize*8*1000/S+D1+D2=
T*1000,因此可得到下一个数据块大小BlockSize=(T*1000-D1-D2)*S/(8*1000)。
可选的,也可以将网络参数与数据块大小的对应关系根据实验数据建立对应关系表,当获取到网络参数时,可通过查表获取下一个数据块的大小,本发明不做限定。
305、播放设备根据下一个数据块的大小从服务器下载下一个数据块。
当播放设备根据获取到的网络参数确定了下一个数据块的大小时,便可以根据已下载完成的数据块所在的线程与服务器建立TCP连接和HTTP连接,从而下载得到取下一个数据块。
从上述公式可以看出,在带宽高的用户中,由于其建立TCP连接和HTTP连接的时延会相对小,单个连接的下载速度会相对高,因此,获取到的数据块大小会相对大;在带宽低的用户中,其建立TCP连接和HTTP连接的时延会相对大,单个连接的下载速度会相对低,因此,获取到的数据块大小会相对小。即时在同一用户中如果出现网络波动,数据块大小也会随网络环境进行调整,但是数据块的下载时间将会始终稳定在Ts左右,这样,可使得数据块大小随网络环境进行调整使得播放流畅。
因此,本发明实施例提供一种文件下载方法,播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数;播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;播放设备根据下一个数据块的大小从服务器下载下一个数据块,这样,可以在播放设备下载数据块之前,根据网络环境变化,动态地调整待下载的数据块的大小,以有效提升播放器播放媒体文件时的流畅度。
本发明实施例还提供一种播放设备5,如图5所示,包括:
获取单元501,用于在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数,N为大于或等于1的正整数;
获取单元501,还用于在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;
下载单元502,用于根据下一个数据块的大小从服务器下载下一个数据块。
可选的,还包括:
建立单元503,用于在下载N个数据块之前,与服务器建立与N个数据块分别对应的传输控制协议TCP连接;
建立单元503,还用于与服务器建立与N个数据块分别对应的超文本传送协议HTTP连接;
其中,网络参数包括下载至少一个数据块时的平均速度,播放设备建立至少一个数据块对应的TCP连接时信令交互的平均往返时延,以及播放设备建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延。
可选的,获取单元501用于:
根据公式获取下一个数据块的大小,公式包括:
BlockSize=(T*1000-D1-D2)*S/(8*1000)
其中,BlockSize表示下一个数据块的大小,T表示预先设定的N个数据块中的每个数据块的下载时间,D1表示建立至少一个数据块对应的TCP连接信令交互的平均往返时延,D2表示建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延,S表示下载至少一个数据块时的平均速度。
可选的,至少一个数据块为下载下一个数据块之前,N个数据块中最近一次下载完成的第一数据块;
下载至少一个数据块时的平均速度为下载第一数据块时的平均速度;
建立至少一个数据块对应的TCP连接时信令交互的平均往返时延为建立第一数据块对应的TCP连接时信令交互的往返时延;
建立至少一个数据块对应的HTTP连接时信令交互的平均往返时延为建立第一数据块对应的HTTP连接时信令交互的往返时延。
可选的,获取单元501用于:根据预设的网络参数与数据块大小的对应关系获取与网络参数对应的数据块大小为下一个数据块的大小。
本发明实施例提供一种播放设备,播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数;播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;播放设备根据下一个数据块的大小从服务器下载下一个数据块,这样,可以在播放设备下载数据块之前,根据网络环境变化,动态地调整待下载的数据块的大小,以有效提升播放器播放媒体文件时的流畅度。
如6为本发明实施例提供的一种播放设备6的结构示意图,包括:存储器161、处理器162、接收器163以及发射器164。处理器162用于对播放设备的动作进行控制管理。例如,处理器162用于支持播放设备执行图3中的过程301~305,和/或用于本发明实施例中所描述的技术的其它过程。存储器161用于存储播放设备的程序代码和数据。网络接口用于支持播放设备与其它网络实体的通信,包括接收器163和发射器164。例如,网络接口用于支持播放设备与服务器进行通信。
具体地,处理器162执行本发明实施例可用于在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数,N为大于或等于1的正整数;处理器162执行本发明实施例可用于在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;接收器163执行本发明实施例可用于根据下一个数据块的大小从服务器下载下一个数据块。
处理器162相当于图5所示的实施例中的获取单元501,其具体实现方式可参见处理单元501,接收器163相当于图5所示的实施例中的下载单元502,其具体实现方式可参见下载单元502。
本发明实施例提供一种播放设备,播放设备在并行从服务器下载文件的N个数据块时,获取N个数据块中的至少一个数据块在当前网络环境中下载时的网络参数;播放设备在N个数据块中任一数据块下载完成,并在开始下载N个数据块之后的下一个数据块之前,根据网络参数获取下一个数据块的大小;播放设备根据下一个数据块的大小从服务器下载下一个数据块,这样,可以在播放设备下载数据块之前,根据网络环境变化,动态地调整待下载的数据块的大小,以有效提升播放器播放媒体文件时的流畅度。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。