自适应比特率流送的系统和方法与流程

文档序号:18684979发布日期:2019-09-13 23:53阅读:481来源:国知局
自适应比特率流送的系统和方法与流程

本申请向在2013年12月17日提交的共有的美国非临时专利申请号14/109238要求优先权,其内容通过引用整体明确地在此并入。

技术领域

本公开一般地涉及自适应比特率流送。



背景技术:

跨有线或无线网络的视频流量可以使用自适应比特率(ABR)途径或者使用点对点(P2P)递送来管理。自适应比特率途径可以包括按照多个重放比特率对视频进行编码并且基于可用带宽按照不同的重放比特率提供视频。例如,当较高带宽可用时,可以提供对应于较高重放比特率的较高保真度的视频。当带宽可用性低时,可提供对应于较低重放比特率的较低质量的视频以防止重放中断。在点对点递送系统中应用自适应比特率途径可能是困难的。

附图说明

图1是使用自适应比特率流送的系统的特定例示性实施例的示图;

图2是使用自适应比特率流送的系统的另一例示性实施例的示图;

图3是用来例示媒体内容项的下载和重放速率与媒体内容项的流行度之间的关系的线形图;

图4是用来例示自适应比特率流送的方法的特定实施例的流程图;

图5是用来例示自适应比特率流送的方法的另一特定实施例的流程图;

图6是用来例示自适应比特率流送的方法的另一特定实施例的流程图;以及

图7是可操作以支持如在图1-6中例示的计算机实现的方法、计算机程序产品和系统组件的实施例的一般计算机系统的例示性实施例的框图。

具体实施方式

公开了自适应比特率流送的系统和方法。点对点系统可以使用与特定媒体内容项相关联的一组设备(也称作“群”)。该特定媒体内容项可以包括视频。例如,群可以由具有(例如,存储)特定媒体内容项的各部分的设备组成。为了例示,用户可能在设备处查看特定媒体内容项的一部分并且可能在到达特定媒体内容项的结尾之前放弃查看。例如,用户可能切换为观看另一媒体内容项。设备可以存储特定媒体内容项的该部分。设备可以参与特定群以接收与该群相关联的特定媒体内容项,并且可以与其他对等设备交换该特定媒体内容项的块。单个媒体内容项可以与多个文件相关联,每个文件对应于不同的重放比特率。

不同的群可以对应于特定媒体内容项的每种重放比特率。设备可以并发地加入与特定媒体内容项相关联的不同群,并且可以保持与不同群中的每个群中的对等设备的活动点对点会话。在特定实施例中,设备可以并发地加入与多个媒体内容项相关联的不同群。例如,设备可以加入与特定媒体内容项相关联的群的第一集合和与另一媒体内容项相关联的群的第二集合。

设备可以基于可用带宽中的变化来动态地调节媒体内容项的重放比特率。例如,设备可以基于缓冲块的数目来确定可用带宽。当缓冲块的数目超过第一阈值,指示较高的带宽可用性时,设备可以从对应于较高重放比特率的群中的对等设备请求对应于该较高重放比特率的块。可替代地,当缓冲块的数目低于第二阈值,指示较低的带宽可用性时,设备可以向对应于较低重放比特率的群中的对等设备请求对应于该较低重放比特率的块。因此,通过提供对应于媒体内容项的每种重放比特率的对等设备的不同群,可以将自适应比特率途径与点对点递送相结合。

在特定实施例中,方法包括接收来自跟踪设备的信息。该信息指示多个设备与第一媒体内容项相关联。该信息还可以指示一个或多个比特率,第一媒体内容项的至少一部分按照所述一个或多个比特率可用。该方法还包括与多个设备中的第一组和多个设备中的第二组建立点对点会话。该方法还包括基于与第一组相关联的第一比特率满足阈值比特率来选择第一组。该方法还包括经由点对点会话中的第一点对点会话向第一组中的第一设备发送第一请求。第一媒体内容项被分成多个块。第一请求识别多个块中的第一块。该方法还包括接收来自第一设备的第一块以及基于缓冲块的数目来修改阈值比特率。该方法还包括基于与第二组相关联的第二比特率满足修改后的阈值比特率来选择第二组。该方法还包括经由点对点会话中的第二点对点会话向第二组中的第二设备发送第二请求。第二请求识别多个块中的第二块。

在另一特定实施例中,设备包括处理器和存储器。存储器存储指令,所述指令当由处理器执行时使处理器进行操作。所述操作包括接收识别存储第一媒体内容项的片段的多个设备的信息。所述操作还包括与多个设备中的第一组和多个设备中的第二组建立点对点会话。所述操作还包括基于第一比特率选择第一组以及经由点对点会话中的第一点对点会话向第一组中的第一设备发送第一请求。第一媒体内容项包括多个片段。第一请求识别多个片段中的第一片段。所述操作还包括接收来自第一设备的第一片段。所述操作还包括基于第二比特率选择第二组,第二比特率是响应于缓冲片段的数目而选择的。所述操作还包括经由点对点会话中的第二点对点会话向第二组中的第二设备发送第二请求。第二请求识别多个片段中的第二片段。

在另一特定实施例中,计算机可读存储设备存储指令,所述指令当由处理器执行时使该处理器进行包括接收信息的操作。该信息指示多个设备与第一媒体内容项相关联。所述操作还包括与多个设备中的第一组和多个设备中的第二组建立点对点会话。所述操作还包括基于第一比特率选择第一组。所述操作还包括经由点对点会话中的第一点对点会话向第一组中的第一设备发送第一请求。第一媒体内容项被分成多个块。第一请求识别多个块中的第一块。所述操作还包括接收来自第一设备的第一块。所述操作还包括基于第二比特率选择第二组,第二比特率是响应于缓冲块的数目而选择的。所述操作还包括经由点对点会话中的第二点对点会话向第二组中的第二设备发送第二请求。第二请求识别多个块中的第二块。所述操作还包括从多个设备的第一子集接收多个请求。所述多个请求中的每个请求识别多个块中的特定块以及该特定块的重放最后期限。所述操作还包括基于特定请求的第一重放最后期限来识别多个请求中的该特定请求。所述操作还包括向多个设备中的请求设备发送第一块。该特定请求是从该请求设备接收的,并且该特定请求识别第一块。

