一种基于播放缓存大小分片下载的方法及系统与流程

文档序号:17773565发布日期:2019-05-28 19:44阅读:270来源:国知局
一种基于播放缓存大小分片下载的方法及系统与流程

本发明涉及互联网视频点播技术,具体涉及一种基于播放缓存大小分片下载的方法及系统。



背景技术:

目前,互联网视频点播基本上为http点播请求,格式主要有mp4和hls两种。常规的点播请求,通过http/https的get请求的方式,向边缘节点或cdn厂商的边缘节点请求数据,在一次http点播过程中,数据源只有一个,发生网络故障或播放异常时,只能通过重试或手动切换到其他节点才能解决,影响了观看体验,直接影响到视频平台用户黏度。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于播放缓存大小分片下载的方法及系统。本发明能够有效降低错误、降低播放卡顿机会、减少带宽费用,从而提升互联网视频点播的观看体验,提升视频平台的用户黏度。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于播放缓存大小分片下载的方法,实施步骤包括:基于分片下载播放视频所需的视频数据,在下载每一个当前分片所需的视频数据时定时检测播放缓存的可播放时长,如果播放缓存的可播放时长小于第一阈值,则选择下载速率更高的可用下载源作为下一个分片的下载源;如果播放缓存的可播放时长大于第二阈值,则选择带宽价格更低的可用下载源作为下一个分片的下载源,所述第二阈值比第一阈值大。

可选地,所述切换下一个分片的下载源还包括:如果播放缓存的可播放时长大于第三阈值且小于第二阈值,则根据优先策略来决定是否选择带宽价格更低的可用下载源作为下一个分片的下载源,如果优先策略为价格优先则选择带宽价格更低的可用下载源作为下一个分片的下载源。

可选地,所述播放缓存的可播放时长大于第二阈值时,还包括选择对至少一个不可用下载源进行离线探测的步骤,如果探测到该下载源恢复,则将该不可用下载源修改为可用下载源。

可选地,所述进行离线探测的步骤中,如果探测到该下载源仍未恢复,则将该不可用下载源修改为彻底废弃、后续不再进行离线探测。

可选地,所述选择下载速率更高的可用下载源具体是指从在线队列中选择下载速率更高的可用下载源,所述在线队列中存储有所有的可用下载源、且根据各个下载源的下载速率进行排序;所述选择带宽价格更低的可用下载源具体是指从价格队列中选择带宽价格更低的可用下载源,所述价格队列中存储有所有的可用下载源、且根据各个下载源的带宽价格进行排序;所述选择对至少一个不可用下载源进行离线探测具体是指从离线队列中选择对至少一个不可用下载源进行离线探测,所述离线队列从存储有所有的不可用下载源。

可选地,所述在线队列为在向点播调度服务器发出点播请求后根据点播调度服务器返回的所有下载源中的可用下载源及其下载速率排序生成,且下载每一个当前分片所需的视频数据完毕后根据完成下载的下载源的状态和下载速度更新其在在线队列中的顺序;所述价格队列为基于在线队列的下载源增加或者减少时完成更新;所述下载每一个当前分片所需的视频数据时如果遇到下载源失效则将失效的下载源从在线队列、价格队列中删除并加入离线队列。

可选地,所述下载每一个当前分片所需的视频数据时下一个分片的下载源默认为保持与当前分片的下载源相同。

可选地,所述基于分片下载播放视频所需的视频数据的详细步骤包括:

1)播放器向点播调度服务器发送播放请求,接收返回的播放地址、所有下载源、下载源的价格权重和视频码率;

2)播放器向点播调度服务器请求优先策略,确定优先策略是否为价格优先;

3)根据返回的所有下载源,以及点播调度服务器返回的、或者本地探测得到的、或者本地记录的各个下载源的下载速率和在线状态,将在线的下载源按照下载速率排序生成在线队列、按照下载源的价格权重排序生成价格队列,将离线的下载源放入离线队列;

4)根据视频码率设置分片大小或者设置默认的分片大小;

5)建立用于存储分片请求的分片请求队列;

