可缩放媒体递送的精细粒度的客户机侧控制的制作方法

文档序号:7736728阅读:165来源:国知局
专利名称:可缩放媒体递送的精细粒度的客户机侧控制的制作方法
可缩放媒体递送的精细粒度的客户机侧控制背景工程师使用压缩(也叫做“编码”)来降低数字媒体的比特率。压缩通过将媒体转换为较低的比特率形式来降低存储和传输媒体的成本。解压缩(也叫做“解码”)从压缩形式重构原始媒体的版本。当媒体编码器将媒体转换为较低的比特率形式时,媒体编码器会降低压缩媒体的质量以降低比特率。通过有选择地去除媒体中的细节,编码器使媒体更简单且更容易压缩, 但是经压缩的媒体不太忠实于原始媒体。除了此基本质量/比特率折衷以外,媒体的比特率还取决于媒体的内容(例如,复杂性)和媒体的格式。媒体信息是根据不同设备和应用的不同格式来组织的。格式的许多属性与分辨率有关。例如,对于视频,采样深度、空间分辨率(例如,在图片的宽度和高度方面)和时间分辨率(例如,在每秒图片数方面)与分辨率有关。对于音频,采样深度和采样速率(例如, 在每秒采样数方面)与分辨率有关。通常,质量和比特率根据分辨率直接变化,越高的分辨率得到越高的质量和越高的比特率。可缩放的媒体编码和解码便于将媒体递送到具有不同能力的设备。典型的可缩放的媒体编码器将媒体拆分为一个基层以及一个或多个增强层。基层本身提供用于以较低的质量重构的媒体的版本,而增强层添加会提升质量的信息。某些可缩放的编码器和解码器依赖于媒体的时间可缩放性(例如,低的帧速率到高的帧速率)。其他常见的可缩放的编码/解码方案使用对于空间分辨率或者视频的总体编码质量的可缩放性(例如,低失真到高失真)。可缩放层可以表示单个类型的分辨率的不同质量点(例如,用于三个不同的空间分辨率320xM0、640x480和U80x960)。或者,可缩放层可以表示不同类型的分辨率的不同质量点(例如,用于320x240低质量基层、用于640x480低质量增强层、用于320x240较高质量的增强层、用于640x480较高质量的增强层,等等)。基层以及一个或多个增强层可以用各个层的单独比特流来组织。或者,各个可缩放层的内容可以逐单元交错用于已编码媒体。例如,对于音频的第一帧,第一帧的基层数据领先第一帧的第一增强层数据,而第一增强层数据领先第一帧的第二增强层数据。随后,接着是音频的第二帧的基层数据、第二帧的第一增强层数据和第二帧的第二增强层数据。对于视频,单元可以是图片或图片组,其中基层数据和增强层数据按单元来组织。当可缩放层表示单个类型的分辨率的不同质量点并且可缩放层在比特流中逐单元地组织,则低质量的一个或多个层可以被认为“嵌入”在下一较高质量的层中。这些层进而可以被认为嵌入在下一较高质量的层中。选择目标质量/比特率可以通过选择每一单元的已编码数据的一组嵌套层来完成。为不同质量水平的层创建嵌入到层中的比特流的一种方法使用比特面编码。在比特面编码中,将图片各块的频率变换系数分成具有每一变换系数的最高有效位的第一平面、具有每一系数的下一最高有效位的第二平面,以此类推,直到具有每一系数的最低有效位的平面。各个比特面在不同编码质量水平的不同可缩放层中编码。通过因特网和其他计算机网络来递送媒体内容已经变得越来越流行。通过因特网的媒体递送通常由可变带宽来表征,而没有分发媒体内容的媒体服务器和回放媒体内容的媒体客户机之间的专用带宽。如果媒体内容的比特率过高,则媒体内容可能被网络丢弃, 造成媒体客户机的回放停止。或者,媒体客户机可以在回放开始之前缓存一大部分的媒体内容,但这会导致回放开始之前的长时间延迟。另一方面,如果媒体内容的比特率远低于网络能够递送的比特率,则回放的媒体内容的质量将低于它能够达到的质量。通过调整媒体内容的比特率以使得比特率更紧密地匹配可用网络带宽,媒体服务器可以改进媒体客户机的回放体验。虽然调整媒体内容的质量和比特率的现有方法在许多场景中提供了足够的性能,但它们不具有以下描述的技术和工具的好处和优点。概述概括地说,详细描述呈现了用于调整通过网络递送的媒体的质量和比特率的技术和工具。例如,对于多个独立媒体块,可缩放媒体编码器用多个比特率/质量水平来编码各个块以用于精细粒度可缩放性,并且服务器存储已编码媒体。取决于网络特性和客户机回放偏好,对于多个块中的每一个,客户机选择比特率/质量水平,并且可缩放媒体编码器解码用所选质量水平递送给它的已编码媒体。增加多个块的比特率/质量水平选项的数量允许客户机更精确地定制它的选择来满足客户机回放偏好并适应媒体比特率或网络特性的变化。根据此处描述的技术和工具的第一方面,诸如服务器等的工具递送被组织成多个块的媒体数据。多个块中的每一个被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具发送各块的曲线信息。对于给定块,曲线信息可以包括对块的速率-失真曲线进行参数化的速率-失真点。或者,曲线信息可以包括指示块的速率-失真曲线的形状的一组参数。对于多个块中的每一个,该工具接收指示速率-失真偏好的反馈,并且至少部分地基于该反馈来从块的可缩放层中选择一个或多个可缩放层。例如,服务器将曲线信息发送给给定媒体客户机,从给定媒体客户机接收反馈,并将所选层发送回给定媒体客户机。当服务器存储块的可缩放层和曲线信息时,服务器可以在不同时间将曲线信息和所选层递送给不同的媒体客户机。例如,块的多个可缩放层包括基层和多个残留层。多个残留层可以是从块的比特面编码而导致的残留嵌入层,其中嵌入层中的每一个表示块的变换系数的比特面。在递送块的层时,该工具总是选择和发送块的基层。取决于速率-失真偏好,该工具选择和发送块的多个残留层中的零个或多个。根据此处描述的技术和工具的第二方面,诸如媒体客户机等的工具处理被组织成多个块的媒体数据,其中多个块中的每一个已经被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具接收多个块的曲线信息。对于各块中的每一个,该工具确定块的速率-失真偏好(例如,按照位计数或位范围)并发送速率-失真偏好。该工具随后接收块的多个可缩放层之中的一个或多个可缩放层。例如,媒体客户机从给定服务器接收曲线信息,将速率-失真偏好发送给服务器,然后从服务器接收回所选层。对于给定块,曲线信息可以包括该工具用来将失真确定为块的可缩放层的下载时间的函数的速率-失真信息。例如,在确定速率失真偏好时,对于一个或多个块的段,该工具确定该段的总体回放时间约束。对于段中的一个或多个块中的每一个,该工具选择下载时间从而减少段中的一个或多个块之间的总体失真,同时还满足该段的总体回放时间约束。下载时间的选择可以包括设置权重参数从而使得该段的累计下载时间匹配总体回放时间约束。对于包括多个块的段,块的下载时间的选择可以包括将段拆分成多个子段。随后, 对于多个子段中的每一个,该工具确定子段的总体回放时间约束,并且对于子段中的一个或多个块中的每一个,选择下载时间从而减少子段中的一个或多个块之间的总体失真,同时还满足子段的总体回放时间约束。根据此处描述的技术和工具的第三方面,诸如媒体客户机等的工具接收被组织成多个块的媒体数据的流头部,其中多个块中的每一个已经被编码为带有精细粒度可缩放性的不同质量水平的多个可缩放层。该工具接收多个块的曲线信息。对于多个块中的每一个, 块的曲线信息指示与块的多个可缩放层中的每一个相关联的不同速率-失真点。该工具分别确定多个块的速率-失真偏好并发送速率-失真偏好。对于多个块中的每一个,该工具接收块的一个或多个可缩放层。通过下面的结合附图对本发明进行的详细描述,本发明的前述和其他目标、特点和优点将变得更加显而易见。提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征, 也不旨在用于限定所要求保护的主题的范围。附图简述