参考图1,公开了系统的特定例示性实施例并且总地命名为100。系统100包括设备102。系统100可以包括多个组(例如,第一组140和第二组142)的设备。例如,第一组140包括设备160和162。第二组142包括设备164、166和168。组也可被称作群。特定组可以对应于特定媒体内容项的特定比特率。例如,第一组140可以对应于第一媒体内容项170的第一比特率(例如,250千字节每秒(Kbps))。作为另一示例,第二组142可以对应于第一媒体内容项170的第二比特率(例如,750Kbps)。在特定实施例中,组(例如,第一组140和第二组142)可能重叠。例如,设备(例如,设备160、162、164、166或者168)可包含在多于一个组中。为了例示,设备(例如,设备160、162、164、166或者168)可以存储与第一媒体内容项170的第一比特率相关联的数据和与第一媒体内容项170的第二比特率相关联的数据。系统100可以包括跟踪设备(例如,跟踪设备112)。在特定实施例中,跟踪设备112也可以是一个或多个组(例如,第一组140和第二组142)的成员。跟踪设备112可以存储指示与每个媒体内容项(例如,第一媒体内容项170)相关联的设备(例如,设备160、162、164、166、168和102)的信息(例如,信息114)。

设备102包括耦接到存储器106并且耦接到缓冲器110的处理器104。存储器106可以包括处理器可执行指令108。存储器106可以包括媒体内容项(例如,第一媒体内容项170)的至少一部分。第一媒体内容项170可以对应于音频、视频或者两者。第一媒体内容项170可被分成多个块(或者片段)。例如,多个块可以包括第一块172并且可以包括第二块174。在特定实施例中,第一媒体内容项170的多个块中的每个块可以在尺寸上与每个其他块相等。例如,多个块中的每个块的重放长度(例如,10秒)可以相等。

存储器106可以包括指示阈值比特率120、并发上传的阈值数目122、并发下载的阈值数目124、第一阈值持续时间180、第二阈值持续时间182、阈值发送持续时间128、缓冲块的第一阈值数目184、缓冲块的第二阈值数目186、点对点会话的阈值数目188或其组合的数据。在特定实施例中,数据可以包括缺省值。例如,阈值比特率120可以是中等比特率(例如,500Kbps)。并发上传的阈值数目122可以是并发上传的缺省数目(例如,5)。并发下载的阈值数目124可以是并发下载的缺省数目(例如,5)。第一阈值持续时间180(例如,30秒)可以比第二阈值持续时间182(例如,10秒)高。阈值发送持续时间128可以是缺省发送持续时间(例如,5秒)。缓冲块的第一阈值数目184可以比缓冲块的第二阈值数目186高。例如,缓冲块的第一阈值数目184可以是对应于特定重放持续时间(例如,50秒)的块的缺省数目(例如,5)。缓冲块的第二阈值数目186可以是对应于另一特定重放持续时间(例如,20秒)的块的缺省数目(例如,2)。点对点会话的阈值数目188可以是点对点会话的缺省数目(例如,80)。在特定实施例中,点对点会话的阈值数目188还可以指示下载点对点会话的阈值数目(例如,50)。在此实施例中,剩余的点对点会话(例如,80-50=30)可用作上传点对点会话。下载点对点会话的阈值数目可以是缺省值(例如,50)。

在特定实施例中,指示阈值比特率120、并发上传的阈值数目122、并发下载的阈值数目124、第一阈值持续时间180、第二阈值持续时间182、阈值发送持续时间128、缓冲块的第一阈值数目184、缓冲块的第二阈值数目186、点对点会话的阈值数目188或其组合的数据的至少一部分可以基于用户输入来确定。例如,设备102可以从用户(例如,用户144)接收指示数据的至少该部分的用户输入(例如,用户输入146)。为了例示,用户144可以使用设备102上的设定应用来经由用户输入146添加或修改数据。例如,设定应用可以显示缺省值。用户144可以使用触摸屏(或者其他输入设备)来增加(例如,从5到6)并发下载的阈值数目124。设备102可以将并发下载的阈值数目124的更新后的值存储在存储器106中。设备102可以包括比例示的组件少或者多的组件。

在操作期间,设备102可以向跟踪设备112发送对信息114的请求。该请求可以识别第一媒体内容项170。在特定实施例中,设备102可以基于从用户144接收的用户输入146来识别跟踪设备112。例如,用户输入146可以包括跟踪设备112的识别信息(例如,统一资源标识符(URI),诸如统一资源定位符(URL))。在特定实施例中,设定应用可以包括对应于识别信息的缺省值。响应于接收到该请求,跟踪设备112可以将信息114修改为指示设备102与第一媒体内容项170相关联。跟踪设备112可以向设备102发送信息114。在特定实施例中,跟踪设备112可以发送仅与第一媒体内容项170相关联的信息114的子集。信息114可以指示多个设备(例如,设备160、162、164、166、168和102)与第一媒体内容项170相关联。信息114还可以包括关于第一媒体内容项170的其他信息。例如,信息114可以指示一个或多个比特率,第一媒体内容项170的至少一部分按照所述一个或多个比特率可用。例如,信息114可以指示第一媒体内容项170的至少一个块(或者片段)按照第一比特率(例如,250Kbps)可用,并且可以指示第一媒体内容项170的至少一个块(或者片段)按照第二比特率(例如,750Kbps)可用。

响应于接收到信息114,设备102可以向与第一媒体内容项170相关联的多个设备中的一个或多个设备发送对等信息请求。例如,设备102可以向设备160、162、164、166和168发送对等信息请求116。响应于该对等信息请求(例如,对等信息请求116),多个设备中的一个或多个设备可以向设备102发送对等信息(例如,对等信息118)。对等信息可以指示第一媒体内容项170的哪些块可用于传输。例如,设备102可以从设备162接收指示设备162具有可用于按照第一比特率(例如,250Kbps)传输的第一块172的对等信息118,以及从设备160接收指示设备160具有可用于按照第一比特率(例如,250Kbps)传输的第一媒体内容项170的第三块的对等信息118。作为另一示例,设备102可以从设备164接收指示设备164具有可用于按照第二比特率(例如,750Kbps)传输的第一块172的对等信息118。