6)根据返回的播放地址请求第一个分片,且分片请求采用httprange请求以获取目标视频文件大小的信息;

7)创建第一个分片的分片请求并将其加入到分片请求队列中;

8)根据第一个分片返回的信息获取目标视频文件大小,将目标视频文件大小除以分片大小再向上取整得到分片总数量,第一个分片作为当前分片;

9)下载当前分片所需的视频数据,如果当前分片的下载源失效则选择从在线队列或者价格队列中选择其他可用下载源并切换到新的可用下载源;

播放器基于当前分片返回的视频数据开始播放,定时检测播放缓存的可播放时长以指定下一个分片的下载源,默认当前分片的可用下载源作为下一个分片的下载源;

判断分片请求队列中是否存在下一个分片的分片请求,如果存在下一个分片的分片请求,则为下一个分片的下载源设置指定的下载源;如果不存在下一个分片的分片请求,则判定已创建的分片数量是否等于分片总数量,如果不等于分片总数量则在分片请求队列中创建新的下一个分片的分片请求并为下一个分片的下载源设置指定的下载源;如果当前分片所需的视频数据下载完成,则跳转执行步骤10);否则继续跳转执行步骤9);

10)根据本次完成下载的下载速率更新对应下载源位于在线队列中的位置;

11)判断是否所有的分片均已完成下载,如果尚未完成下载,则在分片请求队列中选择下一个分片作为新的当前分片,跳转执行步骤9);否则,结束并退出。

本发明还提供一种基于播放缓存大小分片下载的系统,包括计算机设备,所述计算机设备被编程以执行本发明前述基于播放缓存大小分片下载的方法的步骤;或者所述计算机设备的存储介质上存储有被编程以执行本发明前述基于播放缓存大小分片下载的方法的计算机程序。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有被编程以执行本发明前述基于播放缓存大小分片下载的方法的计算机程序。

和现有技术相比,本发明具有下述优点:本发明通过在播放端基于分片下载播放视频所需的视频数据,在现有视频平台框架下基于分片下载播放视频所需的视频数据,从而在播放端将http点播请求转换为分片请求、可以向多个源或节点请求数据,当源或分发节点失效时可将分片请求切换到正常的节点请求数据可有效降低错误率,在下载每一个当前分片所需的视频数据时定时切换下一个分片的下载源,当播放数据缓存过小时,自动选择下载速率更高的节点请求数据,降低了卡顿;当播放数据缓存充足时,可以向宽带更加廉价的节点请求数据,总体降低了带宽费用。因此,本发明能够有效降低错误、降低播放卡顿机会、减少带宽费用,从而提升互联网视频点播的观看体验,提升视频平台的用户黏度。

附图说明

图1为本发明实施例方法的基本流程示意图。

图2为本发明实施例方法的详细流程示意图。

具体实施方式

如图1所示,本实施例基于播放缓存大小分片下载的方法的实施步骤包括:基于分片下载播放视频所需的视频数据,在下载每一个当前分片所需的视频数据时定时检测播放缓存的可播放时长,如果播放缓存的可播放时长小于第一阈值,则选择下载速率更高的可用下载源作为下一个分片的下载源;如果播放缓存的可播放时长大于第二阈值,则选择带宽价格更低的可用下载源作为下一个分片的下载源,第二阈值比第一阈值大。其中,第一阈值为卡顿的临界值,低于第一阈值则可能会播放发生卡顿,第一阈值用于在当播放数据缓存过小时,自动选择下载速率更高的节点请求数据,降低了卡顿;第二阈值为更大的一个值,第二阈值由于时间相对较长,因此一般而言通过阈值的设置使其与卡顿关系不大,而是与降低带宽的成本关系更大,如果当前的播放缓存大于第二阈值,则可以具有更大的自由度来选择价格满足预设条件的可用下载源来降低带宽的成本。本实施例中,第一阈值为2秒,第二阈值为10秒,毫无疑问本领域技术人员可根据需要设定其他值。本实施例中定时检测播放缓存的可播放时长是指每隔1秒检测播放缓存的可播放时长,此外也可以根据需要设置其他的检测周期。播放缓存的可播放时长可以根据视频帧的时间戳得到,将当前播放的视频帧后最末视频帧的时间戳减去当前播放的视频帧的时间戳,即可得到播放缓存的可播放时长。

