
1.本公开涉及用于分段流动性(segment fluidity)的代码转换器调节(transcoder conditioning)。
背景技术:2.视频格式是包括数据流和元数据的容器。数据流可以包括视频流和伴随的音频流。元数据包括关于视频流的信息,例如比特率、分辨率和编解码器。比特率与视频流的质量相关,而分辨率则指示视频流的图片大小。
3.编解码器是对数据流进行编码或解码的系统或程序。编码器是实现编解码器以对数据流进行编码的系统或程序,而解码器是实现编解码器以对数据流进行解码的系统或程序。编解码器通常用于压缩数据流,以减小用于通过计算机网络传输的视频文件的大小。编解码器还可以用于解压缩数据流,以进行媒体播放或数据流文件处理。
技术实现要素:4.根据本公开的第一方面,提供了一种系统,包括:多个编码器,所述多个编码器被配置为生成多个变体(variant)流;以及交叉变体瞬时解码器刷新idr识别器,所述交叉变体idr识别器被配置为:检查所述多个变体流;识别所述多个变体流中的每一个变体流中的idr帧;确定哪些idr帧与交叉变体边界相对应;并且划分与交叉变体边界相对应的所述idr帧。
5.根据本公开的第二方面,提供了一种非暂时性计算机可读介质,包含计算机程序代码,在所述计算机程序代码通过一个或多个计算机处理器的操作而被执行时,执行包括以下各项的操作:检查多个变体流;识别每个变体流中的瞬时解码器刷新idr帧;确定哪些idr帧与交叉变体边界相对应;以及划分与交叉变体边界相对应的所述idr帧。
6.根据本公开的第三方面,提供了一种方法,包括:接收视频流;识别边界位置;划分边界以创建第一组分段;并且在超过阈值之后,划分边界以创建第二组分段,所述第二组分段具有的持续时间与所述第一组分段的持续时间不同。
附图说明
7.为了实现并可以详细地理解上述方面的方式,可以参考附图,对以上简要概述的本文所述实施例进行更具体的描述。
8.然而,应当注意,附图示出了典型的实施例,并且因此不应认为是限制性的。可以设想其他等效的实施例。
9.图1示出了根据一个实施例的用于生成和传送在idr帧之间对齐的变体流的系统。
10.图2示出了根据一个实施例的针对下游分段调节视频数据流的代码转换器。
11.图3a示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器。
12.图3b示出了根据一个实施例的各种持续时间的分段资源的配置。
13.图3c示出了根据一个实施例的用于减少关键帧脉冲(key frame pulsing)的最大gop持续时间和目标分段持续时间。
14.图4示出了根据一个实施例的针对分段流动性而调节的变体流。
15.图5示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器。
16.图6示出了根据一个实施例的交叉变体idr识别器的操作的流程图。
17.图7a示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器。
18.图7b示出了根据一个实施例的视频数据流中的分段和gop。
19.图8示出了根据一个实施例的可变边界筛选器(variable boundary sizer)的操作的流程图。
具体实施方式
20.为了使本公开的特征能够被更详细地理解,本文公开的本发明的实施例可能用http直播流传输(hls)来指代计算机网络流传输(streaming)协议。然而,所公开的实施例不应被解释为限于任何特定网络协议。
21.hls是一种计算机网络流传输协议,其可以经由主播放列表来传送媒体内容。主播放列表引用多个变体流,每个变体流包括媒体播放列表,该媒体播放列表引用要由客户端设备顺序播放的媒体内容的连续分段的集合。
22.在媒体播放列表中,通过一个或多个统一资源识别器(uri)和可选的字节范围来标识分段。uri是标识因特网上的资源的字符串。
23.媒体播放列表中的每个分段都在由idr帧指定的分段边界处开始,并在紧接由idr帧指定的下一个分段边界之前的帧处结束。分段边界通常在多个变体流中是同步的。通过在这些对齐的分段边界处切换变体流,从而调整流传输质量来实现abr。切换变体流涉及从一个变体流中的分段分组改变到不同变体流中的分段的顺序分组。
24.当记录视频时,视听(av)输入生成未压缩的数据流。编码器将数据流的视频流压缩成包括i帧、p帧和b帧的图片组(gop)。压缩视频流允许较小的视频文件,与存储和传输较大的视频文件相比,该较小的视频文件更易于经计算机网络进行存储和传输。
25.gop是一组顺序的压缩视频帧,其边界由i帧指定。每个gop都以i帧(包括i帧)开始,但以p帧或b帧结束。呈现gop将产生对于视频流中的视频内容的显示或媒体播放。
26.gop可以是开放或封闭的。开放gop包括被上一个gop中的帧参考的至少一个帧。封闭gop仅包含当前gop中参考的帧。封闭gop以瞬时解码器刷新(idr)帧开始。
27.i帧(也称为关键帧或内帧)是一种视频帧,该视频帧包含在不参考其他帧的情况下也能完全对自身进行显示所需的所有视频数据。因为i帧包含视频数据的完整帧,所以i帧由编码器独立压缩,即,在不参考其他帧的情况下压缩i帧。此外,i帧用作预测视频流中的一个或多个帧的参考。i帧通常大于p帧,p帧通常大于b帧。
28.p帧(也称为预测帧)是一种视频帧,该视频帧包含在当前p帧和先前i帧或p帧之间变化的视频数据。即,p帧排除了与先前参考帧中相同(冗余)的视频数据,但是包括与先前参考帧中不同的视频数据。因此,当前p帧参考先前i帧或p帧被编码,并且当前p帧排除了冗余以减小当前p帧的存储大小。p帧可以用作将来p帧或任何b帧的参考。
29.例如,如果视频流示出在不变的背景前面讲话的人,则当前的p帧可以排除关于背
景的信息,该信息从先前参考帧到当前p帧不会改变。当前p帧可以包括关于人的运动的信息,该信息相对于先前参考帧发生改变。
30.b帧(也称为双向帧)是一种视频帧,该视频帧包含对于帧中的一个或多个对象在先前或后续的i帧、p帧或b帧之间如何改变的预测。因此,与p帧不同,b帧可以向后和向前查看更多类型的参考帧,以便识别要从b帧中排除的冗余。编码器预测当前b帧和参考帧之间的差异,以减小当前b帧的存储大小。
31.idr帧是指定帧参考屏障的i帧。idr帧不能由先前gop中的帧参考。此外,idr帧可以阻止其自身gop中的帧参考idr帧之前的帧。即,当解码器遇到idr帧时,解码器将帧缓冲器中的所有先前帧指定为不允许被idr帧之后的任何帧参考。因此,idr帧用于使解码器刷新帧缓冲器,从而确保gop中的第一个帧始终是idr帧,并且后续的p帧和b帧将不参考idr帧之前的任何帧。idr帧的帧参考屏障功能不存在于非idr的i帧中,非idr的i帧允许参考i帧的帧也参考i帧之前的帧。
32.以idr帧开始gop可以改进媒体播放,例如在寻找点处。寻找点是媒体播放器中的由媒体播放器的终端用户选择的特定位置。
33.当终端用户寻找媒体播放中的点时,寻找点可能落在p帧或b帧上。媒体播放可能无法在此位置开始而不产生失真的输出,因为p帧和b帧不包含足够的视频数据来重构与包含p帧和b帧的gop相对应的完整图像。替代地,媒体播放器必须查看由p帧和b帧参考的i帧,以提供完整图像并开始播放当前gop。
34.此外,在基于自适应比特率流传输(abr)的协议(例如,hls)中,仅idr帧是可行的变体流切换点。abr是一种计算机网络流传输技术,其涉及实时测量客户端设备的网络带宽和数据吞吐量,并切换变体流以相应地调整传送给客户端设备的流传输质量。
35.对于由数据流代表的相同媒体内容,变体流代表着不同的流传输比特率。通常,较高的流传输比特率与较高的流传输质量相关,而较低的流传输比特率与较低的流传输质量相关。此外,较高的流传输比特率相当于增加的数据流的相对大小,而较低的流传输比特率相当于减小的数据流的相对大小。因此,较高质量的流需要客户端设备的更多网络带宽和更大数据吞吐量,以确保客户端设备上连续不间断的媒体播放。类似地,较低质量的流需要客户端设备的更少网络带宽和更小数据吞吐量,以确保在客户端设备上连续间不断地播放媒体。
36.因为非idr的i帧允许后续帧参考i帧之前的帧,所以如果寻找导致媒体播放器加载不同的变体流,则当前变体流中的帧可能参考存在于先前变体流中但例如由于对差异(诸如由于使用场景变化特征而引起的差异)进行编码而不存在于当前变体流中的帧,如下面所讨论的。这些类型的帧参考可能破坏基于abr的协议中的媒体播放。通过使用idr帧作为变体流切换点来解决上述问题,因为idr帧不允许后续帧参考idr帧之前的帧。
37.在本文的实施例中,代码转换器为下游处理调节视频帧,以创建与分段流动性使用兼容的分段。分段流动性是一种将分段分组为资源以便可以将不同的分段持续时间呈现给不同的平台或媒体播放器的技术。分段包括一个或多个gop。
38.图1示出了根据一个实施例的用于生成和传送在idr帧之间对齐的变体流的系统。在该实施例中,av输入110生成视频流,并且编码器(未示出)在将视频流传送到代码转换器130之前压缩视频流。编码的视频流包括分别指示其图像大小和视频质量的分辨率和比特
率。例如,视频流可以具有1080p分辨率和3mbps比特率。
39.代码转换器130是为下游处理压缩和调节视频流的处理实体。代码转换器130可以包括解码器132、一个或多个编码器和交叉变体idr识别器134。解码器132可以将视频流转换为其编码前格式,以便代码转换器130中的编码器可以处理视频流。例如,相机114可以生成原始格式的视频流。相机114可以具有将视频流转换成第一编码格式的集成编码器(未示出)。下游的代码转换器130可能与第一编码格式不兼容。因此,当代码转换器130接收第一编码格式的视频流时,代码转换器130的解码器132可以将编码的视频流转换为原始格式。代码转换器中的编码器然后可以将视频流转换成第二编码格式。
40.在一个实施例中,交叉变体idr识别器134是在硬件(例如,处理器和存储器)上执行的软件模块。交叉变体idr识别器134可以划分帧,编码器使用这些帧来调节变体流以实现分段流动性。替代地,交叉变体idr识别器134可以使用元数据作为以前述方式直接划分视频帧的替代物。在又一示例中,交叉变体idr识别器134在变体流(后创建)之间进行查看,以在下游划分交叉变体对齐帧(cross-variant aligned frames),如下面将更详细描述的。
41.代码转换器130中的每个编码器将解码后的视频流转换为变体流。每个变体流包含相同的视频流(例如,相同的媒体内容),但是比特率不同。代码转换器130还可以针对每个变体流改变视频流的分辨率。例如,编码器1 136a生成具有1080p分辨率和3mbps比特率的变体流1;编码器2 136b生成具有720p分辨率和2mbps比特率的变体流2;编码器n 136n生成具有xp分辨率和y mbps比特率的变体流n。变体流在分段边界(分段边界在这些变体流之间是对齐的)处包括来自交叉变体idr识别器134的分界。变体流被传送到打包器140。
42.打包器140为每个变体流生成播放列表,并在选定的划分帧处把变体流分段。打包器140然后将播放列表和变体流传送到分发网络150。在一个实施例中,播放列表和变体流被直接发送到一个或多个服务器152。然后,播放列表被发送到客户端设备156。一个或多个服务器152服务于来自客户端设备156的针对媒体内容的分段的任何提取/请求。即,使用播放列表,客户端设备156可以向分发网络150提交针对在这些播放列表中识别的分段的请求,以便播放其中的媒体内容。
43.替代地,播放列表和变体流被直接发送到一个或多个服务器152。然后将播放列表和变体流发送到内容传送网络(cdn)154,内容传送网络(cdn)154将播放列表传送给客户端设备156并服务于客户端设备156的针对媒体内容的分段的提取/请求。在又一示例中,首先将播放列表和变体流发送到cdn 154,cdn 154将播放列表传送到客户端设备156并服务于客户端设备156的针对媒体内容的分段的提取/请求。由于cdn边缘服务器的本地化,使用cdn来服务分段提取/请求可以通过减少提取/请求的分段的传送时间来改进媒体播放。
44.图2示出了根据一个实施例的针对下游分段调节视频数据流的代码转换器。在该实施例中,代码转换器204接收源视频帧202,并且通过使用指示符来对源视频帧202进行编码以生成编码帧206,该指示符对编码帧206中作为分段边界的所选的idr帧进行划分。在该实施例中,分段边界指示符是带内分段边界元数据208。代码转换器下游的分段器210仅在已被划分为分段边界的idr帧处对编码帧206进行分段。在另一个实施例中,代码转换器204可以将idr帧插入变体流中以强制期望的分段边界。代码转换器下游的分段器201在编码帧206的每个idr帧处对编码帧206进行分段。
45.代码转换器204可以配置有最大gop持续时间、目标分段持续时间和最小/最大分段持续时间。创建分段持续时间等于目标分段持续时间的分段是被期望的,但是分段持续时间可以被修改以适应其他情况,诸如广告中断或章节点。
46.章节点是媒体内容中的过渡点。例如,章节可以指示广告中断的开始或结束,或者媒体内容中人物之间的对话的自然中断。在一个实施例中,章节用作分段边界。章节可以出现在媒体播放中的任何适当位置,而与章节相对于非章节分段边界的位置无关。
47.分段器210或打包器通过在划分的idr帧处对编码帧206进行分段来生成分段1 214和分段2 216。分段器210还创建播放列表212,该播放列表212将分段1 214和分段2 216参考为客户端设备经由播放列表212可访问的资源。
48.尽管分段1 214包含两个idr帧,这两个idr帧都可以用作段边界,但是分段器210仅在划分的idr帧处被分段。因此,段1 214以划分的idr帧开始。类似地,分段2 216包含两个idr帧和一个i帧,其任何一个都可以用作段边界。然而,由于分段器210仅在划分的idr帧处被分段,因此分段2 216以划分的idr帧开始。
49.分段1 214和分段2 216中的帧的未标记分组可以是p帧、b帧或两者的任何组合。分段1 214和分段2 216两者具有相等的段持续时间,并且两个分段都以idr帧开始。尽管两个分段都包含两个idr帧,但是每个分段中的第二idr帧未被划分为分段边界,因此,未通过分段器210在该帧处被分段。
50.图3a示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器。在该实施例中,代码转换器调节视频数据流,以确保所有变体流以最小的期望分段流动性持续时间具有相同的分段边界。
51.代码转换器通过使用等于最小分段流动性持续时间(minsfd)的目标分段持续时间(sd),为分段流动性调节视频流。在一个实施例中,minsfd是特定于平台或特定于媒体播放器的最短期望分段持续时间,其允许分段边界在所有变体流中对齐。
52.每个分段具有相同的固定分段持续时间,但是分段器可以将多个分段分组以建立具有可变分组的分段的播放列表。例如,如果minsfd和匹配的sd有2秒,则由分段器生成的一个播放列表可以首先参考各个分段,诸如分段a1 302、分段a2 304和分段a3 306,然后参考包括分段a4308、分段a5 310和分段a6 312的一组分段。因此,在此示例中,播放列表从参考三个单独的2秒分段开始,然后参考6秒长的一组分段。
53.分段的可变分组使分段器能够生成播放列表,该播放列表参考具有最佳持续时间的分段以在任何给定平台上进行媒体播放。以该方式,分段流动性改进了在实现不同操作系统和媒体播放器的客户端设备上的媒体播放性能。
54.例如,在一个实施例中,分段的可变分组用于在媒体播放启动和寻找点处提供较短的分段持续时间,而在终端用户不太可能发起开始或寻找操作的媒体播放的部分期间提供较长的分段持续时间。因此,可变分组可以支持媒体播放器的改进的媒体播放,其在启动或搜索时以较短的持续时间良好执行,而通过随后切换到更长的分段来减少服务器的负载。
55.图3b示出了根据一个实施例的各种持续时间的分段资源的配置。在该实施例中,每个分段分组包括具有与minsfd匹配的sd的多个分段。
56.分段b1 322表示2个sd的分组,每个sd与minsfd匹配。分段c1332表示4个sd的分
组,每个sd与minsfd匹配。分段d1 342、分段d2 344和分段d3 346均表示分段d4之前的一个sd,分段d4表示有3个sd的分组,每个sd与minsfd匹配。
57.如在这些sd分组形式中所描绘的,由于与minsfd匹配的每个sd开始于idr帧,所以任何sd分组形式都包含多个idr帧。例如,由于分段b1 322包含两个与minsfd匹配的sd,因此分段b1 322包含至少两个idr帧。
58.除了由于包括多个与minsfd匹配的sd而在分段分组中出现的idr帧之外,每个分段还可以包含由于编码器的变化检测特征而导致的额外的i帧。当编码器检测到视频流中相邻视频帧之间的较大差异时,就会发生场景变化检测。一旦检测到新场景,编码器将插入i帧以用作包含新场景的所有视频数据的完整图片。
59.例如,分段c1 332开始于idr帧。假设该开始帧显示红色图片,之后是p帧或b帧(未标记),它们会在视频流的一小部分中对红色调进行小的改变。假设下一帧显示雨林的详细图片。编码器检测到该大的场景变化,并将雨林视频数据编码为i帧(此处为idr帧)。因此,分段c1 332现在具有额外的idr帧,该帧不是由于sd与minsfd匹配所致。
60.图3a和3b所示的实施例不是最佳的,因为包括大量i帧的视频流可能暴露关键帧脉冲,这通常在sd小于4秒时发生。关键帧脉冲可以呈现为在媒体播放期间看到的脉冲视频图像。
61.图3c示出了根据一个实施例的用于减少关键帧脉冲的最大gop持续时间和目标分段持续时间。在该实施例中,减少关键帧脉冲的方案是将代码转换器配置有等于目标最大分段流动性持续时间(maxsfd)的sd、以及等于minsfd的最大gop持续时间(gd)。在一个实施例中,maxsfd是使分段边界在所有变体流之间对齐的情况下最长的可能分段持续时间。
62.例如,因为gd等于设定值,所以分段e1 352包括大小相等的gd。如果这些gd足够大,则可以减少关键帧脉冲。
63.图3c中的配置的一个可能缺点是场景变化检测可能会破坏变体流之间的gop对齐。由于场景变化检测是动态发生的,所以可能会发生gop未对齐,并且在对应于相同媒体内容的每个变体流中可能在不同的帧处触发i帧插入。当编码器插入i帧时,将重置关键帧间隔,从而导致gop可能在变体流之间未对齐。
64.图4示出了根据一个实施例的针对分段流动性而调节的变体流。在该实施例中,由于场景变化被禁用,因此由比特率1 410和比特率2 420表示的变体流在gop之间是对齐的。
65.禁用场景变化检测阻止额外的关键帧插入变体流中。因此,关键帧间隔永远不会重置,并且gd保持其原始大小。如果gd足够大,则关键帧脉冲被最小化。
66.然而,由于idr帧可能落在非理想帧上,因此禁用场景变化检测是不希望的。例如,假设在视频数据中汽车追逐开始时场景发生了变化。假设场景变化发生在分段f1 412中的第二idr帧和第三idr帧之间。在禁用场景变化检测的情况下,即将到来的idr帧是第三帧,其被放置在汽车追逐开始之后。因此,终端用户无法寻找汽车追逐的开始。终端用户只能寻找汽车追逐开始之前的第二idr帧,或者寻找汽车追逐开始之后的第三idr帧。
67.图5示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器510。图6示出了根据一个实施例的交叉变体idr识别器的操作的流程图。为了清楚起见,结合图6解释图5。
68.在一个实施例中,代码转换器使用大的分段持续时间和小的gop持续时间,同时保
持使能场景变化检测。在该实施例中,交叉变体idr识别器用于最小化关键帧脉冲并消除未对齐的分段。
69.代码转换器510包括将视频流转换成包括编码帧514的多个变体流的多个编码器512。编码帧514表示变体流中的视频帧。
70.变体流中的idr帧由加粗轮廓的正方形表示。目标分段边界指示在分段的开始处的预期开始视频帧,其与在变体流之间包含相同媒体内容的分段对齐。变体流的目标分段边界由实心圆表示。交叉流gop对齐的分段边界指示封闭gop开始处的视频帧,其与在变体流之间包含相同媒体内容的分段对齐。每个交叉流gop对齐的分段边界都由一个未填充的圆指定。
71.当生成变体流时,每个编码器512基于在其相应的变体流的视频数据中发生的场景变化的动态评估,将idr帧插入到该变体流中。场景变化的动态评估可能不会在变体流之间产生idr帧的均匀分布。
72.在框602,交叉变体idr识别器518接收变体流。交叉变体idr识别器518是在硬件(例如,处理器和存储器)上运行的软件模块。
73.在框604,交叉变体idr识别器518检查变体流,并识别每个变体流中idr帧的位置。即,交叉变体idr识别器518可以在每个变体流的每个分段内进行查找以识别idr帧。
74.在框606,交叉变体idr识别器518确定哪些idr帧与交叉变体对齐目标分段边界522和交叉变体对齐目标分段边界526相对应。每个变体流在这些目标分段边界位置包含idr帧,使得这些位置的idr帧在变体流之间对齐。相比之下,如果任何变体流在这些位置具有非idr帧,则交叉变体idr识别器518可以确定其他变体流中这些位置处的idr帧不与交叉变体对齐目标分段边界相对应。
75.此外,基于位置524处idr帧的识别,交叉变体idr识别器518确定idr帧还产生了交叉变体gop对齐分段边界524。与之相比,如果位置524处的任何帧不是idr帧,则交叉变体idr识别器518可以确定位置524不与交叉变体gop对齐分段边界相对应。
76.交叉变体idr识别器518可以以类似的方式识别其他目标分段边界和gop对齐分段边界。交叉变体idr识别器518还可以确定哪些idr帧是由于场景变化检测而插入的。
77.与交叉变体gop对齐(非目标)边界相比,确定作为交叉变体目标对齐边界的idr帧,允许交叉变体idr识别器518在期望的(目标)交叉变体边界处划分变体流。因此,在实现abr时,由于场景变化检测而插入到变体流中的任何idr帧都不会阻止在变体流之间进行切换。因此,可以在使能场景变化检测的情况下实现abr。
78.在框608,交叉变体idr识别器518划分在框606处识别的目标分段边界或gop对齐分断边界。交叉变体idr识别器518可以以类似的方式划分其他交叉变体对齐目标分段边界和交叉变体gop对齐分段边界。在一个实施例中,交叉变体idr识别器518使用元数据来划分边界以用于下游分段。
79.交叉变体idr识别器518可以被包括在代码转换器510中,或者可以是独立单元,或者可以被包括在一个或多个分段器中。与其位置无关,交叉变体idr识别器518操作以识别变体流中的潜在分段边界或gop对齐边界。
80.图7a示出了根据一个实施例的针对分段流动性调节视频数据流的代码转换器。图8示出了根据一个实施例的可变边界筛选器的操作的流程图。为了清楚起见,结合图8解释
图7a。
81.在一个实施例中,可变边界筛选器在媒体播放的启动或期望的寻找点处为短分段或短gop持续时间调节视频流。由于abr允许媒体播放器在由idr帧指定的变体流边界之间切换,因此在这些点处较短段分段或gop可能是期望的。由于每个分段或gop都以idr帧开始,因此较短分段为媒体播放器提供了用于变体切换的多个机会,从而允许在开始/寻找后立即快速调整到最佳流传输质量。该实施例可以扩展本文公开的所有实施例的功能。
82.代码转换器710包括可变边界筛选器712,该可变边界筛选器712提供分界以使代码转换器710的编码器722在分界处强制idr帧。在框802,可变边界筛选器712接收视频流702。
83.在框804,可变边界筛选器712识别分段或gop边界的位置。这些分段或gop可以具有短且相等的持续时间。例如,每个分段可以包括单个gop。
84.在框806,可变边界筛选器712为视频流702中的第一组期望的分段或gop大小划分分段边界。在一个实施例中,元数据用于划分视频流中的期望分段或gop边界的idr帧的位置。当在下游分段时,划分的分段边界可以在变体流之间对齐。因此,划分的分段边界可以用作分段或gop的交叉变体边界。
85.可变边界筛选器直接或经由视频预处理器管线716将元数据传送到编码器722。在一个实施例中,元数据划分处理前视频流714中的帧,处理前视频流714被传输到视频预处理器管线716。视频预处理器管线716是可选组件,其可以帮助以针对编码器722最佳的格式向编码器722传送一个或多个划分的视频流718。
86.视频流中的分界可以用于在下游创建较短的分段或gop大小。如上所述,由于abr允许媒体播放器在由idr帧指定的变体流边界之间切换,因此在启动时较短的分段或gop可能是期望的。因此,以idr帧开始的短分段或gop为媒体播放器提供了在变体流之间切换的多个机会。因此,无论媒体播放开始时的流传输质量如何,媒体播放器都有多个机会来快速切换到最佳变体流,该最佳变体流由客户端设备的可用网络带宽和数据吞吐量恰当支持。
87.类似地,对于在切换到不同流传输质量之前需要下载固定数量的分段的客户端设备媒体播放器,可以减少实现最佳播放性能所需的时间,因为可以媒体播放期间在早期满足切换的条件。
88.对于寻找点存在类似的理由。寻找点与开始点工作起来一样,除非客户端设备要访问包含立即播放媒体所必需的分段的缓存。因此,寻找操作同样具有上述在媒体播放开始时分段或gop较短的益处。
89.在框808,可变边界筛选器712为视频流702中的第二组期望的分段或gop大小划分分段边界。当在下游分段时,划分的分段边界可以在变体流之间对齐。因此,划分的分段边界可以给分段或gop用作交叉变体边界。
90.在一个实施例中,可变边界筛选器712可以在已经划分了阈值量的较短的分段或gop之后,划分较长的分段或gop。例如,该阈值可以基于媒体播放器的变体切换规则,诸如媒体播放器要求在实现abr之前下载给定数量的分段或下载给定时间量的分段。
91.一旦超过了较短的分段或gop阈值的量,则可变边界筛选器712可以以较大的分段边界和gop大小划分视频流。具有较大的分段和gop会减少客户端设备执行的资源请求的数量,从而降低了客户端设备所需的处理能力,并减少了为这些请求提供服务的服务器的负
载。
92.可变边界筛选器712可以在媒体播放的开始以及在常见或频繁作为目标的寻找点(诸如,在章节点)进行这些划分。
93.图7b示出了根据一个实施例的视频数据流中的分段和gop。在该实施例中,针对在启动和寻找点开始处具有较短的分段和gop的分界、以及具有较长的分段和gop的分界示出了分段器输出。
94.在变体流的开始750处生成较短的分段或gop。这些分段或gop是通过按由上游可变边界筛选器建立的分界对变体流进行分段来创建的。这些分段和gop具有相等的持续时间(例如,752)。在一个实施例中,每个分段包括单个gop,并且每个s分段或gop以idr帧开始(例如,754)。
95.在一个实施例中,在达到阈值之前划分了四个分段或gop。当超过阈值时,分段器生成较长的分段(例如,756)。
96.较短分段或gop的之后是较长分段或gop,这种组合发生在变体流的开始750处以及每个预期的寻找点,诸如章节点770。较短和较长的分段和gop的这种组合可以改进媒体播放。
97.期望在启动时具有较短的分段或gop,以使媒体播放器有多个机会来快速切换到最佳变体流,该最佳变体流由客户端设备的可用网络带宽和数据吞吐量恰当支持。具有较大的分段和gop会减少客户端设备执行的资源请求的数量,从而降低了客户端设备所需的处理能力,并减少了为这些请求提供服务的服务器的负载。
98.在当前公开中,参考了各种实施例。然而,应当理解,本公开不限于具体描述的实施例。相反,可以设想以下特征和元件的任何组合,无论是否与不同的实施例相关,都可以实现和实践本文提供的教导。另外,当以“a或b中的至少一个”的形式描述实施例的元件时,将理解的是,分别考虑了仅包括元件a,仅包括元件b以及包括元件a和b的实施例。此外,尽管一些实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是通过给定的实施例是否实现具体的优点并不限制本公开。因此,除非在一个或多个权利要求中明确叙述,否则本文所公开的方面、特征、实施例和优点仅是示例性的,并且不被认为是所附权利要求的要素或限制。同样,对“本发明”的引用不应被解释为本文所公开的任何发明主题的概括,并且除非在权利要求中明确叙述,否则不应被视为所附权利要求的要素或限制。
99.如本领域的技术人员将理解的,本文描述的实施例可以体现为系统、方法或计算机程序产品。因此,实施例可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,这些实施例在本文中通常都被称为“电路”、“模块”或“系统”。此外,本文描述的实施例可以采取实施在其上实施有计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。
100.实施在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光缆、rf等、或前述的任何适当组合。
101.用于执行本公开的实施例的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,包括诸如java、smalltalk、c++之类的面向对象的编程语言以及常规的过程编程语言,诸如“c”编程语言或类似的编程语言。程序代码可以完全在用户计算机上运行,部分在用户计算机上运行,作为独立软件包、部分在用户计算机上、部分在远程计算机
上或完全在远程计算机或服务器上。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户计算机,或者可以与外部计算机建立连接(例如,通过使用因特网服务提供商的因特网)。
102.在此参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图或框图描述了本公开的各方面。将理解的是,可以通过计算机程序指令来实现流程图图示或框图的每个框以及流程图图示或框图中的框的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,从而使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现流程图或框图中指定的功能/动作的装置。
103.这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机、其他可编程数据处理装置或其他设备以特定方式起作用,从而使得存储在计算机可读介质中的指令产生制造产品,包括实现流程图或框图中指定的功能/动作的指令。
104.计算机程序指令也可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在计算机、其他可编程数据处理装置或其他设备上执行的指令提供用于实现流程图或框图的方框中指定的功能/动作的处理。
105.附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个框可以代表代码的模块、分段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,框中指出的功能可以不按图中指出的顺序发生。例如,根据所涉及的功能,实际上可以基本上同时执行连续示出的两个框,或者有时可以以相反的顺序或不按顺序执行这些框。还应注意,框图或流程图说明的每个框以及框图或流程图说明中的框的组合可以由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
106.尽管前述内容时针对本公开的实施例,但是在不脱离本公开的基本范围的情况下,可以设计本公开的其他和进一步的实施例,并且本公开的范围由所附权利要求书确定。