在特定实施例中,对等信息118可以指示设备具有可用于传输的多个块。例如,设备102可以从设备166接收指示设备166具有可用于按照第二比特率(例如,750Kbps)传输的第一块172和第二块174的对等信息118。作为另一示例,设备102可以从设备168接收指示设备168具有可用于按照第二比特率(例如,750Kbps)传输的第一块172、第二块174和第三块的对等信息118。

在特定实施例中,设备(例如,设备160、162、164、166或者168)可以存储对应于多个比特率的第一媒体内容项170的块。例如,设备可被包含在第一组140中和第二组142中。在此实施例中,来自设备的对等信息118可以指示该设备具有按照第一比特率(例如,250Kbps)可用的第一特定块,并且具有按照第二比特率(例如,750Kbps)可用的第二特定块。在特定实施例中,对等信息请求116可以指示特定比特率(例如,250Kbps)。设备(例如,设备160、162、164、166或者168)可以利用指示在设备处按照特定比特率(例如,250Kbps)可用的块的对等信息188来作出响应。例如,包含在第一组140和第二组142两者中的设备可以利用指示第一特定块为可用的对等信息118来响应指示第一比特率的对等信息请求116。

设备102可以识别与第一媒体内容项170的不同比特率(例如,250Kbps、500Kbps、750Kbps、1000Kbps)相关联的多个组(例如,第一组140和第二组142)。例如,设备102可以从至少一个设备(例如,设备160和162中的至少一个)接收指示至少一个块可用于按照第一比特率(例如,250Kbps)传输的对等信息118。响应于指示至少一个块按照第一比特率(例如,250Kbps)可用的对等信息118,设备102可以确定存在与第一比特率(例如,250Kbps)相关联的组(例如,第一组140)。作为另一示例,设备102可以从至少一个设备(例如,设备164、166和168中的至少一个)接收指示至少一个块可用于按照第二比特率(例如,750Kbps)传输的对等信息118。响应于接收到指示至少一个块按照第二比特率(例如,750Kbps)可用的对等信息118,设备102可以确定存在与第二比特率(例如,750Kbps)相关联的组(例如,第二组142)。

在特定实施例中,信息114可以指示一个或多个比特率(例如,第一比特率和第二比特率),第一媒体内容项170(或其各部分)按照所述一个或多个比特率可用。在此实施例中,设备102可以确定存在与一个或多个比特率中的每个相关联的组。例如,设备102可以确定存在与第一比特率(例如,250Kbps)相关联的组(例如,第一组140),并且存在与第二比特率(例如,750Kbps)相关联的另一组(例如,第二组142)。

响应于确定从设备160和162接收到指示至少一个块可用于按照第一比特率(例如,250Kbps)传输的对等信息118,设备102可以确定第一组140至少包括设备160和162。类似地,响应于确定从设备164、166和168接收到指示至少一个块可用于按照第二比特率(例如,750Kbps)传输的对等信息118,设备102可以确定第二组142至少包括设备164、166和168。

设备102可以与多个组(例如,第一组140和第二组142)建立点对点会话。在特定实施例中,设备102可以与多个组(例如,第一组140和第二组142)中的每个组中的至少一个设备建立点对点会话。例如,设备102可以分别与设备160、162、164、166和168建立点对点会话150、152、154、156和158。

在特定实施例中,设备102可以建立多达点对点会话的阈值数目188的若干点对点会话。例如,当设备102处的点对点会话的数目等于点对点会话的阈值数目188时,设备102在建立新的点对点会话之前可以禁用现有的点对点会话。在特定实施例中,设备102可以基于自现有点对点会话被先前使用(来接收、来发送,或者两者中的任一个)起(最近使用的或者最远使用的)的时间流逝、基于现有点对点会话何时被建立(最旧或者最新)或者基于其组合来随机选择将要禁用的现有点对点会话。

设备102可以基于与对应于阈值比特率120的特定组相关联的比特率来选择第一组140和第二组142中的特定组。例如,第一比特率(例如,250Kbps)可以与第一组140相关联,并且第二比特率(例如,750Kbps)可以与第二组142相关联。在特定实施例中,设备102可以选择具有最接近阈值比特率120的比特率的特定组。例如,第一比特率(例如,250Kbps)可以比第二比特率(例如,750Kbps)更接近阈值比特率120(例如,400Kbps)。在此示例中,设备102可以选择第一组140。

在另一特定实施例中,阈值比特率120可以表示最大比特率,以使设备102可以选择具有比阈值比特率120低的最高比特率的特定组。例如,在与第一组140和第二组142相关联的比特率中,第一比特率(例如,250Kbps)可以最接近阈值比特率120(例如,400Kbps)而不超过阈值比特率120。在此示例中,设备102可以选择第一组140。在另一特定实施例中,阈值比特率120可以表示最小比特率,并且设备102可以选择具有比阈值比特率120高的最低比特率的特定组。例如,第二比特率(例如,750Kbps)可以最接近阈值比特率120(例如,400Kbps)而不小于阈值比特率120。在此示例中,设备102可以选择第二组142。

设备102可以向选择的组中的第一设备发送请求以请求对应于第一比特率的第一媒体内容项170的块。例如,设备102可以经由点对点会话152向第一组140中的设备162发送第一请求130以请求第一块172。在特定实施例中,第一块172可以是第一媒体内容项170的开始块。第一请求130可以指示或者识别第一块172。例如,第一请求130可以指示第一块172在第一媒体内容项170的多个块中的索引号(例如,0)。第一请求130还可以识别第一媒体内容项170。例如,第一请求130可以包括第一媒体内容项170的标题、第一媒体内容项170的字母数字标识符或者两者。在向设备162发送第一请求130的同时,设备102可以保持与其他设备(例如,设备160、162、164、166和168)的活动点对点会话(例如,点对点会话150、152、154、156和158)。