毫无疑问,选择下载速率更高的可用下载源时,根据当前分片下载源的下载速率可以确定比当前分片下载源的下载速率更高的所有可用下载源作为第一待选列表,第一待选列表中所有下载源的下载速率比当前分片下载源的下载速率更高,在此基础上可以根据需要在待选列表中选择下载速率最高、或下载速率次高、或下载速率最低、或下载速率超过预设阈值、或随机的可用下载源。

毫无疑问,选择带宽价格更低的可用下载源时,根据当前分片下载源的带宽价格可以确定比当前分片下载源的带宽价格更低的所有可用下载源作为第二待选列表,第二待选列表中所有下载源的下载速率比当前分片下载源的带宽价格更低,在此基础上可以根据需要在其中选择带宽价格最低、或带宽价格次低、或带宽价格最高、或带宽价格低于预设阈值、或随机的可用下载源。在采用上述方式选择比当前分片下载源的带宽价格更低的所有可用下载源时,既可以不考虑下载速率,这样对于价格的控制效果更明显;此外,也可以根据需要基于下载速率进行选择,例如要求下载源的下载速率不低于当前分片下载源的下载速率、或要求下载源的下载速率和当前分片下载源的下载速率的差值小于预设阈值等,通过上述方式,可以在控制价格的同时还或多或少地考虑下载速率的影响,从而实现控制价格和播放体验的均衡。

本实施例中,切换下一个分片的下载源还包括:如果播放缓存的可播放时长大于第三阈值且小于第二阈值,则根据优先策略来决定是否选择带宽价格更低的可用下载源作为下一个分片的下载源,如果优先策略为价格优先则选择带宽价格更低的可用下载源作为下一个分片的下载源。第三阈值为处于第二阈值、第二阈值之间的一个值,第三阈值相对第二阈值而言对于降低带宽的成本更加敏感,但是其可能会影响流畅度,因此需要根据优先策略来决定是否启用选择带宽价格更低的可用下载源作为下一个分片的下载源。本实施例中,第三阈值为5秒,毫无疑问本领域技术人员可根据需要设定其他值。

本实施例中,播放缓存的可播放时长大于第二阈值时,还包括选择对至少一个不可用下载源进行离线探测的步骤,如果探测到该下载源恢复,则将该不可用下载源修改为可用下载源。由于第二阈值的时间较长(例如本实施例中为10秒),因此可以利用该时间来进行离线探测,从而检测是否有不可用下载源已经恢复为可用状态,提高可用下载源的更新效率。本实施例中具体为选择一个不可用下载源进行离线探测的步骤以减少时间消耗、节约资源,毫无疑问,离线探测的不可用下载源越多,则时间和资源消耗就越大。

本实施例进行离线探测的步骤中,如果探测到该下载源仍未恢复,则将该不可用下载源修改为彻底废弃、后续不再进行离线探测,也就是说如果一个不可用下载源如果连续两次探测到不可用,则后续不再进行离线探测,以节约资源;但是上述方式仅仅为一种优选方式,毫无疑问,可以根据需要设置不可用下载源的探测次数超过指定的阈值后才进行彻底废弃,或者在下载源活动比较频繁的情况下也可以根据需要设置从不彻底废弃、而采用每次进行离线探测,这些方式都或多或少会造成播放器或者下载源的带宽以及cpu资源占用。

本实施例中,选择下载速率更高的可用下载源具体是指从在线队列中选择下载速率更高的可用下载源,在线队列中存储有所有的可用下载源、且根据各个下载源的下载速率进行排序;选择带宽价格更低的可用下载源具体是指从价格队列中选择带宽价格更低的可用下载源,价格队列中存储有所有的可用下载源、且根据各个下载源的带宽价格进行排序;选择对至少一个不可用下载源进行离线探测具体是指从离线队列中选择对至少一个不可用下载源进行离线探测,离线队列从存储有所有的不可用下载源。通过上述在线队列、离线队列、价格队列,能够使得选择下载速率更高的可用下载源以及选择带宽价格更低的可用下载源时不需要临时检测,使得设置效率更高。

