使用自适应缓冲区流式传送视频内容的方法、系统和介质
1.对于相关申请的交叉引用
2.本技术要求在2019年10月14日提交的美国临时专利申请第62/914,978号的权益,该申请通过引用整体并入本文。
技术领域
3.所公开的主题涉及用于使用自适应缓冲区流式传送视频内容的方法、系统和介质。
背景技术:4.用户经常将媒体内容(例如,视频、电视节目、电影、音乐等)从媒体内容共享服务流式传送到用户设备(例如,移动电话、平板电脑、智能电视、媒体播放器等)。流式传送媒体内容项的用户设备可以缓冲媒体内容项,使得在用于流式传送媒体内容项的网络连接质量下降或滞后的情况下,媒体内容的一部分可用于呈现。在许多情况下,用户设备使用固定的缓冲区大小。在一些这样的情况下,在呈现存储的部分之前用户设备的用户停止呈现媒体内容项的情况下,服务器可以发送存储在缓冲区中的未呈现的媒体内容项的部分。对于服务器和用户设备而言,发送缓冲但未呈现的媒体内容项的部分可能是资源浪费。
5.因此,希望提供用于流式传送视频内容的新方法、系统和介质。
技术实现要素:6.提供了用于使用自适应缓冲区流式传送视频内容的方法、系统和介质。(“自适应”缓冲区提供具有可根据需要更改大小(例如,存储容量)的存储器存储,而固定缓冲区提供固定大小的存储器存储)
7.根据所公开主题的一些实施例,提供了一种用于使用缓冲区流式传送视频内容的方法,所述方法包括:从用户设备向服务器发送对于流式传送视频内容项的请求;在所述用户设备处从所述服务器接收预测放弃分布,所述预测放弃分布指示所述用户设备的用户在所述视频内容项的对应多个呈现时间点处停止所述视频内容项的呈现的多个似然性;在所述用户设备处从所述服务器接收所述视频内容项的第一部分;将所述视频内容项的第一部分存储在所述用户设备的具有第一大小的缓冲区中;使所述用户设备呈现所述视频内容项;基于所述预测放弃分布来确定所述缓冲区的第二大小;将所述缓冲区的大小修改为所述第二大小;基于所述缓冲区的第二大小从所述服务器请求所述视频内容项的第二部分;从所述服务器接收所述视频内容项的第二部分;以及在继续呈现所述视频内容项时,将所述视频内容项的第二部分存储在具有所述第二大小的所述缓冲区中。通常,预测放弃分布指示用户设备的用户停止呈现视频内容项的相应似然性的呈现时间点包括在内容项的开始时间点和内容项的结束时间点之间的至少一个时间点,并且可以包括在内容项的开始时间点和结束时间点之间的多个不同时间点。此外,预测放弃分布指示用户设备的用户停止呈现视频内容项的相应似然性的呈现时间点可以包括视频内容项的结束点。作为另一示
例,预测放弃分布指示用户设备的用户停止视频内容项的呈现的相应似然性的呈现时间点可以在点d/n、2d/n
…
(n-1)d/n处,其中,n为正整数,d为视频内容项的持续时间,可选地还可以包括视频内容项结束时的呈现时间点。
8.在一些实施例中,基于所述预测放弃分布来确定所述缓冲区的第二大小包括:确定所述用户设备的用户停止呈现所述视频内容项的所述多个似然性中的似然性低于预定阈值;以及响应于确定所述多个似然性中的所述似然性低于所述预定阈值,确定所述缓冲区的第二大小将大于所述第一大小。
9.在一些实施例中,基于所述预测放弃分布来确定所述缓冲区的第二大小包括:确定所述用户设备的用户停止呈现所述视频内容项的所述多个似然性中的似然性超过预定阈值;以及响应于确定所述多个似然性中的所述似然性超过所述预定阈值,确定所述缓冲区的第二大小将小于所述第一大小。
10.在一些实施例中,该方法还包括:基于所述预测放弃分布来确定所述缓冲区的第三大小;以及,在继续呈现所述视频内容项时,将所述缓冲区的大小修改为所述第三大小。
11.在一些实施例中,所述预测放弃分布被归一化为所述视频内容项的持续时间。
12.在一些实施例中,所述预测放弃分布是基于所述视频内容项的持续时间来计算的。
13.在一些实施例中,所述预测放弃分布是基于所述视频内容项的特性来计算的。
14.根据所公开主题的一些实施例,提供了一种用于使用缓冲区流式传送视频内容的系统,所述系统包括硬件处理器,所述硬件处理器被配置成:从用户设备向服务器发送对于流式传送视频内容项的请求;在所述用户设备处从所述服务器接收预测放弃分布,所述预测放弃分布指示所述用户设备的用户在所述视频内容项的对应多个呈现时间点处停止所述视频内容项的呈现的多个似然性;在所述用户设备处从所述服务器接收所述视频内容项的第一部分;将所述视频内容项的第一部分存储在所述用户设备的具有第一大小的缓冲区中;使所述用户设备呈现所述视频内容项;基于所述预测放弃分布来确定所述缓冲区的第二大小;将所述缓冲区的大小修改为所述第二大小;基于所述缓冲区的第二大小从所述服务器请求所述视频内容项的第二部分;从所述服务器接收所述视频内容项的第二部分;以及在继续呈现所述视频内容项时,将所述视频内容项的第二部分存储在所述第二大小的所述缓冲区中。
15.根据所公开主题的一些实施例,提供了一种计算机可读介质,所述计算机可读介质可以是非暂时性计算机可读介质,但是这些实施例不限于非暂时性计算机可读介质。在一些实施例中,计算机可读介质包含计算机可执行指令,当由处理器执行时,所述计算机可执行指令使所述处理器执行用于使用缓冲区流式传送视频内容的方法,所述方法包括:从用户设备向服务器发送对于流式传送视频内容项的请求;在所述用户设备处从所述服务器接收预测放弃分布,所述预测放弃分布指示所述用户设备的用户在所述视频内容项的对应多个呈现时间点处停止所述视频内容项的呈现的多个似然性;在所述用户设备处从所述服务器接收所述视频内容项的第一部分;将所述视频内容项的第一部分存储在所述用户设备的具有第一大小的缓冲区中;使所述用户设备呈现所述视频内容项;基于所述预测放弃分布来确定所述缓冲区的第二大小;将所述缓冲区的大小修改为所述第二大小;基于所述缓冲区的第二大小从所述服务器请求所述视频内容项的第二部分;从所述服务器接收所述视
频内容项的第二部分;以及在继续呈现所述视频内容项时,将所述视频内容项的第二部分存储在具有所述第二大小的所述缓冲区中。根据所公开主题的其它实施例,提供了一种计算机可读介质,所述计算机可读介质可以是非暂时性计算机可读介质,但是这些实施例不限于包含计算机可执行指令的非暂时性计算机可读介质,其中当由处理器执行时,所述指令使处理器执行根据本文所述的任何实施例或实现方式的方法。
16.根据所公开主题的一些实施例,提供了一种用于使用缓冲区流式传送视频内容的系统,所述系统包括:用于从用户设备向服务器发送对于流式传送视频内容项的请求的装置;用于在所述用户设备处从所述服务器接收预测放弃分布的装置,所述预测放弃分布指示所述用户设备的用户在所述视频内容项的对应多个呈现时间点处停止所述视频内容项的呈现的多个似然性;用于在所述用户设备处从所述服务器接收所述视频内容项的第一部分的装置;用于将所述视频内容项的第一部分存储在所述用户设备的具有第一大小的缓冲区中的装置;使所述用户设备呈现所述视频内容项;用于基于所述预测放弃分布来确定所述缓冲区的第二大小的装置;用于将所述缓冲区的大小修改为所述第二大小的装置;用于基于所述缓冲区的第二大小从所述服务器请求所述视频内容项的第二部分的装置;用于从所述服务器接收所述视频内容项的第二部分的装置;以及,用于在继续呈现所述视频内容项时,将所述视频内容项的第二部分存储在具有所述第二大小的所述缓冲区中的装置。
附图说明
17.当结合以下附图考虑时,参照以下对公开主题的详细描述,可以更充分地理解公开主题的各种目的、特征和优点,在附图中,相同的附图标记表示相同的元件。
18.图1示出了根据所公开主题的一些实施例的用于使用自适应缓冲区来流式传送视频内容的过程的说明性示例。
19.图2示出了根据所公开主题的一些实施例的用于生成预测放弃分布的过程的说明性示例。
20.图3示出了根据所公开主题的一些实施例的适用于实现本文所述的用于使用自适应缓冲区流式传送视频内容的机制的说明性系统的示意图。
21.图4示出了根据所公开主题的一些实施例的可以在图3的服务器和/或用户设备中使用的硬件的详细示例。
具体实施方式
22.根据各种实施例,提供了用于使用自适应缓冲区流式传送视频内容的机制(其可以包括方法、系统和介质)。
23.在一些实施例中,本文描述的机制可以基于观看媒体内容的用户将在媒体内容的结束之前停止媒体内容的呈现(有时称为视频回放放弃)的似然性来修改用于存储正在流式传送的媒体内容的缓冲区的大小。
24.在一些实施例中,将媒体内容项流式传送到用户设备的服务器可以将预测放弃分布发送到用户设备,该预测放弃分布指示用户设备的用户将在媒体内容项内的不同回放时间点处停止呈现媒体内容项的似然性。在一些实施例中,用户设备可以接收预测放弃分布,并且可以在用户设备呈现视频内容项的部分之前修改用户设备用来存储从服务器接收到
的该媒体内容项的部分的缓冲区的大小。在一些实施例中,用户设备可以以任何合适的方式修改缓冲区的大小。例如,在一些实施例中,用户设备可以最初将流式传送的媒体内容项的部分存储在第一大小的缓冲区中,并且响应于接收到指示用户设备的用户相对可能停止媒体内容项的呈现的预测放弃分布,可以减小缓冲区的大小,使得从服务器请求并由用户设备存储更少的媒体内容项。相反,响应于接收到指示用户设备的用户不太可能停止媒体内容项的呈现的预测放弃分布,用户设备可以增加缓冲区的大小,使得从服务器请求并由用户设备存储更多的媒体内容项。
25.在一些实施例中,本文描述的机制可以以任何合适的方式并且基于任何合适的信息来确定预测放弃分布。例如,在一些实施例中,将媒体内容流式传送到用户设备的服务器可以确定对于特定媒体内容项而言的预测放弃分布,该预测放弃分布指示观看媒体内容项的用户将在媒体内容项的不同呈现时间点处停止呈现媒体内容项的似然性。在一些实施例中,可以基于与媒体内容项相关联的任何合适信息来确定特定媒体内容项的预测放弃分布,所述任何合适信息例如是媒体内容项的持续时间、媒体内容项是否包括音乐、媒体内容项是否被内联插入网站(例如,在媒体内容项列表中)或社交网络帖子中、媒体内容项是否被配置成自动播放、与媒体内容项相关联的音频内容是否默认静音和/或任何其它合适的信息。在一些实施例中,可以基于其它用户对媒体内容项的先前观看来确定对于特定媒体内容项的预测放弃分布,其中其它用户对媒体内容项的先前观看例如是完整观看媒体内容项的用户的百分比、用户在停止媒体内容项的呈现之前观看媒体内容项的平均持续时间和/或任何其它合适的先前观看信息。
26.注意,虽然这里描述的机制一般被描述为与视频内容相关,但是在一些实施例中,可以与流式传送任何合适类型的媒体内容相关地使用这里描述的机制,其中任何合适类型的媒体内容例如是音频内容(例如,音乐、播客、直播音频内容和/或任何其它合适类型的音频内容)、视频内容(例如,视频、电视节目、电影、直播视频内容、游戏和/或任何其它合适类型的视频内容)和/或任何其它合适类型的媒体内容)。
27.转向图1,示出了根据所公开主题的一些实施例的、用于使用自适应缓冲区流式传送视频内容的过程的说明性示例100。在一些实施例中,可以在任何合适的用户设备上执行过程100的框,任何合适的用户设备例如是移动电话、平板电脑、膝上型电脑、台式电脑、智能电视、媒体播放器、连接到显示设备的流媒体设备、游戏控制台和/或任何其它合适类型的用户设备。
28.过程100可以在102处通过从用户设备向服务器发送对于流式传送视频内容项的请求而开始。在一些实施例中,视频内容项可以对应于任何合适类型的视频内容,例如用户生成的视频、音乐视频、电视节目、电影、直播视频和/或任何其它合适的类型的视频内容。在一些实施例中,过程100可以响应于任何合适的信息来发送对于流式传送视频内容项的请求。例如,在一些实施例中,响应于在用户设备处接收到指示视频内容项的选择的用户输入,过程100可以发送对于流式传送视频内容项的请求。作为另一个示例,在一些实施例中,过程100可以响应于确定页面(例如,浏览器窗口、社交网络服务的馈送和/或任何其它合适的页面)已滚动到包括其中已嵌入视频内容项的部分来发送对于流式传送视频内容项的请求。注意,在一些实施例中,可以通过在用户设备上执行的任何合适的应用程序而从用户设备发送对于流式传送视频内容项的请求。在一些这样的实施例中,应用程序可以与任何合
适的实体或服务相关联,例如托管和/或流式传送所请求的视频内容项的媒体内容共享服务、社交网络服务和/或任何其它合适的实体或服务。
29.在一些实施例中,对于流式传送视频内容项的请求可以包括任何合适的信息,例如视频内容项的标识符、与执行过程100的用户设备相关的信息(例如,用户设备的型号、用户设备的标识符、用户设备的显示器的屏幕大小或分辨率、用户设备和/或与用户设备相关联的显示器的当前定向、缓冲区容量信息和/或任何其它合适的设备信息)、与用户设备的网络连接有关的信息(例如,网络连接的当前带宽、网络连接的当前时延、与网络连接相关联的当前信号强度和/或任何其它合适的网络信息)和/或任何其它合适的信息)和/或任何其它合适的信息。
30.在104处,过程100可以从服务器接收对应于视频内容项的预测放弃分布。在一些实施例中,预测放弃分布可以指示任何合适的信息。例如,在一些实施例中,预测放弃分布可以指示观看视频内容项的用户将在视频内容项的不同时间点处停止呈现视频内容项的概率或似然性。在一些实施例中,可以将预测放弃分布归一化为视频内容项的长度,使得预测放弃分布指示从[0,1]开始的预测放弃概率,其中,0指示视频内容项的初始时间点,而1指示视频内容项的完整持续时间。预测放弃分布的示例可以是:{(0.25,40);(0.5,80);(1,90)},表示用户将在视频内容项持续时间的0.25处停止呈现视频内容项的似然性为40%、用户将在视频内容项持续时间的0.5处停止呈现视频内容项的似然性为80%以及用户将在视频内容项持续时间的完整长度处停止呈现视频内容项的似然性为90%。在一些实施例中,预测放弃分布可以指示视频内容项的任何合适数量的时间点的概率。例如,在一些实施例中,预测放弃分布可以指示沿着连续时间分布的概率。作为另一个示例,在一些实施例中,预测放弃分布可以指示以视频内容项的完整持续时间的任何合适的预定间隔的概率(例如,以视频内容项持续时间的0.1的间隔,以视频内容项持续时间的0.01的间隔和/或以任何其它合适的间隔)。作为又一示例,在一些实施例中,预测放弃分布可以指示在视频内容项的任何合适的预定时间点(例如,每秒、每十秒、每分钟和/或在任何其它合适的时间点)的概率。
[0031]
在一些实施例中,预测放弃分布可以允许用户设备计算用户设备的用户将在当前时间t0和未来时间t之间停止视频内容项的呈现的概率,例如:
[0032]
p(t≤t0+t|t>t0)
[0033]
在一些实施例中,该概率可以表示为:
[0034][0035]
其中,f表示服务器计算的放弃分布,其中,s表示用户将至少在时间t0之前观看视频内容项的概率。注意,在一些实施例中,s(t0)=1-f(t0)。下面结合图2的202描述用于计算放弃分布f的更详细的技术。
[0036]
注意,在一些实施例中,预测放弃分布可以由服务器以任何合适的方式并基于任何合适的信息(例如在图2中所示和下面结合图2描述的信息)来确定。
[0037]
在106处,用户设备可以从服务器接收视频内容项的第一部分。在一些实施例中,视频内容项的第一部分可以对应于视频内容项的任何合适的部分,并且可以具有任何合适的大小(例如,特定数量的千字节的数据和/或任何其它合适的大小)和/或持续时间(例如,
一秒、两秒、五秒和/或任何其它合适的持续时间)。
[0038]
在108处,过程100可以将视频内容项的第一部分存储在具有第一大小的用户设备的缓冲区中。在一些实施例中,可以基于任何合适的信息来设置缓冲区的第一大小。例如,在一些实施例中,缓冲区的第一大小可以是默认值(例如,由用户设备设置的默认值、由在用户设备上执行的用于流式传送媒体内容的应用程序设置的默认值以及/或者任何其它合适的默认值)。在一些实施例中,缓冲区的第一大小可以对应于任何合适的大小(例如,媒体内容的预定数量的帧、视频内容项的第一部分的预定大小和/或任何其它合适的大小)和/或任何合适的视频内容持续时间(例如,两秒、五秒、十秒和/或任何其它合适的持续时间)。
[0039]
在110处,过程100可以开始呈现视频内容项的第一部分。在一些实施例中,过程100可以以任何合适的方式开始呈现视频内容项的第一部分。例如,在一些实施例中,过程100可以使得在呈现视频内容项的第一部分之前从缓冲区中检索视频内容项的第一部分。作为另一示例,在一些实施例中,过程100可以使视频内容项的第一部分呈现在执行过程100的用户设备上呈现的视频播放器窗口内。在一些这样的实施例中,视频播放器窗口可以呈现在任何合适的用户界面内,例如在用于从特定媒体内容共享服务流式传送媒体内容的应用程序内呈现的用户界面、在浏览器窗口内呈现的用户界面和/或任何其它合适的用户界面内。
[0040]
在112处,过程100可以基于预测放弃分布来确定更新的缓冲区大小。在一些实施例中,过程100可以以任何合适的方式确定更新的缓冲区大小。例如,在一些实施例中,过程100可以响应于确定预测的放弃似然性超过预定阈值(例如,大于用户将停止视频内容项的呈现的50%的似然性、大于用户将停止视频内容项的呈现的70%的似然性和/或任何其它合适的似然性)而确定更新的缓冲区大小,使得更新的缓冲区大小小于缓冲区的第一大小。作为另一示例,在一些实施例中,过程100可以响应于确定预测的放弃似然性低于预定阈值(例如,小于用户将停止呈现视频内容项的10%的似然性、小于用户将停止呈现视频内容项的20%的似然性和/或任何其它合适的似然性)而确定更新的缓冲区大小,使得更新的缓冲区大小大于缓冲区的第一大小。注意,在一些实施例中,可以使用任何合适的预定阈值来确定是否要增加或减少缓冲区大小。
[0041]
注意,在一些实施例中,过程100可以基于在特定时间范围内的预测的放弃似然性来确定更新的缓冲区大小。例如,在一些实施例中,过程100可以基于从视频内容项的当前呈现时间点开始的预定持续时间内(例如,下一分钟内、接下来的五分钟内和/或任何其它合适的持续时间)的预测的放弃似然性来确定更新的缓冲区大小。作为更特别的示例,使用上面给出的p(t≤t0+t|t>t0)的放弃概率分布,其中,t0指示当前时间,过程100可以确定用户设备的用户将在当前时间t0和未来时间t之间停止呈现视频内容项的概率,其中,t是未来任何合适的预定持续时间(例如,五秒、十秒、一分钟、三分钟、五分钟和/或任何其它合适的持续时间)。注意,在一些实施例中,可以基于当前缓冲区大小(例如,第一缓冲区大小,如上面结合108所描述的)来确定未来时间t。例如,在当前缓冲区大小对应于视频内容项的特定持续时间(例如,五秒、十秒和/或任何其它合适的持续时间)的情况下,未来时间t可以对应于与当前缓冲区大小相关联的视频内容项的持续时间。附加地或替代地,注意,在一些实施例中,可以基于视频内容项的总持续时间来确定未来时间t。
[0042]
在一些实施例中,过程100可以使用任何合适的技术或技术的组合基于预测放弃
分布来确定更新的缓冲区大小。例如,在一些实施例中,过程100可以通过将缓冲区大小增加或减小固定量来将缓冲区的大小从第一大小进行修改。作为另一个示例,在一些实施例中,过程100可以基于用户设备的用户将停止呈现视频内容项的似然性(如使用预测放弃分布计算的)来确定缓冲区大小的改变。作为更特别的示例,在过程100基于确定用户将停止呈现视频内容项的似然性低于预定阈值而确定要增加缓冲区大小的情况下,过程100可以基于似然性低于预定阈值的量来确定缓冲区大小增加的大小。作为具体示例,在过程100将用户将停止呈现视频内容项的似然性计算为40%而其中预定阈值为60%的情况下,过程100可以确定缓冲区大小将增加第一量(例如,保持另外三秒的视频内容项、保持另外五秒的视频内容项和/或任何其它合适的量)。继续这个具体示例,在过程100将用户将停止呈现视频内容项的似然性计算为10%而其中预定阈值为60%的情况下,过程100可以确定缓冲区大小要增加大于第一量的第二量。注意,在一些实施例中,例如,响应于确定用户将停止视频内容项的呈现的似然性超过预定阈值,过程100可以使用类似技术确定小于第一缓冲区大小的更新缓冲区大小。
[0043]
在114处,过程100可以将缓冲区大小从第一大小修改为更新的缓冲区大小。在一些实施例中,过程100可以以任何合适的方式修改缓冲区大小。例如,在一些实施例中,过程100可以将功能调用发送到为媒体内容分配缓冲区的任何合适的功能。在一些这样的实施例中,过程100可以将更新的缓冲区大小作为参数例如发送到缓冲区控制器。
[0044]
在116处,过程100可以从服务器请求视频内容项的第二部分。在一些实施例中,过程100可以基于任何合适的信息来请求视频内容项的第二部分。例如,在一些实施例中,响应于确定存储在缓冲区中的视频内容的量已经下降到预定阈值以下(例如,小于在缓冲区中剩余的视频内容项的预定持续时间和/或任何其它合适量的视频内容项),过程100可以请求视频内容项的第二部分。作为另一示例,在一些实施例中,过程100可以响应于确定已经呈现了视频内容项的第一部分的多于预定的量来请求视频内容项的第二部分。注意,在一些实施例中,过程100可以将更新的缓冲区大小的指示发送到服务器。
[0045]
注意,在一些实施例中,基于对于自先前对于一部分的请求以来(例如,自在102处发送的对于流式传送视频内容项的请求和/或任何其它合适的先前发送的请求以来)在对于视频内容项的部分的请求之间,是否已经过去了一时间延迟的确定,过程100可以从服务器请求视频内容项的第二部分。在一些实施例中,可以基于预测放弃分布来确定时间延迟。例如,在通过下面引述的在上面给出的公式来给定用户将在t和t0之间停止呈现视频内容项的示例预测概率的情况下:
[0046][0047]
概率可以表示为:
[0048][0049]
在一些实施例中,x可以表示在放弃概率下降到阈值p之前执行过程100的用户设备要到达的媒体位置。在一些实施例中,放弃分布可以表示为:
[0050][0051]
在一些实施例中:
[0052][0053]
在一些实施例中,时间可以计算为:
[0054][0055]
时间延迟可以计算为:
[0056][0057]
在118处,过程100可以响应于请求从服务器接收视频内容项的第二部分。在一些实施例中,视频内容项的第二部分可以具有任何合适的大小或持续时间。注意,在一些实施例中,视频内容项的第二部分可以具有与以上结合106描述的视频内容项的第一部分的大小或持续时间不同的大小或持续时间。例如,在一些实施例中,视频内容项的第二部分可以具有与更新的缓冲区大小相对应的大小或持续时间。作为更特别的示例,在一些实施例中,在过程100修改缓冲区大小(例如,如上文结合114所述)以具有比缓冲区的第一大小相对更小的缓冲区大小的情况下,视频内容项的第二部分可以具有比视频内容项的第一部分更小的大小或更短的持续时间。作为另一个更特别的示例,在一些实施例中,在过程100修改缓冲区大小(例如,如上文结合114所述)以具有比缓冲区的第一大小相对更大的缓冲区大小的情况下,视频内容项的第二部分可以具有比视频内容项的第一部分更大的大小或更长的持续时间。
[0058]
在120处,在继续呈现视频内容项时,过程100可以将视频内容项的第二部分存储在缓冲区中。在一些实施例中,过程100可以继续以任何合适的方式呈现视频内容项。例如,在一些实施例中,过程100可以继续从缓冲区中检索视频内容项的部分并且在视频播放器窗口中呈现所检索的视频内容项的部分,例如上面结合106所描述的。
[0059]
在一些实施例中,过程100可以循环回到112并且可以基于预测放弃分布来确定更新的缓冲区大小(即,可以确定用户设备的缓冲区的第三大小),并且可以在继续呈现内容项时将缓冲区大小修改为在114处的更新的(第三)缓冲区大小。注意,在一些实施例中,过程100可以基于预测放弃分布使缓冲区的大小在视频内容项的呈现期间依序改变多次。在一些这样的实施例中,过程100可以使缓冲区的大小在视频内容项的呈现期间改变任何合适的次数(例如,一次、两次、三次、十次和/或任何其它合适的次数)。作为具体示例,在预测放弃分布指示用户相对可能在视频内容项的开始处停止视频内容项的呈现的情况下,过程100可以在视频内容项的开始部分的呈现期间使缓冲区具有对应小的大小。继续这个示例,在用户在视频内容项的开始部分期间没有停止视频内容项的呈现并且其中预测放弃分布指示用户不太可能在视频内容项的中间部分期间停止视频内容项的呈现的情况下,过程100可以使缓冲区大小在视频内容项的中间部分的呈现期间增加。进一步继续该示例,在其中用户在视频内容项的中间部分期间没有停止视频内容项的呈现并且其中预测放弃分布
指示用户可能在视频内容项的完整持续时间之前的视频内容项的结束部分期间停止视频内容项的呈现的情况下,过程100可以使缓冲区大小在视频内容项的结束部分的呈现期间减小。
[0060]
转向图2,示出了根据所公开主题的一些实施例的用于确定预测放弃分布的过程的说明性示例200。在一些实施例中,可以由服务器(例如,将媒体内容托管和/或流式传送到用户设备的服务器)执行过程200的框。注意,在一些实施例中,服务器可以与托管任何合适的媒体内容(例如,用户生成的媒体内容、视频、电视节目、电影、音乐和/或任何其它合适的类型的媒体内容)的特定媒体内容共享服务相关联,并将媒体内容流式传送到用户设备。
[0061]
过程200可以通过在202处计算视频内容项的预测放弃分布而开始。如上面结合图1的104所述的,在一些实施例中,预测放弃分布可以指示任何合适的信息。例如,在一些实施例中,预测放弃分布可以指示观看视频内容项的用户将在视频内容项的不同时间点处停止呈现视频内容项的概率或似然性。在一些实施例中,可以将预测放弃分布归一化为视频内容项的长度,使得预测放弃分布指示从[0,1]开始的预测放弃概率,其中,0表示视频内容项的初始时间点,并且其中,1指示视频内容项的完整持续时间。如上文结合图1的104所述的,预测放弃分布的示例可以包括以下的值:{(0.25,40);(0.5,80);(1,100)},表示用户将在视频内容项持续时间的0.25处停止呈现视频内容项的40%的似然性、用户将在视频内容项持续时间的0.5处停止呈现视频内容项的80%的似然性以及用户将在视频内容项持续时间的完整长度处停止呈现视频内容项的100%的似然性。注意,在一些实施例中,预测放弃分布可以是完全连续的分布,使得可以在任何时间点处计算预测的放弃概率。或者,在一些实施例中,预测放弃分布可以指示视频内容项的任何合适数量的时间点的概率。例如,在一些实施例中,预测放弃分布可以指示以视频内容项的完整持续时间的任何合适的预定间隔的概率(例如,以视频内容项持续时间的0.1的间隔、以视频内容项持续时间的0.01的间隔和/或以任何其它合适的间隔)。作为另一示例,在一些实施例中,预测放弃分布可以指示在视频内容项的任何合适的预定时间点(例如,每秒、每十秒、每分钟和/或在任何其它合适的时间点)处的概率。
[0062]
在一些实施例中,过程200可以以任何合适的方式并使用任何合适的技术来计算预测放弃分布。例如,在一些实施例中,过程200可以对在沿着分布的不同点处指示用户将停止视频内容项的呈现的似然性或概率的任何合适的分布进行建模。在一些实施例中,过程200可以使用与任何合适的用户组之前观看的视频内容项相关的数据来生成模型。注意,在一些实施例中,过程200可以使用任何合适大小(例如,数千个先前观看的视频内容项、数百万个先前观看的视频内容项和/或任何其它合适大小)的数据集来生成模型。另外,注意,在一些实施例中,过程200可以在生成模型之前以任何合适的方式预处理用于生成模型的数据。例如,在一些实施例中,过程200可以丢弃任何合适的异常值,例如被观看了零时间的持续时间的视频内容项(指示视频内容项被意外选择)和/或任何其它合适的异常值。在一些实施例中,视频内容项的持续时间可以被归一化,使得范围的分布跨越[0,1]。在一些实施例中,可以使用任何合适的分布,例如kumaraswamy分布、beta分布、logit变换分布和/或任何其它合适的分布。
[0063]
在一些实施例中,过程200可以使用任何合适的技术或技术组合对分布进行建模。例如,在一些实施例中,可以将分布建模为回归的单膨胀混合。作为更具体的示例,在一些
实施例中,可以将分布建模为两个或更多个回归的混合或组合,例如对用户观看整个视频内容项的似然性进行建模的第一回归和对用户在不同时间点处停止呈现视频内容项的似然性进行建模的第二回归。在一些实施例中,包括在回归混合中的每个回归可以是不同类型的回归(例如,kumaraswamy回归、beta回归、逻辑回归和/或任何其它合适类型的回归)。例如,在一些实施例中,对用户观看整个视频内容项的似然性进行建模的第一回归可以是逻辑回归,而对用户在不同的时间点处停止呈现视频内容项的似然性进行建模的第二回归可以是kumaraswamy回归。注意,在一些实施例中,对用户观看整个视频内容项的似然性进行建模的第一回归可以是任何合适类型的分类器,例如梯度增强树分类器和/或任何其它合适类型的分类器。另外,注意,在一些实施例中,回归混合中的每个回归可以具有对应于任何合适分量或预测器的任何合适数量的项,并且可以具有任何合适数量的交叉项。例如,在一些实施例中,回归混合的第一回归和第二回归都可以包括相同的预测器和相同的交叉项。作为另一示例,在一些实施例中,第二回归可以是包括任何合适的二次项的kumaraswamy回归。
[0064]
注意,在一些实施例中,在过程200生成回归混合(其中,第一回归对用户观看完整视频内容项的似然性进行建模)的情况下,过程200可以在训练数据集的生成期间确定包括在训练集中的视频内容项是否以任何合适的方式被完整观看。例如,在一些实施例中,过程200可以确定(例如,使用与每个视频内容项的回放相关联的日志数据)用于呈现视频内容项的视频播放器的状态是否以任何合适的方式改变,从而表明视频内容项由视频播放器完整呈现。
[0065]
另外,请注意,在一些实施例中,除了生成如上所述的回归的混合之外,在一些实施例中,过程200可以处理用于生成模型的数据以将数据点收缩到任何合适的中间值,例如0.5,使得数据中不包含零值或一值。在一些实施例中,过程200可以变换数据点以使用任何合适的收缩函数来收缩数据点。
[0066]
在一些实施例中,每个回归可以基于用于生成回归的不同的预测器集。在一些实施例中,该预测器集可以包括任何合适的因素或变量。例如,在一些实施例中,该预测器集可以包括视频内容项的特性,例如视频内容项的持续时间、视频内容项的持续时间的对数、视频内容项是否包括背景音乐、视频内容项是否是广告,视频内容项是否是可跳过的广告和/或视频内容项的任何其它合适的特性。作为另一个示例,在一些实施例中,该预测器集可以包括与将视频内容项链接或嵌入在其它内容内(例如,在网页内、在社交网络帖子内、在消息内和/或在任何其它合适类型的内容内)的方式相关的特性,例如视频内容项被链接或嵌入的界面的类型(例如,视频内容项是否内嵌嵌入网站或社交网络帖子中、视频内容项是否已默认设置为自动播放,视频内容项是否已默认设置为静音、视频内容项是否已设置为在内嵌嵌入时具有静音的音频内容和/或任何合适的特性)。作为又一个示例,在一些实施例中,该预测器集可以包括指示视频内容项的缓冲的信息,例如在视频内容项被暂停以重新缓冲的情况下用户将停止视频内容项的呈现的似然性、重新缓冲视频内容项所需的预计持续时间、将会重新缓冲视频内容项的预计次数和/或任何其它合适的缓冲信息。作为又一个示例,在一些实施例中,该预测器集可以包括与其它用户之前观看视频内容项的方式有关的信息,例如之前用户观看视频内容项的平均持续时间、完整观看视频内容项的用户的比例、在特定呈现时间点之前(例如,在视频内容项的中点之前、在特定呈现时间戳之前
和/或任何其它合适的时间点)停止视频内容项的呈现的用户的比例和/或任何其它合适的先前观看信息。作为进一步的示例,在一些实施例中,该预测器集可以包括与视频内容项当前被观看或先前被观看的方式相关的搜索信息(seek information),其中,视频回放期间的搜索指令可以被认为是播放放弃。
[0067]
在一些实施例中,过程200可以使用任何合适的技术或技术组合来拟合回归混合中的回归。例如,在一些实施例中,过程200可以使用期望最大化来为与每个回归相关联的每个预测器生成系数。作为更特别的示例,在一些实施例中,在回归混合中使用的kumaraswamy回归可以具有分布参数,该分布参数通过如下关系依赖于任何合适的预测器变量(如上文所述):log(a)=p*x和log(b)=q*x,其中,p和q是系数矩阵,x是协变量向量。在一些实施例中,过程200可以使用任何合适的技术或技术组合(例如,newton-raphson方法和/或任何其它合适的技术)使用最大似然性估计来估计模型参数(例如,系数矩阵p和q))。作为另一个示例,在一些实施例中,在逻辑回归用于对指示用户将观看完整视频内容项的似然性的第一回归建模的情况下,可以使用任何合适的技术或技术组合来计算与逻辑回归的任何合适的预测器相关联的系数。
[0068]
在204处,过程200可以从用户设备接收对于视频内容项的一部分的请求。在一些实施例中,过程200可以以任何合适的方式接收对于视频内容项的一部分的请求。例如,在一些实施例中,过程200可以接收用户设备的用户已经选择特定视频内容项以在用户设备上呈现的指示。作为另一示例,在一些实施例中,过程200可以接收这样的指示:其中嵌入了视频内容项的页面已经被导航使得视频内容项可见。
[0069]
注意,在一些实施例中,过程200可以从用户设备接收与用户设备相关的任何合适的信息(例如,用户设备的型号、用户设备的标识符、与用户设备相关联的显示器的屏幕大小或分辨率、用户设备和/或与用户设备相关联的显示器的当前定向和/或任何其它合适的信息)和/或与用户设备和用于接收流式传送的媒体内容的通信网络的连接相关的任何合适的信息(例如,连接的当前带宽、连接的当前时延、连接的当前信号强度、连接类型的标识符和/或任何其它合适的信息)。
[0070]
在206处,过程200可以将对应于所请求的视频内容项的预测放弃分布发送到用户设备。在一些实施例中,过程200可以以任何合适的方式发送预测放弃分布。例如,在预测放弃分布是连续分布的情况下,过程200可以将连续分布的参数发送到用户设备。作为另一示例,在一些实施例中,过程200可以将预测放弃分布格式化为数组,其中,数组的第一元素集指示从0到1归一化的视频内容项的不同时间点,并且其中,数组的第二元素集指示观看视频内容项的用户将在每个对应时间点处停止呈现视频内容项的似然性。在一些这样的实施例中,过程200可以将数组发送到用户设备。
[0071]
在208处,过程200可以将视频内容项的一部分发送到用户设备。注意,在一些实施例中,过程200可以在将视频内容项的一部分发送到用户设备之前识别与视频内容项的该一部分相对应的文件。例如,在一些实施例中,过程200可以识别与视频内容项的部分的版本相对应的文件,该视频内容项的部分的版本是基于与用户设备相关联的信息和/或与用户设备和通信网络的连接相关联的信息而识别的。作为更特别的示例,在一些实施例中,过程200可以基于与用户设备相关联的显示器的屏幕大小来识别与特定分辨率相关联的视频内容项的版本。作为另一个更特别的示例,在一些实施例中,过程200可以基于网络连接的
当前带宽来识别与特定分辨率相关联的视频内容项的版本。
[0072]
在210处,过程200可以可选地从用户设备接收对于视频内容项的第二部分的请求。在一些实施例中,对于视频内容项的第二部分的请求可以包括任何合适的信息。例如,在一些实施例中,对于视频内容项的第二部分的请求可以包括由用户设备使用的更新的缓冲区大小,例如上面结合图1的112-116所描述的。作为另一示例,在一些实施例中,对于视频内容项的第二部分的请求可以包括与用户设备使用的网络连接相关的任何合适的网络信息(例如,与连接相关联的当前带宽、与连接相关联的当前时延、与连接相关联的当前信号强度和/或任何其它合适的网络信息)。作为又一示例,在一些实施例中,对于视频内容项的第二部分的请求可以包括与用户设备相关的设备信息(例如,用户设备的当前缓冲区容量、由用户设备使用的缓冲区的当前缓冲区大小、与用户设备相关联的显示器的当前显示定向和/或任何其它合适的信息)。
[0073]
在212处,过程200可以响应于接收到请求而将视频内容项的第二部分发送到用户设备。在一些实施例中,过程200可以在发送被包括在与视频内容项的第二部分相关联的文件中的视频数据之前识别该文件。例如,在一些实施例中,过程200可以基于任何合适信息来识别与视频内容的特定分辨率相对应的文件,例如基于与用户设备的网络连接相关联的当前网络信息、基于与用户设备相关联的显示器的分辨率或大小和/或基于任何其它合适的信息。注意,在一些实施例中,视频内容项的第二部分可以具有任何合适的大小或持续时间。例如,在一些实施例中,视频内容项的第二部分可以具有与用户设备使用的更新缓冲区大小相对应的大小和/或持续时间。作为更具体的示例,在一些实施例中,在对于视频内容项的第二部分的请求指示用户设备已将缓冲区的大小修改为小于用于存储(例如,如在208处发送的)视频内容项的第一部分的缓冲区的大小的情况下,过程200可以发送比视频内容项的第一部分小和/或持续时间短于视频内容项的第一部分的视频内容项的第二部分。相反,在对于视频内容项的第二部分的请求指示用户设备已将缓冲区的大小修改为大于用于存储视频内容项的第一部分的缓冲区的大小的情况下,过程200可以发送比视频内容项的第一部分大和/或持续时间长于视频内容项的第一部分的视频内容项的第二部分。
[0074]
注意,在一些实施例中,在视频内容项是广告的情况下,过程200可以发送多于用户设备所请求的视频内容项的部分。例如,在一些实施例中,在对于视频内容项的第二部分的请求指示第二部分的大小相对较小和/或持续时间较短的情况下(例如,响应于确定用户设备的用户可能停止视频内容项的呈现),响应于确定视频内容项是广告,过程200可以发送多于视频内容项的所请求的量或持续时间。
[0075]
在一些实施例中,过程200可以循环回到210并且可以接收对于视频内容项的另一部分的另一请求。在一些这样的实施例中,过程200可以循环通过210和212直到整个视频内容项已经被流式传送到用户设备或者过程200接收到用户设备的用户已经停止呈现视频内容项的指示。
[0076]
注意,尽管过程100和200通常被描述为用户设备接收预测放弃分布,基于该预测放弃分布确定缓冲区大小以及基于所确定的缓冲区大小修改缓冲区大小,但是在一些实施例中,服务器可以根据预测放弃分布来确定更新的缓冲区大小。例如,类似于上面结合图1的框112所描述的,在一些实施例中,服务器可以基于预测放弃分布来确定是增加还是减少缓冲区大小。在一些实施例中,服务器随后可以向用户设备发送缓冲区大小变化的指示。此
外,在一些实施例中,服务器可以改变发送到用户设备的视频内容项的一部分的大小。例如,在发送到用户设备的视频内容项的第一部分具有第一大小或第一持续时间并且服务器确定缓冲区大小将变得更小(例如,响应于确定用户将停止视频内容项的呈现的似然性相对较高)的情况下,服务器可以发送具有相对较小大小或相对较短持续时间的视频内容项的第二部分。相反,在服务器确定缓冲区大小将变得更大(例如,响应于确定用户将停止视频内容项的呈现的似然性相对较低)的情况下,服务器可以发送具有相对较大大小或相对较长持续时间的视频内容项的第二部分。附加地或替代地,在一些实施例中,服务器可以计算视频内容项的部分将被发送的时间之间的时间延迟,其中,时间延迟对应于用户设备正在缓冲的视频内容项的持续时间。在一些这样的实施例中,服务器可以暂停将视频内容项的后续部分发送到用户设备,直到服务器确定时间延迟已经过去。注意,在一些这样的实施例中,可以在视频内容项的流式传送期间基于预测放弃分布来修改服务器使用的时间延迟。
[0077]
转向图3,示出了根据所公开主题的一些实施例的用于使用可以使用的自适应缓冲区流式传送视频内容的硬件的说明性示例300。如图所示,硬件300可以包括服务器302、通信网络304和/或一个或多个用户设备306,例如用户设备308和310。
[0078]
服务器302可以是用于存储信息、数据、程序、媒体内容和/或任何其它合适的内容的任何合适的服务器。在一些实施例中,服务器302可以执行任何合适的功能。例如,在一些实施例中,服务器302可以将媒体内容(例如,视频内容、音频内容和/或任何其它合适的音频内容)发送到用户设备,例如用户设备306之一。作为更特别的示例,在一些实施例中,服务器302可以响应于对媒体内容的请求而将媒体内容流式传送到用户设备。作为另一示例,在一些实施例中,服务器302可以确定预测放弃分布,该预测放弃分布指示从服务器302流式传送媒体内容项的用户设备的用户将在媒体内容项的不同呈现时间点处停止媒体内容项的呈现的似然性,例如结合图2所示和上面描述的。
[0079]
在一些实施例中,通信网络304可以是一个或多个有线和/或无线网络的任何适当组合。例如,通信网络304可以包括因特网、内联网、广域网(wan)、局域网(lan)、无线网络、数字用户线(dsl)网络、帧中继网络、异步发送模式(atm)网络、虚拟专用网络(vpn)和/或任何其它合适的通信网络中的任何一个或多个。用户设备306可以通过一个或多个通信链路(例如,通信链路312)链接到通信网络304,该通信网络304可以通过一个或多个通信链路(例如,通信链路314)链接到服务器302。通信链路可以是任何适合于在用户设备306和服务器302之间传送数据的通信链路,例如网络链路、拨号链路、无线链路、硬连线链路、任何其它合适的通信链路或这些链路的任何合适的组合。
[0080]
用户设备306可以包括适合于从服务器302流式传送媒体内容的任何一个或多个用户设备。在一些实施例中,用户设备306可以包括任何合适类型的用户设备,例如移动电话、平板计算机、可穿戴计算机、膝上型计算机、台式计算机、智能电视、媒体播放器、游戏机、车辆信息和/或娱乐系统和/或任何其它合适类型的用户设备。在一些实施例中,用户设备306可以在媒体内容的流式传送期间自适应地修改用于存储从服务器302接收的媒体内容的缓冲区的大小。例如,在一些实施例中,用户设备306可以基于从服务器302接收到的预测放弃分布来修改缓冲区的大小,该预测放弃分布指示用户设备306将继续呈现媒体内容项的似然性,如结合图1所示和上面描述的。
[0081]
尽管服务器302被示为一个设备,但在一些实施例中,可以使用任何合适数量的设备来执行由服务器302执行的功能。例如,在一些实施例中,可以使用多个设备来实现由服务器302执行的功能。
[0082]
尽管图3中示出了两个用户设备308和310以避免图过于复杂,在一些实施例中可以使用任何合适数量的用户设备和/或任何合适类型的用户设备。
[0083]
在一些实施例中,可以使用任何合适的硬件来实现服务器302和用户设备306。例如,在一些实施例中,可以使用任何合适的通用计算机或专用计算机来实现设备302和306。例如,可以使用专用计算机来实现移动电话。任何这样的通用计算机或专用计算机可以包括任何合适的硬件。例如,如图4的示例硬件400中所示,这样的硬件可以包括硬件处理器402、存储器和/或储存装置404、输入设备控制器406、输入设备408、显示/音频驱动器410、显示和音频输出电路412、通信接口414、天线416和总线418。
[0084]
在一些实施例中,硬件处理器402可以包括任何合适的硬件处理器,例如微处理器、微控制器、数字信号处理器、专用逻辑和/或用于控制通用计算机或专用计算机的功能的任何其它合适的电路。在一些实施例中,硬件处理器402可以由存储在服务器(服务器302)的存储器和/或储存装置中的服务器程序控制。在一些实施例中,硬件处理器402可以由存储在用户设备306的存储器和/或储存装置404中的计算机程序控制。
[0085]
在一些实施例中,存储器和/或储存装置404可以是用于存储程序、数据和/或任何其它合适信息的任何合适的存储器和/或储存装置。例如,存储器和/或储存装置404可以包括随机存取存储器、只读存储器、闪存、硬盘储存装置、光学介质和/或任何其它合适的存储器。可以例如由硬件处理器402在存储器和/或储存装置404中定义自适应缓冲区。
[0086]
在一些实施例中,输入设备控制器406可以是用于控制和接收来自一个或多个输入设备408的输入的任何合适的电路。例如,输入设备控制器406可以是用于接收来自触摸屏、来自键盘、来自一个或多个按钮、来自语音识别电路、来自麦克风、来自相机、来自光学传感器、来自加速度计、来自温度传感器、来自近场传感器、来自压力传感器、来自编码器和/或来自任何其它类型的输入设备的输入的电路。
[0087]
在一些实施例中,显示/音频驱动器410可以是用于控制和驱动到一个或多个显示/音频输出设备412的输出的任何合适的电路。例如,显示/音频驱动器410可以是用于驱动触摸屏、平板显示器、阴极射线管显示器、投影仪、一个或多个扬声器和/或任何其它合适的显示器和/或呈现设备的电路。
[0088]
通信接口414可以是用于与一个或多个通信网络(例如,计算机网络304对接的任何合适的电路。例如,接口414可以包括网络接口卡电路、无线通信电路和/或任何其它合适类型的通信网络电路。
[0089]
在一些实施例中,天线416可以是用于与通信网络(例如,通信网络304)进行无线通信的任何合适的一个或多个天线。在一些实施例中,可以省略天线416。
[0090]
在一些实施例中,总线418可以是用于在两个或更多个组件402、404、406、410和414之间进行通信的任何合适的机制。
[0091]
根据一些实施例,任何其它合适的组件可以包括在硬件400中。
[0092]
在一些实施例中,至少一些上述的图1和图2的过程的框可以以任何顺序或序列(不限于结合附图所示和描述的顺序和序列)执行或实施。此外,图1和图2的上述框中的一
些框可以在适当的情况下基本上同时或并行地执行或实施,以减少时延和处理时间。附加地或替代地,可以省略图1和图2的过程的一些上述框。
[0093]
在一些实施例中,任何合适的计算机可读介质可用于存储用于执行本文的功能和/或过程的指令。例如,在一些实施例中,计算机可读介质可以是暂时的或非暂时的。例如,非临时性计算机可读介质可以包括介质,诸如非临时性形式的磁介质(例如硬盘、软盘和/或任何其它合适的磁介质)、非临时性形式的光学介质(例如光盘、数字视频光盘、蓝光光盘和/或任何其它合适的光学介质)、非临时性形式的半导体介质(例如闪存、电可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)和/或任何其它合适的半导体介质)、在发送期间不会转瞬即逝或没有任何持久性的任何合适的介质和/或任何合适的有形介质。作为另一示例,暂时性计算机可读介质可以包括网络、电线、导体、光纤、电路、在传输期间转瞬即逝且没有任何持久性的任何合适的介质和/或任何合适的无形介质上的信号。
[0094]
因此,提供了用于使用自适应缓冲区流式传送视频内容的方法、系统和介质。
[0095]
尽管已在前述说明性实施例中描述和图示了本发明,但应理解,本公开仅以示例的方式做出,并且可以在不脱离本发明的精神和范围(仅由所附权利要求书限定)的情况下对于本发明的实现细节进行多种改变。可以以各种方式组合和重新排列公开的实施例的特征。