响应于第一请求130,设备162可以向设备102发送第一块172。第一媒体内容项170的块在显示之前可被放置在缓冲器110中以防止重放中断。例如,设备102可以接收来自设备162的第一块172,并且可以将第一块172放置在缓冲器110中。在接收来自设备162的第一块172的同时,设备102可以保持与其他设备(例如,设备160、162、164、166和168)的活动点对点会话(例如,点对点会话150、152、154、156和158)。

设备102可以基于缓冲器110中的块的数目来修改阈值比特率120。例如,设备102可以基于确定多于阈值数目(例如,缓冲块的第一阈值数目184)的块在缓冲器110中而增加阈值比特率120。作为另一示例,设备102可以基于确定少于另一阈值数目(例如,缓冲块的第二阈值数目186)的块在缓冲器110中而减小阈值比特率120。

在特定实施例中,设备102可以在特定持续时间内避免修改阈值比特率120。例如,设备102可以在自阈值比特率120被先前修改(例如,增加或减小)起已经过去阈值持续时间(例如,第一阈值持续时间180)之前避免增加阈值比特率120。作为另一示例,设备102可以在自阈值比特率120被先前修改(例如,增加或减小)起已经过去另一阈值持续时间(例如,第二阈值持续时间182)之前避免减小阈值比特率120。为了例示,设备102可以基于确定阈值比特率120在至少第一阈值持续时间180内尚未被修改并且在缓冲器110中存在多于缓冲块的第一阈值数目184的缓冲块而增加阈值比特率120。作为另一示例,设备102可以基于确定阈值比特率120在至少第二阈值持续时间182内尚未被减小并且在缓冲器110中存在少于缓冲块的第二阈值数目186的缓冲块而减小阈值比特率120。在特定实施例中,设备102可以按照特定量来修改阈值比特率120。例如,设备102可以使阈值比特率120增加第一量。作为另一示例,设备102可以使阈值比特率120减小第二量。在特定实施例中,第一量、第二量或者两者可以是经由用户输入146或者从另一设备接收到的。

在接收到第一块172之后,如果阈值比特率120未被修改,则设备102可以向设备(例如,设备160或162)发送对按照相同比特率的第一媒体内容项170的第二块174的另一请求。第二块174可以是在第一媒体内容项170的多个块的重放序列中在第一块172之后的后续块。

可替代地,如果阈值比特率120在接收到第一块172之后被修改,则设备102可以基于修改后的阈值比特率120来选择第二组(例如,第二组142)。例如,设备102可以经由点对点会话158向设备168发送第二请求132。第二请求132可以指示第二块174。在特定实施例中,第二请求132可以指示与第二组142相关联的第二比特率。设备102可以接收来自设备168的第二块174。

设备102可以将第二块174放置在缓冲器110中。设备102还可以将第一块172、第二块174或者两者存储在存储器106中。设备102可以发起第一块172、第二块174或两者的显示。在特定实施例中,第一请求130可以包括与第一块172的显示相关联的重放最后期限。重放最后期限可以指示设备102期望发起第一块172的显示的时间。类似地,第二请求132可以包括与第二块174的显示相关联的另一重放最后期限。

在特定实施例中,设备102可以基于在发送请求的阈值持续时间内未接收到响应而重新发送请求。例如,如果设备102在发送第二请求132的阈值发送持续时间128内未接收到第二块174,则设备102可以向设备168重新发送第二请求132。在特定实施例中,设备102可以基于在发送请求的阈值持续时间内未接收到响应而向另一设备发送另一请求。在特定实施例中,另一设备可能与请求先前所发送到的设备属于相同的组。例如,当设备102在发送第二请求132的阈值发送持续时间128内未接收到来自设备168的第二块174时,设备102可以向第二组142中的设备166发送第三请求134(除了重新发送第二请求132之外或者作为重新发送第二请求132的替代)。第三请求134可以指示第二块174。设备102可以接收来自设备166的第二块174。

在特定实施例中,设备102可以接收请求被拒绝消息(例如,请求被拒绝消息126)。例如,设备102可以从设备168接收指示第二块174不可用的请求被拒绝消息126。响应于接收到请求被拒绝消息126,设备102可以向另一设备(例如,设备166)发送另一请求(例如,第三请求134)。

在特定实施例中,设备102可以基于并发下载的阈值数目124来限制并发下载的数目。例如,设备102可以在确定正在从设备(例如,设备160、162、164、166或168)的第一子集并发下载的块的数目满足并发下载的阈值数目124之后发送第一请求130和第二请求132中的每一个。为了例示,设备102可以基于确定正在从设备的第一子集并发下载的块的数目不满足(例如,超过)并发下载的阈值数目124而避免发送第一请求130、第二请求132或者两者。例如,设备102可以下载与第一请求130相关联的第一块172。响应于确定并发下载的数目(例如,1)不满足(例如,大于或者等于)并发下载的阈值数目124(例如,1),设备102可以避免在正在下载第一块172的同时发送第二请求132。

在特定实施例中,并发下载的阈值数目124可以对应于下行链路容量的阈值量(例如,500兆赫(MHz))。在此实施例中,设备102可以响应于确定正在使用的下行链路容量的量不满足(例如,大于或者等于)下行链路容量的阈值量而避免发送请求。例如,响应于确定在下载第一块172时正在使用的下行链路容量的量不满足(例如,大于或者等于)下行链路容量的阈值量(例如,500MHz),设备102可以避免发送第二请求132。

在特定实施例中,设备的第一子集可以包括与其他媒体内容项相关联的设备。例如,设备102可以参与与多个媒体内容项相关联的多个群。并发下载的阈值数目124可用作与媒体内容项的块的并发下载相关联的总的限制。在特定实施例中,设备102可以推迟发送第一请求130、第二请求132或者两者,直到正在从设备的第一子集并发下载的块的数目满足并发下载的阈值数目124为止。