需要说明的是,在线队列、离线队列、价格队列可以根据需要由结点状态管理器定时维护。本实施例中,为了提升在线队列、离线队列、价格队列三者的维护效率,采用事件触发的方式来更新在线队列、离线队列、价格队列,具体为:在线队列为在向点播调度服务器发出点播请求后根据点播调度服务器返回的所有下载源中的可用下载源及其下载速率排序生成,且下载每一个当前分片所需的视频数据完毕后根据完成下载的下载源的状态和下载速度更新其在在线队列中的顺序;价格队列为基于在线队列的下载源增加或者减少时完成更新;下载每一个当前分片所需的视频数据时如果遇到下载源失效则将失效的下载源从在线队列、价格队列中删除并加入离线队列。通过上述方式,能够极大地提高在线队列、离线队列、价格队列的维护效率,使得选择下载速率更高的可用下载源以及选择带宽价格更低的可用下载源时不需要临时检测,设置效率更高。

本实施例中,下载每一个当前分片所需的视频数据时下一个分片的下载源默认为保持与当前分片的下载源相同,通过上述方式能够减少播放过程中下载源的负载波动,使得各个下载源的下载速率的稳定性更好,从而能够提升切换下一个分片的下载源的调度精度。此外,也可以根据需要采用其他方式设置下一个分片的下载源默认值,例如设置为指定的默认下载源、随机下载源等。

如图2所示,本实施例基于分片下载播放视频所需的视频数据的详细步骤包括:

1)播放器向点播调度服务器发送播放请求,接收返回的播放地址、所有下载源、下载源的价格权重和视频码率;

2)播放器向点播调度服务器请求优先策略,确定优先策略是否为价格优先;

3)根据返回的所有下载源,以及点播调度服务器返回的、或者本地探测得到的、或者本地记录的各个下载源的下载速率和在线状态,将在线的下载源按照下载速率排序生成在线队列online_queue、按照下载源的价格权重排序生成价格队列price_queue,将离线的下载源放入离线队列offline_queue;各个下载源的价格权重既可以通过点播调度服务器返回,也可以通过预置在播放器本地,或者临时向其他服务器请求(例如cdn管理服务器等等),下载源的状态可以通过节点状态管理器实现。

4)根据视频码率设置分片大小或者设置默认的分片大小;

根据码率来计算,按照512kb分页,分片大小=(((视频码率(kbps)/8)+511)/512)*512,单位kb;如果无视频码率,则使用默认值512kb;

5)建立用于存储分片请求的分片请求队列slice_queue;

6)根据返回的播放地址请求第一个分片,且分片请求采用httprange请求以获取目标视频文件大小的信息;

7)创建第一个分片的分片请求并将其加入到分片请求队列slice_queue中;

8)根据第一个分片返回的信息获取目标视频文件大小,将目标视频文件大小除以分片大小再向上取整得到分片总数量,第一个分片作为当前分片;

9)下载当前分片所需的视频数据,如果当前分片的下载源失效则选择从在线队列online_queue或者价格队列price_queue中选择其他可用下载源并切换到新的可用下载源;

播放器基于当前分片返回的视频数据开始播放,定时检测播放缓存的可播放时长以指定下一个分片的下载源,默认当前分片的可用下载源作为下一个分片的下载源;

判断分片请求队列slice_queue中是否存在下一个分片的分片请求,如果存在下一个分片的分片请求,则为下一个分片的下载源设置指定的下载源;如果不存在下一个分片的分片请求,则判定已创建的分片数量是否等于分片总数量,如果不等于分片总数量则在分片请求队列slice_queue中创建新的下一个分片的分片请求并为下一个分片的下载源设置指定的下载源;如果当前分片所需的视频数据下载完成,则跳转执行步骤10);否则继续跳转执行步骤9);