图1是示出其中可以实现所描述的若干技术和工具的合适的计算环境的框图。图2是示出其中可以实现若干所描述的技术和工具的示例可缩放媒体递送系统的图。图3是示出用具有可缩放层的块来组织的已编码媒体的示例文件格式的图。图4是示出可缩放媒体的不同块的失真-下载时间曲线的图表。图5是示出用于将曲线信息和媒体的可缩放层递送给客户机的一般化技术的流程图。图6是示出用于处理曲线信息和向服务器请求媒体的可缩放层的一般化技术的流程图。图7是示出用于确定媒体的各块的速率-失真偏好的示例技术的流程图。详细描述本申请涉及用于可缩放媒体递送的精细粒度的客户机侧控制的技术和工具。这些技术和工具允许客户机通过选择媒体的比特率/质量水平来定制其回放体验。增加在对媒体的各块进行编码时所使用的比特率/质量水平选项的数量允许客户机更精确地定制其对其回放偏好、媒体复杂性的变化和网络状况的变化的选择。例如,服务器存储已经用多个比特率可缩放地编码(并因此多个质量水平)的媒体内容的各块。对于客户机,服务器发送关于对各块可用的多个比特率/质量水平的信息。 考虑该信息,客户机通过为该客户机希望回放的每一块选择比特率/质量水平来定制其回放体验。在决定要选择哪些比特率/质量水平时,客户机可以考虑多个因素。客户机可以为要回放的每一块选择比特率/质量水平从而具有服从诸如服务器和客户机之间的网络状况之类的约束、优选启动等待时间和优选假信号容忍度的可能的最佳质量。网络状况包括可以由于网络拥塞或其他因素而随着时间变化的网络带宽和网络延时。启动等待时间指的是在客户机在开始解码和回放媒体内容之前缓存媒体内容的延时。增加启动延时允许客户
7机缓存更多的媒体内容,这通常允许客户机提升总体质量水平。然而,用户通常偏好小的启动等待时间从而回放更快地开始。术语假信号指的是由于丢失数据而导致的回放中断。例如,当解码器在回放期间到达一帧音频或视频但丢失需要用于解码帧的数据时,解码器停止回放或试图隐藏丢失部分。通常,客户机对假信号具有极少的容忍度或没有容忍度。或者,客户机考虑其它和/或附加因素。在某些实现中,可缩放媒体编码器使用媒体内容的频率系数的比特面编码。客户机通过从嵌入的比特流中选择一个或多个比特面来为块选择比特率/质量水平。这类似于允许客户机执行编码的系数的简单的速率-失真量化。虽然比特面选择不允许客户机控制诸如变换块大小或过滤参数等编码器设置,但它为不同客户机提供了一种定制那些客户机回放的编码结果的方式。速率粒度和质量控制取决于块的大小和比特面的数量。每块具有越多的比特面和越小的块提供了对客户机的越精细粒度的控制,而每块具有越少的比特面或越大的块给予客户机越少的选项和越粗略的控制粒度。取决于实现,可缩放媒体编码器可以在嵌入表示中使用较精细的可缩放性(例如,精细到逼近比特粒度的水平)或较粗略的可缩放性(例如,带有基层和若干残留层),只要在每块的多个速率/质量点中的任一处的截断得到有效的比特流。或者,可缩放媒体编码器提供可缩放层但不使用比特面编码或嵌入比特流。除了提供带有在块边界切换比特率和质量的能力的客户机之外,在某些实现中, 此处描述的可缩放媒体递送体系结构结合大规模内容递送网络(“CDN”)来实现。例如, 用来递送带有HTTP分组的Web内容的⑶N还可以高速缓存媒体内容以供递送给客户机。 当CDN包括在分布式地理位置高速缓存媒体内容的多个服务器时,客户机-服务器下载时间可以由于地理邻近和服务器负载平衡而减少。此外,在某些实现中,尽管对某些CDN的高速缓存限制使得大型文件的高速缓存变得有问题,但精细粒度的可缩放性导致已编码媒体内容块的各层的较小的文件大小。为了利用客户机侧速率控制的优点,CDN中的服务器存储用大速率数和质量水平编码的媒体,其中不同的速率与给定块的不同文件集相对应。例如,从可缩放媒体编码器输出的嵌入比特流被拆分成块的不同文件(带有与不同的系数量化水平相对应的不同水平的比特流截断),并且现有CDN中的服务器存储该不同文件,这便于客户机在没有对现有CDN的服务器进行服务器侧修改的情况下的精细粒度的速率控制。 或者,代替使不同的可缩放层的截断点与单独文件的文件边界对齐(从而使得客户机在指示其速率-失真偏好时整体地请求特定文件集或请求对应于文件集的比特数),服务器可以改为存储带有不同可缩放层的嵌入比特流的单个文件。在这种情况下,服务器响应于来自客户机的速率-失真偏好(例如,字节范围请求)在单个文件中的任意位置处截断比特流。或者,服务器可以使用这些机制的组合,为多个文件中的每一个中的一个或多个不同层的至少一部分存储嵌入比特流。响应于来自客户机的速率-失真偏好(例如,整体地发送文件0、文件1和文件2,并且只发送块7的文件3的字节0到900或只发送块7的6300个字节),服务器可以发送一个或多个完整文件和/或对应于嵌入比特流中的截断点的部分文件。此处描述的技术和工具的发明性方面,包括但不限于以下各项 1.将可缩放媒体编码器和解码器用于精细粒度的客户机侧的速率控制。精细粒度的客户机侧的速率控制允许不同的客户机精确地对其各自的情况定制媒体递送和回放。
2.使用指示媒体内容的块的可缩放层的速率-失真特性的曲线信息。服务器存储各块的曲线信息并将曲线信息发送给客户机,客户机评估曲线信息并确定各块中的每一个的速率-失真偏好。不同的块通常具有不同的曲线信息。曲线信息有效地对各个块的速率-失真属性进行参数化以便精细粒度的客户机侧的速率控制。3.客户机在评估速率-失真曲线信息时用来确定请求媒体内容的哪些比特率/质量水平的决策制定过程。通过使用速率-失真曲线信息来将失真确定为下载时间的函数, 决策制定过程帮助客户机改进速率-失真性能同时还考虑网络状况及其回放偏好。4.现有HTTP CDN的请求机制(例如,字节范围GET请求)的使用来获得媒体内容的所需比特数。充分利用现有CDN基础结构简化了带有精细粒度的客户机侧速率控制的可缩放媒体递送的实现。通过利用已经普遍的现有HTTP服务器,帮助避免了使用专用媒体服务器的需要。此处所描述的实现方式可能有各种不同的替代方案。通过改变流程图所示出的阶段的顺序,通过拆分、重复或省略某些阶段等等,可以改变参考流程图所描述的某些技术。 可缩放媒体递送的精细粒度的客户机侧控制的不同方面可以组合使用或单独使用。不同的实施例实现所描述的技术和工具的一个或多个。此处所描述的一些技术和工具解决背景中指出的一个或多个问题。通常,给定的技术/工具不会解决所有这样的问题。I.计算环境图1示出了其中可以实现所描述的若干技术和工具的合适的计算环境(100)的一般化示例。操作环境(100)不旨在对使用范围或功能提出任何限制,因为技术和工具可以在各种通用或专用计算环境中实现。参考图1,计算环境(100)包括至少一个处理单元(110)和存储器(120)。在图1 中,此最基本配置(130)包括在虚线内。处理单元(110)执行计算机可执行指令,并可以是现实的或虚拟的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。存储器(120)可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,R0M、EEPR0M、闪存等等),或两者的某种组合。存储器(120)存储实现可缩放媒体递送的精细粒度的客户机侧控制的服务器侧和/或客户机侧功能的软件(180)。计算环境可以具有附加特征。例如,计算环境(100)包括存储器(140)、一个或多个输入设备(150)、一个或多个输出设备(160),以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算环境(100)的组件互连在一起。通常, 操作系统软件(未示出)为在计算环境(100)中执行的其他软件提供操作环境,并协调计算环境(100)的各组件的活动。存储设备(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、 CD-ROM、DVD,或能用于存储信息且可以在计算环境(100)内被访问的任何其他介质。存储设备(140)存储用于实现可缩放媒体递送的精细粒度的客户机侧控制的服务器侧和/或客户机侧功能的软件(180)的指令。输入设备(150)可以是诸如键盘、鼠标、笔或轨迹球之类的触摸输入设备、语音输入设备、扫描设备、或向计算环境(100)提供输入的另一设备。对于音频或视频编码,输入设备(150)可以是声卡、视频卡、TV调谐器卡,或接受模拟或数字形式的音频或视频输入的
9类似的设备,或将音频或视频采样读取到计算环境(100)中的CD-ROM或CD-RW。输出设备 (160)可以是显示器、打印机、扬声器、CD-写入器,或从计算环境(100)提供输出的另一设备。通信连接(170)允许通过通信介质与另一个计算实体进行通信。通信介质在已调数据信号中传送诸如计算机可执行指令、音频或视频输入或输出之类的信息或其他数据。 已调制数据信号是以在信号中编码信息的方式来设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括利用电气、光学、射频(RF)、红外线、声音或其他载体实现的有线或无线技术。可以在计算机可读介质的一般上下文中来描述技术和工具。计算机可读介质是可以在计算环境内被访问的任何可用介质。作为示例而非限制,对于计算环境(100),计算机可读介质包括存储器(120)、存储设备(140)、通信介质,以及上面各项中的任何项的组合。可以在诸如在目标实际或虚拟处理器上的计算环境中执行的诸如程序模块中所包括的那些计算机可执行指令之类的计算机可执行指令的一般上下文中来描述技术和工具。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等等。程序模块的功能可以按需在各个实施例中进行组合或在程序模块之间拆分。程序模块的计算机可执行指令可以在本地或分布式计算环境内执行。为了呈现起见,本详细描述使用了如“选择”和“重构”等术语来描述计算环境中的计算机操作。这些术语是对于由计算机执行的操作的高级抽象,不应该与人执行的动作相混淆。与这些术语相对应的实际计算机操作随着实现不同而不同。II.网络环境图2示出包括通过网络(230)来将媒体内容分发给多个媒体客户机(250 J60、 270)的服务器Q10、220)的示例可缩放媒体递送系统000)。网络(230)可以包括因特网或另一计算机网络。媒体服务器(210)包括用于对诸如音频或视频之类的媒体进行编码的可缩放媒体编码器(21 。可缩放媒体编码器(21 将单独的媒体块编码为不同的质量/比特率层, 这便于取决于不同层的数量的可为精细粒度或粗略粒度的可缩放性。可缩放媒体编码器 (212)可以使用媒体的频谱系数的比特面编码来产生嵌入层。有了该嵌入层,媒体客户机对所需数量或范围的比特的请求导致在所需比特数处或恰好在所需比特数下的一组层的选择。或者,可缩放媒体编码器(21 使用另一编码方案。此外,虽然图2示出可缩放媒体编码器(21 和服务器侧控制器(214) —起在媒体服务器010)中,可替换地,媒体服务器 (210)从媒体服务器(210)外部的可缩放媒体编码器接收已编码媒体内容。媒体服务器(210)用媒体的每一块的可缩放层的形式来存储已编码数据以及媒体的头部信息(例如,流头部)。另外,媒体服务器(210)存储各块中的每一个的速率-失真曲线信息。例如,速率-失真曲线信息包括给定块的每一可缩放层的质量(或失真)信息以及速率信息。或者,一组参数指示给定块的速率-失真曲线的形状。媒体服务器(210) 可在不同文件中存储块的不同可缩放层,存储带有被组织成嵌入比特流的不同可缩放层的单个文件,或存储各自具有一个或多个不同可缩放层的至少一部分的嵌入比特流的多个文件。服务器侧媒体控制器(214)管理与一个或多个媒体客户机Q50、260、270)的连接。当给定媒体客户机请求媒体流时,服务器侧媒体控制器(214)将流的流头部连同媒体流中的部分或全部块的速率-失真曲线信息一起发送给媒体客户机。对于块,服务器侧媒体控制器(214)最后从媒体客户机接收指示块的速率-失真偏好的反馈。考虑块的速率-失真偏好,服务器侧控制器(214)选择该块的一个或多个可缩放层并将所选层发送给媒体客户机。例如,服务器侧控制器(214)选择共同满足或接近满足媒体客户机的速率-失真偏好的该块的可缩放层。一般而言,媒体服务器(210)和服务器侧媒体控制器(214)是 “哑的”,因为它们用简单而直接的方式对来自客户机O50、260、270)的反馈作出反应。这帮助服务器(210)并发地管理与大量客户机的连接,并且这简化了适配现有服务器以协作媒体递送的精细粒度的客户机侧控制的任务。在图2中,第二服务器(220)示出其中服务器(220)只是存储和提供媒体内容的各块的不同可缩放层的文件的Web服务器的示例实现。例如,分开的可缩放媒体编码器离线地对媒体内容进行编码。服务器(220)将给定块的不同可缩放层存储为不同的文件,或存储为带有被组织成嵌入比特流的不同可缩放层的单个文件,或存储为各自具有一个或多个不同可缩放层的至少一部分的嵌入比特流的多个文件。服务器(220)还存储流头部的程序描述信息以及媒体内容的各块的速率-失真曲线信息。在服务器Ο20)中,服务器侧控制器被实现为检索文件或文件范围来发送给媒体客户机Ο50、260、270)中的一个或多个的文件服务器OM)。客户机(250J60、270)中的一个请求头部文件(例如,包括程序描述信息和速率-失真曲线信息),服务器(220)简单地将该头部文件提供给客户机。客户机随后请求与媒体内容的各块的可缩放层相对应的文件或文件范围,并且服务器(220)简单地将所请求的内容提供给客户机。媒体客户机(250)包括客户机侧控制器(254)和用于对诸如音频或视频之类的媒体进行解码的可缩放媒体解码器(25 。在请求了媒体流之后,客户机侧控制器(254)接收流头部以及媒体流中的部分或全部块的速率-失真曲线信息。对于长的流或在捕捉之后短暂延迟递送的流,客户机侧控制器可以接收各块的子集的速率-失真曲线信息,稍后提供其他块的更多的曲线信息。媒体客户机(250)具有在解码之前临时地存储媒体流的已编码数据的缓存。基于块的速率-失真信息以及诸如缓存充满度(可以是所需等待时间的函数,先前下载的块的比特率和回放率,以及网络状况)之类的准则和/或所估计的下载时间(作为速率和块的函数),客户机侧控制器(254)寻找该块的速率-失真偏好。例如,客户机侧控制器(254) 寻找块的速率分配并请求块的比特数或比特范围。在某些实现中,客户机侧控制器(254) 发送对于块的比特的字节范围请求GET。或者,客户机侧控制器发送对与块的速率-失真偏好相对应的特定文件和/或文件范围的请求。可缩放媒体解码器(25 对被编码为不同质量/比特率层的媒体的各个块进行解码。可缩放媒体解码器(252)可以使用媒体的频谱系数的比特面解码。一般而言,响应于对块的所需比特数或比特范围的请求,可缩放媒体解码器(25 通过使用由客户机侧控制器 (254)接收的层来重构块。或者,可缩放媒体解码器(25 使用另一解码方案。此外,虽然图2示出可缩放媒体解码器(25 和客户机侧控制器(254) —起在媒体客户机O50)中, 但媒体客户机(250)另选地将已编码媒体内容输出给媒体客户机(250)外部的可缩放媒体解码器。
11
III.示例可缩放媒体组织和文件格式结合可缩放媒体递送的精细粒度的客户机侧控制,可缩放媒体编码器和解码器可以将各种编码/解码技术和文件格式中的任一种用于已编码数据。本章节描述了示例文件格式和组织已编码媒体的方式。编码器将媒体内容分成独立编码的各块。约束编码以避免块间依赖性便于随机存取功能,因为解码可以在任意给定块开始。例如,对于视频,块可以是包括帧内编码图片然后是帧间编码图像的封闭图片组(“G0P”),在GOP外部的图片之间不存在依赖性。对于音频,在许多编码方法中,音频样本的各帧缺少帧间依赖性,并且块是某一整数个的帧。在随机存取之后,在查找位置对初始帧的开始处的样本的诸如重叠-加操作之类的操作被忽略。一般而言,将媒体内容划分成独立的块取决于实现。不同类型的媒体块不必在块边界上同步。或者,编码器约束块间的依赖性来允许块的最低比特率版本之间的依赖性。允许块间的依赖性可以促进较高的压缩效率,以随机存取功能为某些代价。例如,在查找位置开始回放时,客户机下载和重构查找位置处的块所依赖于的先前的块。一旦将内容分成各个块,编码器用多个比特率(并因此多个质量水平)对各块进行编码。假定恒定的传输速率,已编码媒体的块的比特率与块的文件大小相对应。为了改进客户机侧速率控制的灵活性,服务器增加了可用比特率(和质量水平)的数量。在某些实现中,编码器使用来自可缩放媒体编码的输出的嵌入比特流来实现精细粒度的可缩放性。比特流截断通过选择比特率/质量水平点来设置块的相应系数的量化水平。本质上,调节系数的量化允许客户机控制客户机请求的系数的速率-失真性能。然而,它不允许客户机控制更复杂的编码设置。通常,这不显著破坏质量,只要比特率范围不是非常大,此时编码器可以用其他方式在不同质量/速率极端处使用不同设置。或者,除了比特面编码或者与比特面编码组合,媒体编码沿空间、时间、色彩空间和/或采样深度维度来使用可缩放编码。可缩放性的粒度取决于实现。理论上,粒度可以与比特级粒度一样精细。实际上, 对于给定块,使用基层和所需数量的残留层通常向客户机提供可接受数量的比特率/质量水平点,只要对不同块的不同比特率/质量水平的任意选择得到有效的比特流。图3示出媒体内容的已编码块的文件(300)的示例文件格式。文件(300)的组织帮助服务器用不同的速率/指令水平将媒体内容递送给不同的客户机。对于有关某些实现中的文件格式的附加细节,参见2008年5月12日提交的题为“Optimized Client Side Rate Control and Indexed File Layout for StreamingMediaWtt^ 户机侧速率控制和索引的文件布局),,的第12/119,364号美国专利,该专利的公开内容通过引用结合于此。或者,服务器使用另一格式的文件用于媒体数据的已编码块。文件(300)具有包括关于媒体内容的完整流的参数的程序描述域(310)。这些参数可以包括关于流的元数据以及关于编码/解码设置的信息。文件(300)还包括流的文件级索引(320)。索引(320)存储流中的媒体内容的各块的速率-失真曲线信息。例如,索引(320)存储对块可用的比特率/质量水平的数量以及每一层的大小信息和质量信息,这些信息指示块的速率-失真曲线上的点。或者,更一般地,索引(320)存储用某一其他方式参数化,例如,作为参数表示的块的速率-失真曲线信肩、ο
12
图3示出文件(300)中m个块的数据。块0的索引(330)引用块0的媒体数据文件(340),块1的索引(331)引用块1的媒体数据文件(341),以此类推。图3示出块0的媒体数据文件(340)的详细内容,它包括公用数据域(350)和带有可以具有可变大小的η个不同比特率/质量水平的数据的层数据域(352)。公用数据域(350)包括编码/解码参数和回放块时总是使用的其他信息。层数据域(35 包括基层0(360)和从对块进行可缩放媒体编码成可以具有可变大小的η个层中得到的n-1个残留层(361、362、369)。例如,n_l 个残留层(361、362、369)存储从嵌入比特流中拆分中的已编码频谱系数数据。在某些实现中,层(360... 369)中的每一个将一个或多个不同可缩放层的至少一部分存储为嵌入比特流。为了回放流,客户机请求和接收流的程序描述域(310)和文件级索引(320)。对于每一块,客户机请求和接收公用数据(350),并且考虑适用于块的文件级索引(320)信息, 从块的层数据域(352)中请求(例如,通过使用字节范围请求)和接收零个或多个层(或其范围)。通常,层数据域(352)使用块的大部分比特率,并且客户机通过选择要请求多少层数据域(35 来选择用于块的回放的速率/质量点。根据图3所示的文件(300)的文件格式,可缩放媒体编码器产生被分为块的层数据域(35 的η个可缩放层,其中文件级索引(320)存储指示块的相应的η个可缩放层的大小和失真的信息。客户机可以使用字节范围请求或其他机制来得到所需数量的层。或者, 可缩放媒体编码器产生其中每一比特(或字节)可以被认为是单个层并且比特(或字节) 数量是固定大小的层的数量的嵌入比特流。在这种情况下,服务器不必存储或发送层的大小信息,因为客户机只从层数据域(352)请求所需比特(或字节)数。媒体递送的精细粒度的客户机侧控制的某些示例实现因此结合媒体的比特面编码来工作,该比特面编码提供了非常精细粒度的可缩放性,例如,因为变换系数被组织成用于在任意速率-失真点处的灵活划分。IV.理论和示例本章节中的简化示例示出速率-失真优化和用于可缩放媒体的流的其他优化的原理。Α.速率-失真优化如果层具有固定大小(例如,每层整数N个字节)并且总比特预算是该固定大小的整数倍(例如,客户机的解码器缓存的整数ZxN个字节),则客户机可以使用速率-失真技术来寻找最优速率分配。(一般而言,如此处所使用的,术语“最优”描述了根据某一参数化或建模,比其它解决方案更好满足某组准则的解决方案,该解决方案取决于环境在绝对方面可以是也可以不是最优的,而术语“优化”用于指示找到这一解决方案的过程。)流包括M个块。第i个块的失真Di是速率的函数,如Di [Ri]给出的,其中氏是第 i个块的速率(用于第i个块的比特数)。在回放第i个块的同时通过服务器和客户机之间的信道下载的比特计数是Bi,其中比特计数对于不同的块可以随时间改变。B—是初始缓存充满度直,并假定、为零。客户机应用约束使解码器缓存从不饿死(遭受下溢)。换言之,假定最小的网络连接,当客户机准备解码和回放媒体块时,解码器缓存总是包括媒体块的已编码数据。客户机还可以施加约束使解码器缓存从不溢出,或者可以假定关于解码器缓存的存储空间的无限可用性并忽略溢出阻止约束。为了阻止缓存在回放第i个块时下溢,客户机检查约束
i (-1
YRj^Bj=MifBt,
>=0J=-I并且客户机为直到i的段中的所有块检查该缓存下溢阻止约束。因此,对于块0, 客户机检查约束R0 ^ B—,它意味着用于块0的比特必须少于初始缓存充满度,或者,换言之,用于块0的比特必须少于在初始启动延时期间下载的比特数。对于块1,客户机检查约束VR1 SB-JBci,它意味着用于块0和块1的比特必须少于在初始延时和块0的回放期间下载的比特数,以便使块1的回放准时开始。对于块2,客户机检查约束Rc^RJR2彡BJBfB1, 以此类推。客户机为媒体流的M个块寻找一组速率从而服从满足全部M个块的缓存下溢阻止
约束,总体失真被最小化
M-I
Ds=XA^,]。
/=0较简单的问题是给定作为M个块的最后一个的缓存下溢阻止约束累计Bsh,寻找速率分配。这一较简单的问题的解决方法可以使用拉格朗日乘子来建模并且等价于最小化
W-IJ = J^iDiIRi] +ARi)。
/=0客户机寻找满足缓存下溢阻止约束累计Bsh的λ。对速率部分求导,并将结果
QJ 3D . Λ dD ,…
设为零来寻找拐点,得到 = ‘ +义=0。假设‘=名[代],速率到导数的映射。通过代
入,于是最优速率分配是Cli [Ri] =-λ。在应用将导数映射到速率的逆函数《…之后,则 Ri=Ci;'[-λ]。为了寻找同时还满足M个块的最后一个的缓存下溢阻止约束累计Bsh的M个块的一组速率Ri (其中i = 0. . . M-1),客户机寻找λ从而使得
M-I
ΣΟ^ι=累计
/=0贝U,对于段中从0到M-I的任意给定块i,最优速率由^= OM给出。因子λ指示M个块的速率失真曲线上的斜率。当将相同的因子λ应用于全部M 个块时,对于各块中的每一个,在该块的曲线上的相同斜率处选择速率-失真点,考虑到曲线的凸形,该点是最优的。如果要通过将比特从第一块转移到第二块来重新分配比特,则第一块的失真的增加(由于向上移动到曲线的更陡峭的部分)将超过第二块的失真的减少 (由于向下移动到曲线较不陡峭的部分)。对于给定的总体缓存下溢阻止约束,客户机进而将斜率设为在各个块的曲线上的各块的累计速率满足总体约束的点处相同。如果满足缓存下溢阻止约束累计Bsh的最优速率分配还满足段中的每一个其他块 i的累计Bi,则客户机已经找到了 M个块的可接受的一组速率。然而,如果对于至少一个块违反了缓存下溢阻止约束,则客户机从违反约束的部分中移除比特并将它们重新分配到各块的其余部分。例如,假设客户机检查满足总体约束累计Bsh的速率分配以及满足约束累计 的速率分配,其中k < M。客户机寻找在i = M-I时满足缓存下溢阻止约束的权重参数λ的值
权利要求
1.一种递送被组织为多个块的媒体数据的方法,所述多个块中的每一个被编码为带有精细粒度的可缩放性的不同质量水平的多个可缩放层,所述方法包括发送(510)所述多个块的曲线信息;以及对于所述多个块中的每一个 接收(520)指示速率-失真偏好的反馈;至少部分地基于所述速率-失真偏好,从所述块的所述多个可缩放层中选择(530) — 个或多个可缩放层;以及发送640)所述块的所选一个或多个可缩放层。
2.如权利要求1所述的方法,其特征在于,所述多个块中的每一个在不依赖于所述多个块中的任何其他块的情况下被编码,并且所述方法还包括发送被组织为多个块的媒体数据的流头部。
3.如权利要求1所述的方法,其特征在于,对于所述多个块中的每一个 所述多个可缩放层包括基层和多个残留层;所述块的所述基层总是被选择并发送;以及取决于所述速率-失真偏好来选择和发送所述块的多个残留层中的零个或更多。
4.如权利要求1所述的方法,其特征在于,对于所述多个块中的每一个,所述多个可缩放层包括从所述块的比特面编码中得到的一个或多个残留嵌入层,所述一个或多个残留嵌入层中的每一个表示所述块的变换系数的比特面。
5.如权利要求1所述的方法,其特征在于,对于所述多个块中的每一个,所述曲线信息包括对所述块的速率-失真曲线进行参数化的速率-失真点。
6.如权利要求5所述的方法,其特征在于,对于所述块的多个可缩放层中的每一个,所述曲线信息包括指示所述可缩放层的比特计数的速率信息。
7.如权利要求1所述的方法,其特征在于,对于所述多个块中的每一个,所述块的曲线信息中的一组参数指示所述块的速率-失真曲线的总体形状。
8.如权利要求1所述的方法,其特征在于,还包括,对于所述多个块中的每一个 用可缩放媒体编码器将所述块编码为所述多个可缩放层;确定所述块的曲线信息;以及将所述块的多个可缩放层以及所述块的曲线信息存储在存储设备中以便递送给多个媒体客户机。
9.一种或多种其上存储有用于处理被组织为多个块的媒体数据的方法的计算机软件指令的存储介质,所述多个块中的每一个被编码为带有精细粒度的可缩放性的不同质量水平 的多个可缩放层,所述方法包括接收(610)所述多个块的曲线信息;以及对于所述多个块中的每一个使用所接收的曲线信息中的至少某些来确定(620)所述块的速率-失真偏好;发送(630)所述块的速率-失真偏好;以及接收(640)所述块的多个可缩放层之中的一个或多个可缩放层。
10.如权利要求9所述的一种或多种存储介质,其特征在于,对于所述多个块中的每一个,对于所述块的多个可缩放层,所述曲线信息至少部分地将失真指示为下载时间的函数;以及确定所述速率-失真偏好包括,对于所述多个块中的一个或多个块的段 确定(710)所述段的回放时间约束;以及对于所述段中的一个或多个块中的每一个,选择下载时间从而减少所述段中的一个或多个块之间的总体失真,同时满足所述段的回放时间约束。
11.如权利要求10所述的一种或多种存储介质,其特征在于,所述段的回放时间约束指示累计时间持续时间,并且为所述段中的一个或多个块中的每一个选择下载时间包括设置权重参数从而使得所述段的累计下载时间匹配所述累计时间持续时间,其中对于所述段中的一个或多个块中的每一个,所述权重参数指示根据所述块的曲线信息的所述块的下载时间。
12.如权利要求10所述的一种或多种存储介质,其特征在于,为所述段中的一个或多个块中的每一个选择下载时间包括将所述段拆分(750)成多个子段;以及对于所述多个子段中的每一个,递归地 确定所述子段的回放时间约束;以及对于所述子段中的一个或多个块中的每一个,选择下载时间从而减少所述子段中的一个或多个块之间的总体失真,同时满足所述子段的回放时间约束。
13.如权利要求9所述的一种或多种存储介质,其特征在于,对于所述多个块中的每一个所述多个可缩放层包括基层和一个或多个残留层; 总是接收所述块的所述基层;以及取决于所述速率-失真偏好来接收所述块的一个或多个残留层中的零个或更多。
14.如权利要求9所述的一种或多种存储介质,其特征在于,所述多个块中的每一个在不依赖于所述多个块中的任何其他块的情况下被编码,并且所述方法还包括接收被组织为多个块的媒体数据的流头部,所述流头部包括被组织为多个块的媒体数据的程序描述信息。
15.如权利要求9所述的一种或多种存储介质,其特征在于,确定所述块的速率-失真偏好包括确定所述块的比特计数或比特范围,并且发送所述块的速率-失真偏好包括发送对所述块的比特计数或比特范围的请求。
16.如权利要求9所述的一种或多种存储介质,其特征在于,所述方法还包括,对于所述多个块中的每一个用可缩放媒体解码器来对所接收的所述块的一个或多个可缩放层进行解码;以及从已解码的一个或多个可缩放层中重构所述块的版本。
17.一种系统,包括 处理器;控制器,适于接收被组织为多个块的媒体数据的流头部,所述多个块中的每一个被编码为带有精细粒度的可缩放性的不同质量水平的多个可缩放层;接收(610)所述多个块的曲线信息,其中对于所述多个块中的每一个,所述块的曲线信息指示与所述块的多个可缩放层中的每一个相关联的不同的速率-失真点;使用所接收的曲线信息来分别确定(620)所述多个块的速率-失真偏好;分别发送(630)所述多个块的速率-失真偏好;以及对于所述多个块中的每一个,接收(640)所述块的多个可缩放层中的一个或多个可缩放层;以及适于对所接收的所述多个块的可缩放层进行解码的可缩放媒体解码器。
18.如权利要求17所述的系统,其特征在于对于所述多个块中的每一个,根据所述不同的速率-失真点,所述曲线信息至少部分地将失真指示为下载时间的函数;以及所述控制器适于通过以下确定所述多个块中的一个或多个块的多个段中的每一个的速率-失真偏好确定(710)所述段的回放时间约束;对于所述段中的一个或多个块中的每一个,选择下载时间从而减少所述段中的一个或多个块之间的总体失真,同时满足所述段的回放时间约束;以及对于所述段中的一个或多个块中的每一个,使用(740)所述块的所选下载时间来确定要请求的所述块的比特计数或比特范围。
19.如权利要求18所述的系统,其特征在于,所述段的回放时间约束指示累计时间持续时间,并且为所述段中的一个或多个块中的每一个选择下载时间包括设置权重参数从而使得所述段的累计下载时间匹配所述累计时间持续时间,其中对于所述段中的一个或多个块中的每一个,所述权重参数指示根据所述块的曲线信息的所述块的下载时间。
20.如权利要求17所述的系统,其特征在于,对于所述多个块中的每一个,所述多个可缩放层包括基层和一个或多个残留层。
全文摘要
描述了用于调整通过网络递送的多个媒体块的质量和比特率的技术和工具。例如,多个块中的每一个用不同的速率/质量点被编码为多个层(例如,基层和多个嵌入残留层)以便精细粒度的可缩放性。服务器存储各块的各层的已编码数据以及对各块的速率-失真曲线进行参数化的曲线信息。服务器将曲线信息发送给客户机。对于多个块,客户机使用曲线信息来确定各个块的速率-失真偏好,然后向服务器发送指示速率-失真偏好的反馈。对于多个块中的每一个,服务器至少部分地基于反馈选择块的一个或多个可缩放层来递送给客户机。
文档编号H04N7/50GK102165775SQ200980139427
公开日2011年8月24日 申请日期2009年8月17日 优先权日2008年9月30日
发明者S·梅若特拉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1