在特定实施例中,设备102可以参与将第一媒体内容项170的块上传到另一设备。例如,设备102可以接收来自设备(例如,设备160、162、164、166和168)的第一子集(例如,设备164和160)的多个请求(例如,请求136和138)。为了例示,设备102可以接收来自设备164的请求136并且可以接收来自设备160的请求138。第一子集可以包括来自多个组的设备。例如,第一子集可以包括第一组140中的设备160,并且可以包括第二组142中的设备164。请求136和138中的每个可以指示第一媒体内容项170的特定块。例如,请求138可以指示第一块172,并且请求136可以指示第二块174。设备102可以利用所请求的块(例如,第一块172或第二块174)来响应任一请求(或者两个请求)。例如,设备102可以将第一块172发送到设备160,可以将第二块174发送到设备164,或者两者兼有。

在特定实施例中,设备102可以基于并发上传的阈值数目122来限制并发上传的数目。例如,设备102可以在确定正并发上传到设备(例如,设备160、162、164、166或168)的第一子集的块的数目满足并发上传的阈值数目122之后发送第一块172和第二块174。为了例示,设备102可以基于确定正并发上传到设备的第一子集的块的数目不满足(例如,超过)并发上传的阈值数目122而避免发送第一块172、第二块174或者两者。在特定实施例中,设备的第一子集可以包括与其他媒体内容项相关联的设备。例如,设备102可以参与与多个媒体内容项相关联的多个群。并发上传的阈值数目122可用作与媒体内容项的块的并发上传相关联的总的限制。在特定实施例中,设备102可以推迟发送第一块172、第二块174或者两者,直到正并发上传到设备的第一子集的块的数目满足并发上传的阈值数目122为止。

在特定实施例中,设备102可以基于在请求中指示的重放最后期限来选择接下来要响应的请求。例如,设备102可以识别具有对应于未解决的请求(例如,请求136和138)的多个重放最后期限中的最早重放最后期限的请求(例如,请求138)。设备102接下来可以响应识别的请求138。例如,设备102可以基于由请求138指示的重放最后期限比由请求136指示的重放最后期限早而在响应请求136之前响应请求138。在特定实施例中,设备102可以在第一块172在耦接到设备102的显示设备处重放之后将第一块172发送到设备160。

按照次序响应重放最后期限可以降低请求设备(例如,设备160和164)错过重放最后期限的可能性并且还可以降低损耗。例如,如果具有较晚重放最后期限的请求设备(例如,设备164)的用户放弃查看第一媒体内容项170,则设备164可以在设备102利用第二块174响应请求138之前将取消请求消息发送到设备102。响应于取消请求消息,设备102可以从未解决的请求中去除请求136。例如,设备102可以避免向设备164发送第二块174。

在特定实施例中,在设备102能够响应请求(例如,请求136)之前,设备102可以确定在请求中指示的重放最后期限可能被错过。响应于该确定,设备102可以不响应请求136。可替代地,设备102可以利用指示第二块174为不可用的请求被拒绝消息来响应请求136。

因此,系统100将点对点设备与自适应比特率途径一起利用。设备102可以保持与对应于与第一媒体内容项170相关联的各种比特率的设备的点对点会话。当比特率由于比特率自适应而改变时,设备102可以接收对应于选择的比特率的第一媒体内容项170的块。系统100可以利用点对点设备的未使用的上传容量,同时具有使比特率适应变化的带宽可用性的灵活性。

参考图2,公开了系统的特定例示性实施例,并且总地命名为200。系统200可以包括图1中的设备102。设备102可以包括多个媒体内容项(例如,视频212、214、216和218)或者可以访问多个媒体内容项。设备102可以访问对应于不同比特率的特定媒体内容项的块。例如,设备102可以访问对应于比特率220的视频214的第一多个块、对应于比特率222的视频214的第二多个块以及对应于比特率224的视频214的第三多个块。

设备102可以参与与特定媒体内容项相关联的一个或多个群。例如,设备102可以参与与视频212相关联的群232以及与视频218相关联的群238。作为另一示例,设备102可以参与与视频214相关联的群240、242和244,其中所述群中的每个可以对应于与视频214相关联的特定比特率。例如,群240可以对应于比特率220,群242可以对应于比特率222,并且群244可以对应于比特率224。在特定实施例中,群232、238、240、242和244中的一个或多个可以对应于图1中的第一组140和第二组142中的一个或多个。

设备102可以与群232、238、240、242和244中的每个群中的一个或多个设备建立点对点会话。例如,如在图2中例示的,设备102具有与群240中的两个其他设备的点对点会话。所述两个其他设备具有与彼此的点对点会话以及与群240中的另一设备的点对点会话。

在操作期间,设备102可接收对视频214的块的请求。设备102可以将所请求的块发送到请求设备,如参考图1描述的。例如,设备102可以将对应于比特率220的第一块发送到群240中的设备。设备102可以将对应于比特率222的多个不同块发送到群242中的多个不同设备。设备102还可以(或者在替代方案中)将对应于比特率224的多个其他块发送到群244中的设备。在特定实施例中,对块的请求可以指示对应的比特率。在另一实施例中,设备102可以基于识别请求设备和设备102两者都是其成员的群来确定所请求的比特率。在特定实施例中,设备102可以并发地发送视频214的所请求的块中的一个或多个。

图3是用来例示媒体内容项的下载速率和重放速率与媒体内容项的流行度之间的关系的线形图,并且总地命名为300。在例示性实施例中,可以在图1中的系统100中、图2中的系统200中或者两者中观察到该关系。在特定实施例中,媒体内容项可以包括图1中的第一媒体内容项170。

线形图300的水平轴(x轴)对应于媒体内容项的流行度。特定媒体内容项的流行度可以基于请求该特定媒体内容项(例如,在图1中的系统100、图2中的系统200或者两者中)的设备的到达率(λ)。例如,较流行的媒体内容项可以具有比较不流行的媒体内容项高的到达率。线形图300的垂直轴(y轴)对应于媒体内容项的以Kbps计的下载速率或重放速率。

线形图300针对三个比特率(r)例示了媒体内容项的下载速率和重放速率与媒体内容项的流行度之间的关系。线形图300例示了对应于较低重放比特率(例如,312.5Kbps)的第一重放速率312、对应于中间重放比特率(例如,625Kbps)的第二重放速率314,以及对应于较高重放比特率(例如,937.5Kbps)的第三重放速率316。线形图300例示了对应于较低重放比特率(例如,312.5Kbps)的第一下载速率302、对应于中间重放比特率(例如,625Kbps)的第二下载速率304,以及对应于较高重放比特率(例如,937.5Kbps)的第三下载速率306。