本实施例中,前述定时检测播放缓存的可播放时长以指定下一个分片的下载源具体是指:如果播放缓存的可播放时长小于第一阈值,则从在线队列online_queue中选择下载速率更高的可用下载源作为下一个分片的下载源;如果播放缓存的可播放时长大于第二阈值,则从价格队列price_queue中选择带宽价格更低的可用下载源作为下一个分片的下载源,第二阈值比第一阈值大;如果播放缓存的可播放时长大于第三阈值且小于第二阈值,则根据优先策略来决定是否选择带宽价格更低的可用下载源,如果优先策略为价格优先则从价格队列price_queue中选择带宽价格更低的可用下载源作为下一个分片的下载源;否则默认当前分片的可用下载源作为下一个分片的下载源。

本实施例中,播放缓存的可播放时长大于第二阈值时,还包括从离线队列offline_queue选择对一个不可用下载源(也可以根据需要选择更多)进行离线探测的步骤,如果探测到该下载源恢复,则将该不可用下载源修改为可用下载源,即:将该下载源从离线队列offline_queue中删除,再根据离线探测得到的下载速率或者其历史下载速率将其插入在线队列online_queue中对应的位置、根据价格将其插入价格队列price_queue中对应的位置。

本实施例进行离线探测时,如果探测到该下载源仍未恢复,则将该不可用下载源修改为彻底废弃、后续不再进行离线探测,即:将其从离线队列offline_queue中直接删除且不加入在线队列online_queue和价格队列price_queue,这样以后该彻底废弃的下载源不会再在线队列online_queue和价格队列price_queue中被使用,由于不在离线队列offline_queue中,离线探测也不会再探测该彻底废弃的下载源。

10)根据本次完成下载的下载速率更新对应下载源位于在线队列online_queue中的位置;

11)判断是否所有的分片均已完成下载,如果尚未完成下载,则在分片请求队列slice_queue中选择下一个分片作为新的当前分片,跳转执行步骤9);否则,结束并退出。

本实施例中,针对分片请求采用分片请求队列slice_queue进行存储,且分片请求队列slice_queue中存储有当前的分片请求,且可能存在下一个分片请求,且在下载当前分片的视频数据过程中会生成下一个分片请求并指定下一个分片请求的下载源;此外,也可以根据需要预先在分片请求队列slice_queue中生成更多的分片请求或者所有的分片请求,然后再逐个进行下载或者同时对多个分片进行并行下载,同样也可以实现在下载当前分片的视频数据过程中指定下一个分片请求的下载源。本实施例中,每下载完一个分片则将其从分片请求队列slice_queue中删除,此外也可以根据需要采用每下载完一个则标记为完成或者删除。本实施例中,针对分片请求队列slice_queue中的第一个分片请求,根据点播调度服务器返回的播放地址进行下载视频数据,此外也可以根据需要从指定或随机的可用下载源来完成视频数据的下载。

本实施例基于播放缓存大小分片下载的方法在播放端将http点播请求转换成分片请求,结合播放缓存大小和节点状态,当节点失败时,及时切换到有效节点;当播放缓存大小过小时,选择下载速度更快的节点;当播放缓存足够充足时,择机选择带宽更加廉价的节点;相比普通的http点播方式,有效降低了错误率,卡顿率和带宽成本。

需要说明的是,下载源在不同系统中可能为不同的称谓,例如在内容分发系统cdn中可能命名为分发节点,在其他系统可能命名为下载节点、数据源等等,但是其本质都是在互联网中具有不同网络路径的视频文件存储计算机节点。

本实施例还提供一种基于播放缓存大小分片下载的系统,包括计算机设备,该计算机设备被编程以执行本实施例前述基于播放缓存大小分片下载的方法的步骤。本实施例还提供一种基于播放缓存大小分片下载的系统,包括计算机设备,该计算机设备的存储介质上存储有被编程以执行本实施例前述基于播放缓存大小分片下载的方法的计算机程序,该计算机程序可以为播放器、或者带有下载功能的播放器、或者在有播放功能的下载器,或者带有模拟播放功能的下载器。本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程以执行本实施例前述基于播放缓存大小分片下载的方法的计算机程序,该计算机程序可以为播放器、或者带有下载功能的播放器、或者在有播放功能的下载器,或者带有模拟播放功能的下载器。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1