线形图300例示了媒体内容项的下载速率随着媒体内容项的流行度增加而增加。例如,与对于较不流行的媒体内容项相比,对于较流行的媒体内容项可以实现较高的下载速率。线形图300还例示了对于较流行的媒体内容项,下载速率可能比重放速率高,特别是对较低的比特率(例如,312.5Kbps)而言。线形图300还例示了对于不流行的媒体内容项,下载速率可能比重放速率低,特别是对较高的比特率(例如,937.5Kbps)而言,并且可能导致重放中断。

按照相同比特率提供所有媒体内容项可能是次优的。例如,按照较高的比特率(例如,937.5Kbps)提供不流行的媒体内容项可能导致重放中断。作为另一示例,按照较低的比特率(例如,312.5Kbps)或者中等比特率(例如,625Kbps)提供流行的媒体内容项可能不必要地将观众限制为不佳的媒体重放质量。

媒体内容项的流行度可能动态地改变并且可能难以预测。图1中的系统100、图2中的系统200或者两者可以在不使用流行度信息的情况下自动地适应媒体内容项(例如,第一媒体内容项170)的可用带宽。例如,与不流行的媒体内容项相关联的下载速率可能为低。较低的下载速率可能在缓冲器110中产生比缓冲块的第二阈值数目186少的块。响应于确定缓冲器110中存在比缓冲块的第二阈值数目186少的块,设备102可以降低阈值比特率120,如参考图1进一步描述的。结果,可以降低与不流行的媒体内容项相关联的重放比特率。作为另一示例,与流行的媒体内容项相关联的下载速率可能为高。较高的下载速率可能在缓冲器110中产生比缓冲块的第一阈值数目184多的块。响应于确定缓冲器110中存在比缓冲块的第一阈值数目184多的块,设备102可以增加阈值比特率120,如参考图1进一步描述的。结果,可以增加与流行的媒体内容项相关联的重放比特率。因此,重放比特率对于流行的视频可被自适应地增加并且对于不流行的视频可被自适应地降低。

图4是用来例示自适应比特率流送的方法400的特定实施例的流程图。在例示性实施例中,方法400可以由图1中的系统100、图2中的系统200或者两者来进行。

方法400包括在402处接收来自跟踪设备的信息。该信息可以指示多个设备与第一媒体内容项相关联。例如,图1中的设备102可以接收来自跟踪设备112的信息114,如参考图1进一步描述的。信息114可以指示设备102、160、162、164、166和168与第一媒体内容项170相关联。

方法400还包括在404处响应于接收到信息而向多个设备发送对等信息请求。例如,图1中的设备102可以响应于接收到信息114而向设备160、162、164、166和168发送第一对等信息请求116,如参考图1进一步描述的。

方法400还包括在406处接收来自第一设备的第一对等信息。第一对等信息可以指示第一设备具有可用于按照第一比特率传输的第一块。例如,图1中的设备102可以从设备162接收指示第一块172可用于按照第一比特率(例如,250Kbps)传输的对等信息118,如参考图1进一步描述的。

方法400还包括在408处与多个设备中的第一组和多个设备中的第二组建立点对点会话。例如,设备102可以与第一组140中的设备160和162建立点对点会话150和152,并且可以与第二组142中的设备164、166和168建立点对点会话154、156和158,如参考图1进一步描述的。在特定实施例中,点对点会话150、152、154、156和158中的每个可以对应于特定的传输控制协议(TCP)会话。建立TCP会话可以包括进行TCP握手(例如,三次握手)。例如,可以在设备102向设备160发送会话请求(例如,同步(SYN)消息)、接收来自设备160的会话请求确认(例如,同步确认(SYN-ACK)消息)以及向设备160发送对会话请求确认的确认(例如,确认(ACK)消息)之后建立点对点会话150。

方法400还包括在410处基于与第一组相关联的第一比特率满足阈值比特率来选择第一组。例如,设备102可以基于与第一组140相关联的第一比特率(例如,250Kbps)满足阈值比特率120来选择第一组140,如参考图1进一步描述的。

方法400还包括在412处确定正在从多个设备中的设备的第一子集并发接收第一数目的块。例如,图1中的设备102可以确定正在从多个设备(例如,设备160、162、164、166和168)中的设备的第一子集并发接收第一数目的块。例如,设备102可以确定第一媒体内容项170的特定数目的块(例如,2)正在被设备102从设备160和162并发地接收。为了例示,设备102可以并发地接收来自设备160的第一先前块和来自设备162的第二先前块。第一先前块和第二先前块可能先前已被设备102请求。

方法400还包括在414处经由点对点会话中的第一点对点会话向第一组中的第一设备发送第一请求。第一请求可以基于块的第一数目满足并发下载的阈值数目而被发送到第一设备。第一媒体内容项可被分成多个块。第一请求可以识别多个块中的第一块。例如,响应于确定块的第一数目(例如,2)满足并发下载的阈值数目124(例如,5),图1中的设备102可以经由点对点会话152向设备162发送第一请求130,如参考图1进一步描述的。

方法400还包括在416处在经由第一点对点会话向第一设备发送第一请求的同时保持与第二设备的第二点对点会话。例如,设备102可以在经由点对点会话152向设备162发送第一请求130的同时保持与设备168的点对点会话158,如参考图1进一步描述的。例如,点对点会话158可以对应于TCP会话。设备102可以周期性地向设备168发送保持存活消息(例如,没有数据并且使ACK标志使能的消息),并且可以接收来自设备168的ACK消息。保持存活消息可以防止设备168关闭点对点会话158。可替代地,如果设备102未响应于保持存活消息而接收ACK消息,设备102可以(例如,通过发起与设备168的另一TCP握手)重新建立点对点会话158。

方法400还包括在418处接收来自第一设备的第一块,以及在420处在接收来自第一设备的第一块的同时保持与第二设备的第二点对点会话。例如,设备102可以接收来自设备162的第一块172,并且在接收来自设备162的第一块172的同时保持与设备168的点对点会话158,如参考图1进一步描述的。

保持点对点会话158可以使得设备102能够快速地向设备168发送请求(例如,第二请求132),如参考图5进一步描述的。当设备102具有与设备168建立的会话(例如,点对点会话158)时,设备102可以在不首先进行会话建立处理(例如,TCP握手)的情况下向设备168发送请求(例如,第二请求132)。

图5是用来例示自适应比特率流送的方法500的特定实施例的流程图。在例示性实施例中,方法500可以由图1中的系统100、图2中的系统200或者两者来进行。在特定实施例中,图4中的方法400可以在方法500中的步骤502处继续。例如,方法400和500可由设备102进行以自适应地修改第一媒体内容项170的重放比特率。

方法500包括在502处基于缓冲块的数目来修改阈值比特率。例如,设备102可以基于缓冲块的数目来修改阈值比特率120,如参考图1进一步描述的。

方法500还包括在504处基于与第二组相关联的第二比特率满足修改后的阈值比特率来选择第二组。例如,设备102可以基于与第二组142相关联的第二比特率(例如,750Kbps)满足修改后的阈值比特率120来选择第二组142,如参考图1进一步描述的。

方法500还包括在506处经由点对点会话中的第二点对点会话向第二组中的第二设备发送第二请求。第二请求可以识别多个块中的第二块。例如,图1中的设备102可以经由点对点会话158向第二组142中的设备168发送第二请求132。

方法500还包括在508处接收来自第二设备的第二块。第二块在多个块的重放序列中可以在第一块之后。例如,设备102可以接收来自设备168的第二块174。因此,方法500可以使能点对点环境中的自适应比特率流送。通过从对应于不同比特率的群请求下一块可以自适应地改变重放比特率。

图6是用来例示自适应比特率流送的方法600的特定实施例的流程图。在例示性实施例中,方法600可以由图1中的系统100、图2中的系统200或者两者来进行。在特定实施例中,图4中的方法400可以在方法600中的步骤602处继续。例如,方法400和600可由设备102进行以接收第一媒体内容项170的块并将其提供给对等设备。

方法600包括在602处从多个设备的第一子集接收多个请求。多个请求中的每个可以包括特定最后期限,并且多个请求中的每个可以识别第一媒体内容项的特定块。例如,设备102可以接收来自设备164和160的请求136和138,如参考图1进一步描述的。请求138可以指示第一重放最后期限并且请求136可以指示第二重放最后期限。请求138可以识别第一块172并且请求136可以识别第二块174。

方法600还包括在604处识别多个请求中具有多个重放最后期限中的最早重放最后期限的特定请求。多个重放最后期限可以对应于多个请求。例如,设备102可以基于确定第一重放最后期限比第二重放最后期限早而识别请求138具有较早的最后期限,如参考图1进一步描述的。

方法600还包括在606处确定第一数目的块正在被并发发送到多个设备中的第二子集。例如,设备102可以确定第一数目的块正在被并发发送到多个设备(例如,设备160、162、164、166和168)中的第二子集。例如,设备102可以确定第一媒体内容项170的特定数目的块(例如,2)正在被设备102并发上传到设备164和166。例如,设备102可能正在并发地将先前请求的第一块上传到设备164并且将先前请求的第二块上传到设备166。

方法600还包括在608处向多个设备的第一子集中的第一请求设备发送第一块。特定请求可以是从第一请求设备接收到的。响应于确定第一数目满足并发上传的阈值数目,可以向第一请求设备发送第一块。例如,响应于确定第一数目(例如,2)满足并发上传的阈值数目122(例如,5),设备102可以向设备160发送第一块172,如参考图1进一步描述的。如果设备102确定第一数目不满足并发上传的阈值数目122,则设备102可以不向设备160发送第一块172。例如,设备102可以向设备160发送请求被拒绝消息。在特定实施例中,响应于确定第一数目不满足并发上传的阈值数目122,设备102可以推迟向设备160发送第一块172。例如,设备102可以周期性地确定正在被设备102并发发送的块的第一数目。当设备102完成发送块中的一个或多个时,第一数目可能改变。当第一数目满足(例如,少于或者等于)并发上传的阈值数目122时,设备102可以向设备160发送第一块172。因此,方法600可以使能点对点环境中的自适应比特率流送。来自对等体的具有较早重放最后期限的请求可被赋予较高的优先级以降低错过的重放最后期限和重放中断的可能性。

图7是例示了总地命名为700的一般计算机系统的实施例的框图。计算机系统700可操作以支持如在图1-6中例示的计算机实现的方法、计算机程序产品和系统组件的实施例。在特定实施例中,计算机系统700可以对应于图1或图2中的设备102、图1中的跟踪设备112或其组合,或者可以包含在图1或图2中的设备102、图1中的跟踪设备112或其组合中。计算机系统700可以耦接到其他计算机系统或外围设备,或者与其他计算机系统或外围设备通信。

在特定实施例中,计算机系统700可操作以进行方法400-600中的一个或多个,如在图4-6中例示的。例如,计算机系统700可操作以接收信息、发送对等信息请求、接收第一对等信息、建立点对点会话、选择第一组、确定块的第一数目、发送第一请求、在发送第一请求的同时保持第二点对点会话、接收第一块以及在接收第一块的同时保持第二点对点连接,如参考图4进一步描述的。作为另一示例,计算机系统700可操作以修改阈值比特率、选择第二组、发送第二请求以及接收第二块,如参考图5进一步描述的。作为进一步的示例,计算机系统700可操作以接收多个请求、识别特定请求、确定块的第一数目以及发送第一块,如参考图6进一步描述的。

计算机系统700可以被实现为各种设备或并入各种设备中,这些设备诸如平板计算机、个人数字助理(PDA)、掌上型计算机、膝上型计算机、智能电话、通信设备、网络家电、显示设备、计算设备或者能够(顺序地或以其他方式)执行一组指定要由机器采取的动作的指令的任意其他机器。另外,尽管例示了单个计算机系统700,术语“系统”还应被理解为包括独立或共同执行一组或多组指令以进行一个或多个计算机功能的系统或子系统的任意集合。

如在图7中例示的,计算机系统700包括处理器702,例如中央处理单元(CPU)。在特定实施例中,处理器702可以对应于图1中的处理器104。在特定实施例中,处理器702可以包括多个处理器。例如,处理器702可以包括分布式处理器、并行处理器或者两者。多个处理器可包含在单个设备或多个设备中,或者耦接到单个设备或多个设备。处理器702可以包括虚拟处理器。在特定实施例中,处理器702可以包括状态机、专用集成电路(ASIC)或者可编程门阵列(PGA)(例如,现场PGA)。

此外,计算机系统700可以包括可经由总线708彼此通信的主存储器(例如,图1中的存储器106)和静态存储器706。在特定实施例中,主存储器704包括图1中的指令108。如所示出的,计算机系统700还可以包括或者耦接到显示单元710,诸如液晶显示器(LCD)、有机发光二极管(OLED)、平板显示器、固态显示器或投影显示器。另外,计算机系统700可以包括诸如键盘、远程控制设备之类的输入设备712和诸如鼠标之类的光标控制设备714。在特定实施例中,光标控制设备714可并入远程控制设备中。计算机系统700还可以包括盘驱动单元716、诸如扬声器之类的信号发生设备718以及网络接口设备720。网络接口设备720可以经由网络726而耦接到其他设备(未示出)。例如,网络接口设备720可耦接到图1中的设备102、160、162、164、166、168和跟踪设备112中的一个或多个。在特定实施例中,计算机系统700中的组件中的一个或多个可以对应于图1中的设备102、160、162、164、166、168和跟踪设备112中的一个或多个,或者包含在图1中的设备102、160、162、164、166、168和跟踪设备112中的一个或多个中。

在特定实施例中,如在图7中所述,盘驱动单元716可以包括有形计算机可读存储设备722,其中可以嵌入一组或多组指令108,例如软件。此外,指令108可以体现如在这里描述的方法或逻辑中的一种或多种。在特定实施例中,在由计算机系统700执行期间,指令108可以完全、或至少部分地驻留在存储器106、静态存储器706内和/或在处理器702内。处理器702可以执行指令108以进行对应于如在这里描述的方法或逻辑中的一种或多种的操作。处理器702可以直接进行所述操作,或者处理器702可以辅助、指示另一设备或组件或者与之协作来进行所述操作。

在替代实施例中,可以构建诸如专用集成电路、可编程逻辑阵列和其他硬件设备之类的专用硬件实现,以实现在这里描述的方法中的一种或多种。可以包括各个实施例的装置和系统的应用可以广泛地包括多种多样的电子和计算机系统。利用具有相关控制的两个或更多个特定的互连硬件模块或设备,或者作为专用集成电路的多个部分,在这里描述的一个或多个实施例可以实现功能。因此,本系统包含软件、固件和硬件实现。

根据本公开的各个实施例,在这里描述的方法可以由可由计算机系统执行的软件程序实现。此外,在示例性的非限制性实施例中,实现可以包括分布式处理和并行处理。可替代地,虚拟计算机系统处理可以用来实现如在这里描述的方法或功能中的一种或多种。

本公开描述了包括用来使能自适应比特率流送的指令108的计算机可读存储设备。此外,可以经由网络接口设备720(例如,经由自适应比特率流送应用或程序或两者的上传和/或下载)通过网络726发送或接收指令108。

虽然计算机可读存储设备被示出为单个设备,但是术语“计算机可读存储设备”包括单个设备或多个设备,诸如集中式或分布式存储装置和/或存储一组或多组指令的关联的高速缓冲存储器。术语“计算机可读存储设备”还应包括能够存储用于由处理器执行的一组指令或者使计算机系统进行在这里公开的方法或操作中的任意一种或多种的任意设备。

在特定的非限制性的示例性实施例中,计算机可读存储设备可以包括诸如存储卡或者容纳一个或多个非易失性只读存储器的其他封装之类的固态存储器。此外,计算机可读存储设备可以是随机存取存储器或者其他易失性可重写存储器。另外,计算机可读存储设备可以包括磁光介质或光学介质,诸如盘或带。计算机可读存储设备是制品而不是信号。

还应当注意到,可以将实现所公开的方法的软件存储在存储设备上,该存储设备诸如:盘或带;磁光设备或光学设备,诸如盘;或者固态设备,诸如存储卡或者容纳一个或多个只读(非易失性)存储器、随机存取存储器或者其他可重写(易失性)存储器的其他封装。

尽管本说明书参考特定标准和协议描述了可实现在特定实施例中的组件和功能,但是权利要求不限于这样的标准和协议。例如,用于因特网、其他分组交换网传输的标准以及用于查看媒体内容的标准表示现有技术的示例。这样的标准周期性地被具有基本相同功能的较快或较高效的等价物取代。因此,具有与在这里公开的那些功能相同或类似的功能的替代标准和协议被视为其等价物。

此外,尽管已经在这里例示并描述了具体实施例,但是应当认识到设计用来实现相同或类似目的的任何后续布置都可代替所示出的具体实施例。本公开旨在覆盖各种实施例的任意和所有后续的改编或变型。在回顾本说明书之后,以上实施例的组合和未在这里具体描述的其他实施例对本领域技术人员将是明显的。

本公开的摘要是在它将不被用来解释或者限制权利要求的范围或含义的理解下提交的。另外,在前述具体实施方式中,为了使公开流畅的目的,各个特征可以成组或者在单个实施例中描述。本公开不应解释为反映所要求保护的实施例需要比在每个权利要求中明确记载的特征更多的特征的意图。如下列权利要求反映的,发明的主题可针对少于公开的实施例中的任何一个的所有特征的情况。因此,下列权利要求被并入具体实施方式中,每个权利要求独立地限定单独要求保护的主题。

上面公开的主题应视为例示性的,而非限制性的,并且附加的权利要求旨在覆盖所有这样的修改、增强以及落在本公开的范围内的其它实施例。因此,在法律允许的最大程度上,本公开的范围应由下列权利要求及其等价物的最广义的可容许的解释来确定,而不应受前述具体实施方式制约或限制。

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