WO2023060029A1 PCT指定期内 客户端控制媒体流节奏的技术
客户端控制媒体流调速的技术 相关申请的交叉引用 [0001] 本申请要求于 2021 年 10 月提交的序列号为 17/495,772 的美国专利申请的权益,在此通过引用将其并入。 背景 各种实施例的领域 [0001] 各种实施例一般涉及流式视频技术,并且更具体地,涉及用于媒体流的客户端控制的步调的技术。 相关技术描述 [0002] 典型的媒体流服务提供对可在一系列不同客户端设备上查看的媒体标题库的访问。 每个客户端设备可以在不同的连接条件下连接到媒体流服务。 在许多实现中,客户端设备执行回放应用,该回放应用打开到在内容分发网络(CDN)中的服务器上执行的媒体分发应用的传输控制协议(TCP)连接。 回放应用程序经常实施一种算法,该算法试图优化在客户端设备上播放媒体标题期间体验到的视觉质量,同时避免由于重新缓冲事件导致的回放中断。 在这些类型的实现中,对于媒体标题的每个离散部分或“块”,算法尝试选择具有最高质量的块的编码版本以基于 TCP 连接的当前性能流式传输到客户端设备。 [0003] 每个编码块都通过数据包流通过 TCP 连接传送。 每个数据包封装不同的 TCP 段,每个 TCP 段封装编码块的不同部分。TCP 连接可以包括任意数量的网络链接,其中给定的网络链接可以在任意数量的连接之间共享。 在一些实现中,如果从所有连接到达链路的数据包的总速率超过链路可以传输数据包的最大速率,则数据包被临时存储在网络缓冲区中,直到可以传输为止。 随着存储在网络缓冲区中的数据包数量的增加,每个存储的数据包和任何被停滞的数据包的延迟 后面存储的数据包增加。 当网络缓冲区已满时,到达链路的数据包将被丢弃或“丢失”,直到到达链路的数据包的总速率低于链路可以传输数据包的最大速率,从而使网络缓冲区耗尽。 [0004] TCP连接中具有最低最大速率的链路通常被称为TCP连接的“瓶颈”链路,并且该瓶颈链路对TCP连接的吞吐量强加了上限。 实际上,除了瓶颈链路的最大速率或“瓶颈速率”之外,TCP 连接可实现的吞吐量还可能受到许多其他因素的限制。 其他因素的一些示例包括但不限于网络条件、竞争连接和 TCP 实现的传输试探法,以确保在尝试尽可能快地传送数据包的同时按顺序传送数据包。 [0005]传统媒体流的一个缺点是 TCP 实现的一些传输试探法可以触发重新缓冲事件。 在这方面,为了估计 TCP 连接随时间的最大可实现吞吐量,许多 TCP 实现在传输编码块时反复引起数据包丢失。 当给定的数据包丢失时,一旦丢失的数据包被恢复,回放应用程序可以结束接收与大量数据包相关联的数据包数据。 更具体地说,TCP 被配置为检测丢失的数据包,然后在检测到后重新传输这些数据包。 同时,因为 TCP 确保数据包的有序传送,TCP 防止回放应用程序访问关于丢失数据包的无序到达客户端设备的任何数据包的数据。 当丢失的数据包最终到达客户端设备时,TCP 使回放应用程序能够访问与丢失数据包关联的数据以及与所有无序数据包关联的数据,这些数据包在恢复和接收之前存储 丢包。 因此,回放应用程序可以在非常短的时间内结束处理潜在大量字节的编码媒体内容。 如果客户端设备具有相对低端的处理器,则相应的处理器使用峰值可能会使处理器过载。 结果,处理器可能无法执行在客户端设备上播放媒体标题所需的媒体呈现操作,并且可能发生“媒体”重新缓冲事件。 如果媒体重新缓冲事件 发生,然后媒体节目的播放被中断,播放应用程序用户的 QoE(体验质量)可能会显着降低。 [0006] 传统媒体流的另一个缺点是,由于除非网络缓冲区已满,否则数据包通常不会被丢弃,因此当网络缓冲区很大时导致数据包丢失会大大增加数据包穿越瓶颈链路的延迟。 如果对延迟敏感的应用程序依赖于共享瓶颈链路的连接,那么该应用程序用户的 QoE 可能会受到负面影响。 例如,与 IP 语音应用程序、在线游戏服务、Web 浏览器、网络服务的用户界面以及共享瓶颈链接的任何其他延迟敏感应用程序相关的关键数据可能会暂时陷入存储在大型网络缓冲区中的数据包积压中。 由此导致的传输延迟增加会使相关用户感到沮丧,甚至会导致共享网络无法用于这些类型的应用程序。 [0007] 如前所述,本领域需要的是用于通过TCP连接传输编码的媒体标题块的更有效的技术。 概括 [0008] 一个实施例阐述了一种用于传输媒体标题的编码块的计算机实现的方法。 该方法包括经由媒体信道接收已经通过传输控制协议(TCP)连接传输的第一编码块请求; 经由侧信道接收与第一编码块请求相关联并且已经通过TCP连接传输的第一定步规范; 检索对应于第一编码块请求的第一编码块内容; 基于第一起搏规范将第一参数设置为等于第一参数值; 根据第一参数值,使对应于第一编码块内容的TCP段经由媒体信道在TCP连接上被传输。 [0009] 所公开的技术相对于现有技术的至少一个技术优势在于,通过所公开的技术,可以根据实际需要优化在媒体流传输期间将携带编码媒体内容的数据包发射到TCP连接上的速率和间隔。 的播放应用程序。 在这方面,利用所公开的技术,侧通道使 回放应用程序实施不同级别的步调,以减少数据包到达瓶颈链路时的突发性,从而减少数据包丢失的数量。 当回放应用程序在相对低端的处理器上执行时,丢包数量的减少会导致重新缓冲事件的整体减少。 此外,如果数据包发射的起搏速率低于瓶颈速率,则可以减少数据包穿越瓶颈链路的延迟。 因此,可以提高与依赖共享瓶颈链路的任何连接的任何延迟敏感应用相关联的 QoE。 这些技术优势提供了优于现有技术方法的一项或多项技术进步。 附图的简要说明 [0010] 为了能够详细理解各种实施例的上述特征的方式,以上简要概括的发明构思的更具体的描述可以通过参考各种实施例来获得,其中一些实施例在 附图。 然而,要注意的是,附图仅示出了本发明构思的典型实施例,因此不应被视为以任何方式限制范围,并且存在其他同等有效的实施例。 [0011] 图1是被配置为实现各种实施例的一个或多个方面的系统的概念图; [0012] 图2是根据各种实施例的图1的调步请求引擎的更详细图示; [0013] 图3A是根据各种实施例的在媒体信道上传输的图1的编码块内容的更详细图示; [0014] 图3B是根据各种实施例在未实现客户端控制的定步时图3A的TCP段的更详细图示; [0015] 图3C是根据各种实施例的当根据定步规范实现客户端控制的定步时图3A的TCP段的更详细图示; [0016] 图3D是根据其他各种实施例的当客户端控制的步调根据另一步调规范实现时图3A的TCP段的更详细图示; 和 [0017] 图4是根据各种实施例的用于在流式传输期间通过TCP连接传输媒体标题的编码块的方法步骤的流程图。 详细说明 [0018] 在下面的描述中,阐述了许多具体细节以提供对各种实施例的更透彻的理解。 然而,对于本领域的技术人员来说显而易见的是,可以在没有这些具体细节中的一个或多个的情况下实践本发明的构思。 [0019] 为了使媒体标题库能够在广泛的网络条件下高效地交付给不同的客户端设备,典型的媒体流服务通过 CDN 存储每个可用媒体标题的多个预生成编码版本。 为了在客户端设备上播放媒体标题,在播放设备上执行的播放应用程序打开到在 CDN 中的服务器上执行的媒体传送应用程序的 TCP 连接。 在媒体标题的播放过程中,播放应用程序尝试逐步选择一系列编码块以流式传输到客户端设备,从用户的角度优化视觉质量,而不会超过 TCP 连接的吞吐量。 为了将每个编码块传送到客户端设备,媒体传送应用程序使服务器 TCP/IP 堆栈将数据包流发送到 TCP 连接上。 每个数据包封装不同的 TCP 段,每个 TCP 段封装编码块的不同部分。 在客户端设备上执行的客户端 TCP/IP 堆栈提取并临时存储数据包携带的编码媒体内容的字节。 客户端 TCP/IP 堆栈允许客户端应用程序按播放顺序访问存储的编码媒体内容字节。 [0020]传统媒体流的一个缺点是服务器 TCP/IP 堆栈根据传输试探法控制交互响应数据包的发送,这可能会导致媒体标题播放期间出现暂时停顿。 例如,许多 TCP 实现反复导致数据包丢失,作为尽可能快地传递数据包的持续尝试的一部分。 数据包丢失后,客户端 TCP/IP 堆栈防止播放应用程序访问与丢失数据包乱序接收的任何数据包关联的编码媒体内容,直到客户端设备接收到丢失数据包的重传版本。 当客户端设备接收到丢失数据包的重传版本时,由于回放应用程序处理与丢失数据包和所有无序数据包相对应的潜在大量编码媒体内容,因此处理器使用率可能会达到峰值。 如果客户端设备具有相对低端的处理器,则处理器可能无法执行在客户端设备上播放媒体标题所需的媒体渲染操作,并且可能发生媒体重新缓冲事件。 如果发生媒体重新缓冲事件,则媒体标题的播放会中断,并且播放应用程序用户的 QoE(体验质量)会显着降低。 [0021] 传统媒体流的另一个缺点是,引起数据包丢失会大大增加数据包通过 TCP 连接的最慢或瓶颈链路的延迟。 延迟的增加归因于存储在瓶颈链路之前的网络缓冲区中的数据包积压。 当超过瓶颈速率(即瓶颈链路可以传输数据的最高速率)时,网络缓冲区可以临时存储有限数量的“溢出”数据包。 如果对延迟敏感的应用程序依赖于共享瓶颈链路的连接,那么该应用程序用户的 QoE 可能会受到负面影响。 [0022] 然而,利用所公开的技术,媒体传送应用程序使回放应用程序能够控制将每个编码块传送到回放应用程序的分组发射的步调。 在一些实施例中,在选择用于回放的编码块之后,回放应用分别经由媒体信道和侧信道在TCP连接上传输对应的编码块请求和定步规范。 根据步调规范,媒体传送应用程序设置 TCP 参数,这些参数控制一个或多个 TCP 段的突发之间的最小时间间隔以及每个突发中允许的 TCP 段的最大数量。 媒体传送应用将对应于选择的编码块请求的编码块内容中继到服务器TCP/互联网协议(IP)栈以用于传输到回放应用。 作为响应,服务器 TCP/IP 堆栈将编码的块内容划分为 TCP 段,并根据 TCP 参数将携带 TCP 段的数据包发送到媒体通道上。 由此产生的数据包排放是 随着时间的推移大致均匀分布。 每个块可选地通过 TCP 连接由媒体交付应用程序生成的服务器元数据伴随,并且服务器 TCP/IP 堆栈通过边信道传输。 服务器元数据可以包括但不限于任何数量和/或类型的与确定分组发射的步调相关的数据,例如TCP连接的分组速率丢失。 [0023]回放应用程序可以使用任何数量和/或类型的算法、试探法、规则等,并基于任何数量和/或类型的相关数据,以任何技术上可行的方式确定给定编码块的步调规范。 在一些实施例中,回放应用程序基于客户端设备的处理能力确定每个突发允许的 TCP 段的最大数量或“最大段”。 例如,如果客户端设备具有相对低端的处理器,则回放应用程序可以将最大段数设置为等于 1,以使数据包发射随时间尽可能均匀地分布。 在相同或其他实施例中,回放应用基于所选编码块的大小和媒体标题的相应编码版本的平均编码率来计算每个所选编码块的瞬时编码率。 基于瞬时编码率、存储在客户端设备上的回放缓冲区中的编码媒体内容的量以及数据包丢失率,回放应用程序确定数据包发射的步调速率。 通常,回放应用程序设置步调速率,使得在编码块的传输和解码期间回放的媒体内容量与回放应用程序解码编码块时生成的块的大小相称。 然后,回放应用程序根据最大片段和步调速率计算数据包突发之间的最小时间间隙或“最小间隙”。 [0024] 所公开的技术相对于现有技术的至少一个技术优势是媒体传送应用程序可以基于回放的实际需要优化在媒体流传输期间将携带编码媒体内容的数据包发射到TCP连接上的速率和间隔 应用。 在这方面,侧信道使回放应用程序能够实现不同级别的步调,随着时间的推移分散数据包到达瓶颈链路的时间,并可以减少数据包丢失的数量(特别是在与其他竞争时 通过共享瓶颈的流量),同时实现媒体标题的不间断播放。 当回放应用程序在相对低端的处理器上执行时,丢包数量的减少会导致重新缓冲事件的整体减少。 此外,如果起搏速率低于瓶颈速率,则可以减少数据包穿越瓶颈链路的延迟。 因此,可以提高与依赖共享瓶颈链路的任何连接的任何延迟敏感应用相关联的 QoE。 这些技术优势提供了优于现有技术方法的一项或多项技术进步。 系统总览 [0025] 图1是被配置为实现各种实施例的一个或多个方面的系统100的概念图。 如图所示,在一些实施例中,系统 100 包括但不限于计算实例 110(0)、计算实例 110(1)、显示设备 158 和基于云的媒体服务 120。为了解释的目的,计算 实例110(0)和计算实例110(1)在本文中也单独称为“计算实例110”并且统称为“计算实例110”。 在一些实施例中,系统100可以包括但不限于任何数量的计算实例110、任何数量的显示设备、任何数量和/或类型的基于云的服务或其任何组合。 在相同或其他实施例中,显示设备158和/或基于云的媒体服务120从系统100中省略。 [0026] 系统100的任何数量的组件可以分布在多个地理位置或以任何组合在一个或多个云计算环境(即,封装的共享资源、软件、数据等)中实现。 在一些实施例中,任何数量的计算实例110可以在云计算环境中实现,作为任何其他分布式计算环境的一部分实现,或者以独立的方式实现。 [0027]如图所示,计算实例110(0)包括但不限于处理器112(0)和存储器116(0)。 同样如图所示,计算实例110(1)包括但不限于处理器112(1)和存储器116(1)。 出于解释的目的,处理器112(0)和处理器112(1)在本文中也被单独称为“处理器112”并且统称为“处理器112”。 出于解释的目的,内存 116(0) 和内存 116(1)在本文中也被单独称为“存储器116”并且统称为“处理器116”。 [0028] 每个处理器112可以是任何能够执行指令的指令执行系统、装置或设备。 例如,每个处理器112可以包括中央处理单元、图形处理单元、控制器、微控制器、状态机或其任何组合。 每个计算实例110的存储器116存储供计算实例110的处理器112使用的诸如软件应用程序和数据的内容。在一些实施例中,每个计算实例110可以包括任何数量的处理器112和任何数量的存储器 116 任意组合。 特别地,任何数量的计算实例110(包括一个)可以以任何技术上可行的方式提供任何数量的多处理环境。 [0029] 每个存储器116可以是任何容易获得的存储器中的一个或多个,例如随机存取存储器、只读存储器、软盘、硬盘或任何其他形式的本地或远程数字存储。 在一些实施例中,存储器(未示出)可以补充或替换任何数量的存储器116。存储器可以包括任何数量和/或类型的外部存储器,其可被任何数量的处理器112访问。例如但不限于, 存储器可以包括安全数字卡、外部闪存、便携式光盘只读存储器、光存储设备、磁存储设备或前述的任何合适的组合。 [0030] 如斜体所示,在一些实施例中,计算实例110(0)是内容分发网络(CDN)中的多个CDN服务器设备之一,其存储媒体标题库的编码媒体内容并将编码媒体内容流式传输到客户端 的流媒体服务。 每个媒体标题可以包括但不限于任何数量的音频内容、任何数量的视频内容或其任何组合。 媒体标题的示例包括但不限于长篇电影、电视节目剧集、音乐视频和播客,仅举几例。 CDN 可以以任何技术上可行的方式存储任何数量和/或类型的编码媒体内容。 [0031] 在一些实施例中,CDN将每个媒体标题的多个预编码版本存储为单独的文件。 媒体标题的每个预编码版本通常 对应于平均比特率和分辨率或“比特率分辨率对”的不同组合,并与不同的平均质量水平相关联。 媒体标题的一组不同的比特率分辨率对在本文中被称为媒体标题的“编码率阶梯”。 存储媒体标题的多个预编码版本增加了媒体标题可以通过 TCP 连接流式传输到客户端而不会出现播放中断的可能性,而不管 TCP 连接的可实现吞吐量如何。 当 TCP 连接可实现的吞吐量相对较低时,“低质量”编码通常流式传输到客户端,而当 TCP 连接可实现的吞吐量相对较高时,“高质量”编码通常流式传输到客户端。 [0032] 在相同或其他实施例中,基于云的媒体服务120包括但不限于微服务、数据库以及用于与既不分配给CDN也不分配给客户端的流媒体服务相关联的活动和内容的存储。 基于云的媒体服务120可以提供的一些功能示例包括但不限于登录和计费、个性化媒体标题推荐、视频转码、服务器和连接健康监控以及客户端特定的CDN指导。 [0033]在一些实施例中,计算实例110(1)是支持超文本传输​​协议(HTTP)、TCP和IP并且可以经由显示设备158回放媒体内容的客户端设备。显示设备158可以是任何类型的设备 可以配置为以任何技术上可行的方式显示任何数量和/或类型的视觉内容。 在相同或其他实施例中,计算实例110(1)、零个或多个其他计算实例、显示设备158和零个或多个其他显示设备被集成到用户设备(未示出)中。 用户设备的一些示例包括但不限于台式计算机、笔记本电脑、智能手机、智能电视、游戏机、平板电脑等。 [0034] 每个计算实例110被配置为实施一个或多个软件应用程序。 仅出于解释的目的,每个软件应用程序被描述为驻留在单个计算实例 110 的存储器 116 中并在单个计算实例 110 的处理器 112 上执行。然而,正如本领域技术人员将认识到的,每个软件应用程序的功能 软件应用程序可以分布在任何数量的其他软件应用程序中,这些软件应用程序驻留在任何数量的计算实例 110 的存储器 116 中并在 任意数量的计算实例110的处理器112以任意组合。 此外,可以将任意数量的软件应用程序的功能合并到单个应用程序或子系统中。 [0035] 在一些实施例中,计算实例110(0)被配置为实现但不限于媒体传送应用程序134和服务器TCP/IP栈140。如图所示,媒体传送应用程序134和服务器TCP/IP栈140驻留在 在计算实例110(0)的存储器116(0)中并在计算实例110(0)的处理器112(0)上执行。 媒体传送应用程序134是用于流媒体服务的CDN服务器,并且服务器TCP/IP栈140使媒体传送应用程序134能够经由包括但不限于TCP和IP的协议集合与其他设备通信。 [0036] 在相同或其他实施例中,计算实例110(1)被配置为实现但不限于回放应用程序160和客户端TCP/IP栈170。如图所示,回放应用程序160和客户端TCP/IP栈170 驻留在计算实例110(1)的存储器116(1)中并在计算实例110(1)的处理器112(1)上执行。 回放应用程序 160 允许用户在显示设备 158 上选择和回放媒体标题的部分,并且客户端 TCP/IP 堆栈 170 使回放应用程序 160 能够通过包括但不限于 TCP 的协议集合与其他设备通信 和知识产权。 [0037] 在一些实施例中,媒体传递应用程序 134 打开到基于云的媒体服务 120 的一个或多个 TCP 连接。媒体传递应用程序 134 和基于云的媒体服务 120 之间的 TCP 连接使基于云的媒体服务 120 能够 监控计算实例 110(0) 和关联连接的健康状况。 在一些实施例中,媒体传送应用程序134可以以任何技术上可行的方式向基于云的媒体服务120传输和/或从基于云的媒体服务120接收任何数量(包括无)和/或类型的数据。 [0038] 在相同或其他实施例中,回放应用程序 160 打开一个或多个到基于云的媒体服务 120 的 TCP 连接,允许媒体传送应用程序 134 的用户选择媒体标题以流式传输到计算实例 110(1) . 在一些实施例中,回放应用程序160可以传输到 和/或以任何技术上可行的方式从基于云的媒体服务120接收任何数量(包括没有)和/或类型的数据。 [0039]在一些实施例中,在用户选择用于流式传输的媒体标题之后,回放应用程序160向基于云的媒体服务120发送指定所选媒体标题的清单请求122。作为响应,基于云的媒体服务120生成清单 基于所选媒体标题、可选的CDN和可选的计算机实例110(1)的文件124。 基于云的媒体服务120将清单文件124传输到回放应用程序160。在一些实施例中,清单请求122是HTTP请求并且清单文件124被封装在HTTP响应中。 [0040] 在相同或其他实施例中,清单文件 124 指定但不限于与所选媒体标题的每个预编码版本相关联的比特率分辨率对和平均质量水平以及预编码版本的编码块的位置 在靠近计算实例110(1)的一个或多个CDN服务器设备中的每一个上选择的媒体标题。 如图所示,在一些实施例中,一个或多个CDN服务器设备包括但不限于计算实例110(0)。 [0041] 每个编码块是所选媒体标题的块的编码版本。 所选媒体标题的每个块表示所选媒体标题的不同非重叠回放周期。 对应于所选媒体标题的相同块的不同编码块以不同的比特率/分辨率对编码,因此包括不同数量的字节。 此外,在一些实施例中,可变比特率编码用于生成所选媒体标题的编码版本。 因此,所选媒体标题的每个编码版本内的每个编码块的瞬时比特率可以不同于所选媒体标题的编码版本的平均比特率。 [0042] 在一些实施例中,在计算实例110(1)上回放所选媒体标题的任何部分之前,回放应用160打开到媒体传送应用134的持久TCP连接130。持久TCP连接130是网络通信信道 对多个 HTTP 请求/响应保持打开状态。 如本文所用,HTTP请求/响应指单个HTTP请求和对应的HTTP响应。 相比之下, 非持久 TCP 连接在单个 HTTP 请求/响应后自动关闭。 在一些实施例中,回放应用程序160可以打开任何数量和/或类型的到任何数量的服务器的TCP连接,而不是打开持久TCP连接130或除了打开持久TCP连接130之外,并且本文描述的技术被相应地修改。 例如,在一些实施例中,回放应用程序160打开到多个CDN服务器的多个TCP连接,其中TCP连接可以是持久的、非持久的或者持久和非持久的组合。 [0043] 随后,在一些实施例中,包括在回放应用程序160中的自适应流媒体引擎164选择所选媒体标题的编码块序列,用于通过持久TCP连接130从媒体传送应用程序134传输到回放应用程序160。 编码块序列是按播放顺序选择的媒体标题的块的编码版本序列。 选择编码块的顺序时,自适应流引擎164试图优化计算实例110(1)上选定媒体标题的视觉质量,同时避免由于重新屏蔽事件而引起的播放中断。 更具体地,对于所选媒体标题的每个块,自适应流引擎164尝试基于持久TCP连接130的当前性能来选择该块的最高可能质量编码版本。 [0044]在一些实施例中,对于每个选择的编码块,回放应用程序 160 通过持久 TCP 连接 130 向媒体传送应用程序 134 发出编码块请求 182。在一些实施例中,编码块请求 182 是一个 HTTP GET 范围请求,其目标是 与存储所选媒体标题的相应编码版本的文件中的所选编码块对应的字节。 响应于编码块请求182,媒体传送应用程序134从编码媒体文件132中检索编码媒体内容的目标字节。编码媒体内容的目标字节在本文中也统称为“编码块内容184”。 然后,媒体应用程序 134 构建指定编码块内容 184 的 HTTP 响应(未显示),并将 HTTP 响应中继到服务器 TCP/IP 堆栈 140。在一些实施例中,服务器 TCP/IP 堆栈 140 将编码的块内容184引导到服务器TCP/IP栈140中包括的TCP传输缓冲器142。 [0045] 服务器TCP/IP栈140将编码块内容184分割成TCP有效载荷并且用TCP报头信息包装每个TCP有效载荷以生成对应的TCP段。 服务器 TCP/IP 堆栈 140 为每个编码块生成的 TCP 段的数量取决于编码块的大小,因此取决于编码块内容 184 的大小。例如,服务器 TCP/IP 堆栈 140 可以生成 1500 2 MB 编码块的 TCP 段。 服务器TCP/IP栈140用IP报头信息包装每个TCP段以生成相应的数据包。 为了将每个分组从计算实例110(0)传输到计算实例110(1),服务器TCP/IP栈140将分组发射到持久TCP连接130上。 [0046] 客户端 TCP/IP 栈 170 接收通过持久 TCP 连接 130 传输的数据包。当客户端 TCP/IP 栈 170 接收到数据包时,客户端 TCP/IP 栈 170 从 数据包。 如图所示,在一些实施例中,客户端 TCP/IP 堆栈 170 将得到的 TCP 有效载荷存储在客户端 TCP/IP 堆栈 170 中包括的 TCP 接收缓冲区 172 中。客户端 TCP/IP 堆栈 170 允许回放应用程序 160 访问 构成TCP有效载荷的字节以与服务器TCP/IP堆栈140将相应数据包发射到持久TCP连接130上的顺序相同的顺序存储在TCP接收缓冲器172中。 [0047] 如前所述,持久TCP连接130包括但不限于任意数量的网络链路,每个网络链路可以在任意数量的连接之间共享。 在一些实施例中,每个链接之前可以有网络缓冲区。 如果到达链路的数据包的总速率超过了链路在任何给定时间可以传输数据包的最大速率,则数据包将暂时存储在前面的网络缓冲区中,除非前面的网络缓冲区已满。 随着网络缓冲区中存储的数据包数量的增加,每个存储的数据包以及滞留在存储的数据包后面的任何数据包的延迟都会增加。 相比之下,如果链路可以传输数据包的最大速率超过在任何给定时间到达链路的数据包的总速率,则随着数据包从网络缓冲区中排出并传输,存储在网络缓冲区中的数据包数量会减少 通过链接。 如果一个 链路前的网络缓冲区已满,到达链路的数据包将被丢弃或丢失,直到网络缓冲区开始耗尽。 [0048]正如本领域技术人员将认识到的,TCP 依赖于确认或“ACK”来确认对应于每个 HTTP 请求(例如,编码块请求 182)的 TCP 段中的哪些已经在任何给定点通过 TCP 连接成功传递 及时。 在 TCP 的某些实现中,当服务器 TCP/IP 堆栈从客户端 TCP/IP 堆栈接收到确认一个或多个 TCP 段成功传递的 ACK 时,服务器 TCP/IP 堆栈将新的 TCP 段封装在新的数据包中并发出 将新数据包发送到持久 TCP 连接 130。在相同或其他实施例中,为了减少空闲时间并提高性能,TCP 允许在任何给定时间发射或发送多个 TCP 段但尚未确认。 已发送但尚未确认的 TCP 段在本文中称为“飞行中”。 TCP 允许飞行的 TCP 段数在本文中称为“发送窗口”。 [0049] 在许多实施例中,TCP 还依赖于 ACK 的存在、ACK 的不存在或两者来检测和/或推断数据包何时丢失。 例如,在 TCP 的某些实现中,当连续的 ACK 重复自身时,服务器 TCP/IP 堆栈推断数据包丢失,ACK 明确标识客户端 TCP/IP 堆栈接收的 TCP 段序列中的间隙,ACK 没有及时到达 方式,或其任何组合。 [0050] 由于 TCP 保证无损传送,如果服务器 TCP/IP 堆栈推断通过 TCP 连接发送到客户端 TCP/IP 堆栈的数据包丢失,则服务器 TCP/IP 堆栈会通过 TCP 连接重新传输数据包。 同时,客户端 TCP/IP 堆栈将与通过持久 TCP 连接接收到的 TCP 段对应的字节存储在 TCP 接收缓冲区中。 重要的是,客户端 TCP/IP 堆栈可防止客户端访问任何与丢失数据包相关的乱序字节。 在数据包丢失和数据包成功传送到客户端之间的这段时间内,到客户端的字节流因此停止。 收到先前丢失的数据包后,客户端 TCP/IP 堆栈将数据包放在 TCP 接收缓冲区的头部,并允许客户端访问存储在 TCP 接收缓冲区中的所有有序字节。 因此,持久 TCP 连接 130 上的数据包丢失导致回放应用程序 160 经历编码媒体内容字节流停滞,随后是编码媒体内容字节流。 [0051] 在一些实施例中,为了减少 TCP 连接(例如,持久 TCP 连接 130)中的暂时降级或中断导致回放中断的可能性,回放应用程序 160 包括但不限于回放缓冲器 174。在相同或 在其他实施例中,回放缓冲器174在回放所选媒体标题之前缓冲一个或多个编码块。 更准确地说,当客户端 TCP/IP 堆栈 170 使字节对回放应用程序 160 可用时,回放应用程序 160 检索存储在 TCP 接收缓冲器 172 中的字节。回放应用程序 160 然后将检索到的字节存储在回放缓冲器 174 中 字节可用于回放应用程序160的顺序。回放应用程序160在开始所选媒体标题的回放之前一直等待直到几个编码块存储在回放缓冲器174中。 以这种方式,存储在回放缓冲器174中的编码组块形成储备,帮助防止缓冲器欠载实例,缓冲器欠载运行会触发重新缓冲事件和相关联的回放中断。 [0052] 如图所示,在一些实施例中,解码器/渲染器176按回放顺序对存储在回放缓冲器174中的编码块进行解码。在解码每个编码块之后,解码器/渲染器176将得到的重构块渲染到显示设备158 ,从而逐块播放所选媒体标题。 [0053]持久TCP连接130中具有最低最大速率的链路是持久TCP连接130的瓶颈链路,并且相应的瓶颈速率对持久TCP连接130的吞吐量强加了上限。除了瓶颈速率之外, 持久 TCP 连接 130 的可实现吞吐量可能受到许多其他因素的限制。 其他限制因素的一些示例包括但不限于网络条件、竞争连接和 TCP 实现的传输试探法,以确保在尝试尽可能快地传送数据包的同时按顺序传送数据包。 如本文所指,“竞争连接”是与持久 TCP 连接 130 共享瓶颈链路的任何连接。 [0054] 如前所述,传统媒体流的一个缺点是许多 TCP 实现所实现的一些传输试探法可以触发中断媒体标题回放的重新缓冲事件。 更准确地说,由于传输试探法反复引起的数据包丢失,回放应用程序可以重复访问并因此最终在非常短的时间内处理潜在的大量编码媒体内容字节。 如果客户端设备具有相对低端的处理器,则相应的处理器使用峰值可能会使处理器过载并导致媒体渲染操作停止。 如果媒体呈现操作停滞,则可能会发生媒体重新缓冲事件。 如果发生媒体重新缓冲事件,则媒体标题的回放被中断并且可以降低回放应用的用户的QoE。 传统媒体流的另一个缺点是,由于除非网络缓冲区已满,否则数据包通常不会被丢弃,因此当网络缓冲区很大时导致数据包丢失会大大增加数据包穿越瓶颈链路的延迟。 如果对延迟敏感的应用程序依赖于共享瓶颈链路的连接,那么该应用程序用户的 QoE 可能会受到负面影响。 通过 TCP 连接传输的数据包的客户端控制步调 [0055] 为了解决上述问题,在一些实施例中,定步引擎 136 能够通过持久 TCP 连接 130 对传输到回放应用程序 160 的数据包进行客户端控制的定步。如本文所指,“定步”指的是传播数据包的发射或 随着时间的推移,“数据包排放”到 TCP 连接上。 并且“客户端控制的步调”是指至少部分地基于从客户端接收到的步调输入,临时调整服务器发出的数据包到 TCP 连接以传输到客户端。 在一些实施例中,定步引擎 136 使定步请求引擎 166 能够以任何粒度级别(例如,每个编码块)控制通过持久 TCP 连接传送编码媒体内容的数据包的定步。 服务器TCP/IP堆栈140可以包括但不限于和/或利用以任何技术上可行的方式实现任何类型的逐段定步的任何数量的功能。 [0056] 可以以任何技术上可行的方式来实施定步引擎​​136。 如图所示,在一些实施例中,定步引擎 136 被包括在媒体传送应用程序 134 中。在一些其他实施例中,定步引擎 136 被包括在服务器TCP/IP堆栈140中,并且本文描述的技术被相应地修改。 在又一些实施例中,可以跨任何数量和/或类型的软件程序(例如,媒体传送应用程序134、服务器TCP/IP堆栈140等)来实现本文关于定步引擎136描述的任何数量的功能 .), 并且本文描述的技术被相应地修改。 [0057]调步请求引擎138可以以任何技术上可行的方式实现。 如图所示,在一些实施例中,定步请求引擎138被包括在回放应用程序160中。在一些其他实施例中,定步请求引擎138被包括在自适应流媒体引擎164中,并且本文描述的技术被相应地修改。 在又一些实施例中,可以跨任何数量和/或类型的软件程序(例如,回放应用程序160、自适应流媒体引擎164等)实现本文关于调步请求引擎138描述的任何数量的功能, 并且本文描述的技术被相应地修改。 [0058] 出于解释的目的,图2描绘了通过与编码块请求182的客户端控制调步相关联的持久TCP连接130的通信。如图所示,在一些实施例中,调步请求引擎166为编码块请求生成调步规范192 182.定步规范192包括但不限于描述定步的任何方面的任何数量和/或类型的数据,这些数据将应用于将编码块内容184传送到回放应用程序160的数据包。回放应用程序160使客户端 TCP/IP 堆栈 170 通过持久 TCP 连接 130 分别经由媒体信道 180 和侧信道 190 将编码的块请求 182 和定步规范 192 传输到媒体传送应用程序 134。 [0059] 作为响应,在一些实施例中,媒体传送应用程序 134 中包括的定步引擎 136 配置服务器 TCP/IP 堆栈 140 以实现定步规范 192。媒体传送应用程序 134 使服务器 TCP/IP 堆栈 140 传输编码的 分别经由媒体信道180和侧信道190在持久TCP连接130上的块内容184和可选的任何数量和/或类型的服务器元数据194。 因为服务器 TCP/IP 堆栈 140 被配置为执行定步规范 192,所以 服务器TCP/IP堆栈140按照步调规范192,通过媒体信道180在持久TCP连接130上对携带编码块内容184的数据包的发射进行步调。 [0060] 注意这里描述的技术是说明性的而不是限制性的。 在不脱离所描述的实施例和技术的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说将是显而易见的。 在这方面,为了解释的目的,客户端控制的由服务器 TCP/IP 栈发送到 TCP 连接上的数据包的定步在定步数据包的上下文中描述,该定步数据包将编码的媒体内容从媒体传送应用程序 134 传送到回放应用程序 160 通过持久 TCP 连接 130 至少部分地基于每块步调规范。 更一般地,当在任何“发送方”软件应用程序和任何“接收方”软件应用程序之间以任何数量和/ 或 TCP 连接类型。 [0061]在一些实施例中,媒体通道180是标准的HTTP传输通道,其允许回放应用程序160和媒体传送应用程序134之间通过HTTP请求和HTTP响应进行双向通信。 在相同或其他实施例中,边信道190是一组一个或多个对HTTP的非标准扩展,使回放应用程序160和媒体传送应用程序134能够将信息嵌入一个或多个不同类型的HTTP消息(例如 、HTTP 请求和/或 HTTP 响应)。 在一些实施例中,边信道190使回放应用程序160和媒体传送应用程序134能够通过统一资源定位器(URL)和/或HTTP报头传送编码的元数据、元数据或两者。 重要的是,任何编码的元数据和任何通过侧信道190添加或“打包”到媒体信道180上的元数据对HTTP没有影响。 在一些实施例中,服务器元数据194被包括在每个块的编码块内容184的开始处的HTTP开销中。 在相同或其他实施例中,对应于给定块的服务器元数据194占据构成该块的数据包的相对较小子集的有效载荷。 [0062] 在一些实施例中,调步请求引擎 166、调步引擎 136 和服务器 TCP/IP 堆栈 140 共同制定任何数量和/或类型的 要求、约束、定义、参数、命名法、语义等,可用于控制服务器 TCP/IP 堆栈 140 如何处理数据包。 在相同或其他实施例中,定步引擎 136 可以实现任何数量和/或类型的技术,使定步请求引擎 166 能够控制服务器 TCP/IP 堆栈 140 如何通过一个或多个来定步分组发射的一个或多个方面 定步规范中包含的定义、参数值等。 [0063] 例如,在一些实施例中,每个定步规范指定但不限于一个或多个 TCP 段的突发之间的时间间隙的下限或“最小间隙”、每个突发或“最大段”中允许的 TCP 段的最大数量 ,“ 或两者。 如本文所提及的,一串TCP段指的是一个或多个TCP段被连续地或在与TCP发射的突发之间的时间间隙相比相对短的时间段内发射到TCP连接上。 TCP 发射突发之间的时间间隔是指 TCP 段突发中包含的最后一个 TCP 段发射到 TCP 连接与下一个中包含的第一个 TCP 段发射之间的时间段(相对于时间 ) TCP 段突发到 TCP 连接上。 [0064] 正如本领域技术人员将认识到的,对 TCP 段的突发与每个突发中允许的 TCP 段的最大数量之间的间隙施加下限会施加最大步调速率(例如,12Mbps)。 因此,在一些实施例中,每个调步规范指定但不限于调步速率而不是一个或多个TCP段的突发之间的时间间隙的下限、每个突发中允许的TCP段的最大数量或两者。 [0065] 如下面结合图 2 更详细地描述的,在一些实施例中,调步请求引擎 166 可选地为自适应流媒体引擎 164 选择用于流式传输的每个编码块生成不同的调步规范。在一些其他实施例中,调步 请求引擎166可以在任何数量的粒度级别生成任何数量的定步规范,并且本文描述的技术被相应地修改。 [0066] 调步请求引擎 166 可以确定是否以任何技术上可行的方式为每个选定的编码块生成调步规范 时尚并基于任何数量和/或类型的数据。 调步请求引擎166可以以任何技术上可行的方式并基于任何数量和/或类型的数据为选定的编码组块生成调步规范。 有利地,定步请求引擎 166 可以利用媒体传送应用程序 134 和服务器 TCP/IP 堆栈 140 均不可用的数据,以基于回放应用程序 160 的状态、客户端的状态来定制每个定步规范 设备,或客户端设备的能力,或其任何组合。 [0067] 例如,在一些实施例中,调步请求引擎 166 基于关联的编码配置文件(图 1 中未显示)、任何数量和/或类型的客户端设备状态数据(图 1 中未显示)为给定的编码块生成调步规范 图 1),任何数量和/或类型的服务器/连接状态数据(图 1 中未显示),或其任何组合。 调步请求引擎166可以任何技术上可行的方式获取编码配置文件、客户端设备状态数据和服务器/网络状态数据。 [0068] 在一些实施例中,编码配置文件包括但不限于与所选编码块相关联的任何数量和/或类型的数据。 在一些实施例中,编码配置文件使调步请求引擎 166 能够准确地评估与回放应用程序 160 相关联的任何数量和/或类型的组块特定需求。在相同或其他实施例中,调步请求引擎 166 定制调步规范 基于块特定的需要优化回放应用160的QoE。 在一些实施例中,定步请求引擎166、自适应流引擎164、回放应用160或其任意组合基于清单文件124和自适应流引擎164提供的数据生成编码配置文件。 [0069] 如图所示,在一些实施例中,客户端设备状态数据由包括在回放应用程序 160 中的监控守护程序 162 生成。在一些实施例中,回放应用程序 160 在自适应流引擎 164 选择任何编码的数据之前启动监控守护程序 162。 用于流式传输到计算实例 110(1) 的块。 监视守护程序162可以以任何技术上可行的方式确定和/或监视计算实例110(1)、回放应用程序160或两者的任何数量和/或类型的方面。 在一些实施例中,服务器/连接状态数据是服务器元数据的最新版本(例如, 服务器元数据194)通过持久TCP连接130经由边信道190从媒体传送应用程序134传输到回放应用程序160。 [0070] 在一些实施例中,调步请求引擎 166 为持久 TCP 连接 130 制定一个调步速率,该速率可以随时间变化,并允许回放应用程序 160 实现目标 QoE,而不会不必要地降低其他竞争 TCP 连接的传输速率和/或浪费网络 资源。 例如,在一些实施例中,如果回放应用程序160开始回放新的媒体标题或正在从重新缓冲事件中恢复,则调步请求引擎166生成对应于相对高的调步率的调步规范。 在相同或其他实施例中,如果回放缓冲器 174 的级别相对较高,则回放应用程序 160 生成对应于导致回放缓冲器 174 的级别整体降低的相对较低的调步速率的调步规范,并且 不会不必要地消耗网络资源。 相比之下,TCP 传输试探法通常会在不考虑客户端实际需求的情况下尝试最大化传输速率。 因此,TCP 传输试探法可能会不必要地增加网络拥塞并浪费网络资源。 [0071]媒体传送应用程序134启用客户端控制的步调并且可选地以任何技术上可行的方式和任何粒度级别用服务器控制的步调来补充客户端控制的步调。 在一些实施例中,如果媒体传送应用程序134经由媒体信道180在持久TCP连接130上接收到编码块请求但没有经由侧信道190在持久TCP连接130上接收到相应的定步规范,则定步引擎 136 实施基于服务器的步调。 在一些其他实施例中,定步引擎136默认实现基于服务器的定步,并且在实现对应的定步规范将导致比实现基于服务器的定步更低的定步速率时实现客户端控制的定步。 定步引擎136可以以任何技术上可行的方式实施基于服务器的定步。 [0072] 如虚线框所示,在一些实施例中,定步引擎 136 基于持续 TCP 连接 130 的瓶颈速率的估计来确定服务器指定的定步速率,该估计随时间重复重新计算 包括在媒体传送应用程序134中的瓶颈速率守护进程138。定步引擎136然后配置服务器TCP/IP栈140以以任何技术上可行的方式实现服务器指定的定步速率。 在一些实施例中,媒体传送应用程序134在持久TCP连接130建立时启动瓶颈速率守护进程138。 瓶颈率守护程序138可以以任何技术上可行的方式估计瓶颈率。 例如,在一些实施例中,瓶颈率守护进程138基于从服务器TCP/IP栈140接收的数据(例如,每个确认统计)来估计瓶颈率。 [0073] 在一些实施例中,瓶颈速率守护进程138在服务器TCP/IP栈140而不是媒体传送应用程序134内实现,并且本文描述的技术被相应地修改。 在又一些实施例中,可以跨任何数量和/或类型的软件程序(例如,媒体传送应用程序134、服务器TCP/IP栈140、 等),并且在此描述的技术被相应地修改。 [0074] 在一些实施例中,如果媒体传送应用程序134经由侧信道190在持久TCP连接130上接收到定步规范,则定步引擎136配置服务器TCP/IP堆栈140以实现定步规范或该定步规范的修改版本 相应编码块的步调规范。 定步引擎136可以基于定步规范和/或任何数量(包括没有)的附加数据来确定是否修改定步规范。 [0075] 例如,本领域技术人员将认识到,随着每个突发中允许的 TCP 段的最大数量减少,处理器 112(0) 上的负载增加。 因此,在一些实施例中,如果处理器112(0)上的负载超过最大阈值,则定步引擎136修改任意数量的定步规范以增加TCP段的最大数量同时保持定步速率。 [0076] 定步引擎136可以配置服务器TCP/IP栈140以以任何技术上可行的方式实现每个定步规范或对应的修改的定步规范。 出于解释的目的, 关于配置服务器TCP/IP堆栈140的调步引擎136在本文中在实施调步规范192的上下文中被更详细地描述。 [0077]在一些实施例中,在媒体传送应用程序134向服务器TCP/IP栈140提交指定编码块内容184的HTTP响应之前,定步引擎136设置与服务器TCP/IP栈相关联的一个或多个TCP参数的值 140 基于定步规范 192。TCP 参数的值或“TCP 参数值”可以控制服务器 TCP/IP 堆栈 140 如何以任何技术上可行的方式定步分组发射。 基于 TCP 参数值,服务器 TCP/IP 堆栈 140 根据定步规范 192 将携带编码块内容 184 的数据包发送到持久 TCP 连接 130 上。 [0078] 定步引擎136可以以任何技术可行的方式设置任何数量的TCP参数的值。 在一些实施例中,定步引擎 136 将一个或多个 TCP 参数值设置为等于定步规范 192 中包括的一个或多个对应参数值。在相同或其他实施例中,媒体传送应用程序 134 计算一个或多个 TCP 参数值基于 在起搏规范 192 和任何数量(包括无)和/或类型的其他数据上。 例如,在一些实施例中,调步请求引擎166计算TCP参数的值,其基于调步规范192中指定的调步速率指定TCP段突发之间的间隙的下限。 [0079] 在一些实施例中,当媒体传递应用程序 134 通过媒体信道 180 传输编码块内容时,媒体传递应用程序 134 通过侧信道 190 传输任何数量和/或类型的服务器元数据(例如,服务器元数据 194)。 媒体传送应用程序134可以以任何技术上可行的方式通过边信道190传输服务器元数据。 例如,在一些实施例中,媒体传送应用程序134使服务器TCP/IP栈140经由侧信道190将服务器元数据发射到持久TCP连接130上。 [0080] 服务器元数据可以包括但不限于反映计算实例110(0)、CDN、任何数量的TCP连接或其任何组合的任何数量的方面的任何数量和/或类型的数据。 在一些 在实施例中,服务器元数据194可以包括但不限于定步请求引擎166用来生成一个或多个后续定步规范的任何数量和/或类型的数据。 [0081] 在一些实施例中,服务器元数据包括但不限于计算实例110(0)的任何数量的性能度量值或“性能度量值”、持久TCP连接130的任何数量的性能度量值、任何数量的 应用的起搏值或其任意组合。 计算实例110(0)的性能度量值的示例是处理器112(0)的使用。 持久 TCP 连接 130 的性能度量值的示例是数据包丢失率,它指定服务器 TCP/IP 堆栈 140 通过持久 TCP 连接 130 发出的在到达客户端 TCP/IP 之前被丢弃的总数据包的分数 堆栈 170。如本文所用,“应用的调步值”是由调步引擎 136 设置以配置持久 TCP 连接 130 的调步的 TCP 参数值之一。因此,每个应用的调步值反映了任何修改 起搏引擎 136 符合起搏规范。 [0082] 应当理解,这里所示的系统100是说明性的并且变化和修改是可能的。 例如,本文所述的自适应流引擎164和定步请求引擎166提供的功能可以集成到或分布在系统100的任意数量的软件应用程序和任意数量的组件中。此外, 图1中的各种单元可以根据需要进行修改。 [0083]图2是根据各种实施例的图1的调步请求引擎166的更详细图示。 如图所示,在一些实施例中,调步请求引擎 166 基于调步计算常量 240、编码配置文件 210、客户端设备状态数据 220、服务器/网络状态数据 230、调步计算常量 240 和可选的 清单文件 124。回头参考图 1,调步规范 192 与编码块请求 182 相关联,并影响携带编码块内容 184 的数据包通过持久性从媒体传送应用程序 134 到回放应用程序 160 的调步 TCP 连接 130。 [0084] 如图所示,在一些实施例中,起搏规范 192 包括但不限于最小间隙 292 和最大段 294。如前文结合图 1 所述,最小间隙 292 指定一个或多个突发之间的最小时间间隙。 更多 TCP 段,最大段数 294 指定每个突发中的最大 TCP 段数。 在一些其他实施例中,最小间隙292可以用起搏速率260代替。在相同或其他实施例中,起搏速率260指定最大分组发射速率。 在相同或其他实施例中,调步请求引擎 166 可选地指定最大段 294。在一些实施例中,调步规范 192 可以为任何数量和/或类型的 TCP 参数指定任何数量和/或类型的值,这些参数可以是 用于影响数据包发射步调的一个或多个方面。 [0085] 具体而言,在一些实施例中,服务器TCP/IP堆栈140包括但不限于用于在慢启动、拥塞避免和恢复模式期间定步的单独的TCP参数。 正如本领域技术人员将认识到的,特征行为和步调对TCP连接的特征行为的影响可以基于TCP连接是否处于慢启动、拥塞避免或恢复模式而变化。 因此,在一些实施例中,调步请求引擎166为慢启动、拥塞避免和恢复模式中的每一个指定但不限于一组一个或多个调步值(例如,最小间隙和最大段)。 [0086] 调步计算常量240包括可以影响调步请求引擎166是否为给定编码块、调步规范192的内容或两者生成调步规范的任意数量的常数。 如图所示,在一些实施例中,调步计算常量 240 包括但不限于最小缓冲区要求 242 和速率乘数 244。最小缓冲区要求 242 指定回放缓冲区级别 226 的阈值,低于该阈值调步请求引擎 166 不生成节奏规范。 回放缓冲器水平226指定回放缓冲器174的当前水平(例如,七秒的回放时间)。 在一些实施例中,如果定步请求引擎166没有为给定的编码块生成定步规范,则服务器TCP/IP栈140尝试尽可能快地发送分组。 尽可能快地发送数据包可能是所希望的 当回放缓冲级别 226 低于最小缓冲要求 242 时的行为, [0087] 在一些实施例中,速率乘法器 244 包括但不限于一个或多个乘法器,其在计算调步规范 192 时提供错误缓冲区和/或建立一定程度的积极性。例如,在一些实施例中,调步 请求引擎166基于对回放应用程序160的需求的估计来计算基线速率(未示出),然后将基线速率乘以包括在速率乘数244中的单个乘数以生成定步速率 260.在一些其他实施例中,调步请求引擎166计算基线速率,然后将基线速率乘以速率乘数244中包括的三个乘数中的每一个以生成用于慢启动、拥塞避免的单独调步速率, 和恢复模式。 [0088]如图所示,在一些实施例中,编码配置文件 210 指定但不限于平均编码率 212 和编码块大小 214。平均编码率 212 是在清单文件 124 中为所选的编码版本指定的编码率。 包括在编码块请求182中指定的编码块的媒体标题。编码块大小214是在编码块请求182中指定的编码块的大小。在一些实施例中,编码配置文件210可以指定任何量和/或 与编码块请求182中指定的编码块相关联的数据类型代替平均编码率212、编码块大小214或两者,或除此之外。 [0089] 如图所示,在一些实施例中,客户端设备状态数据220包括但不限于设备能力222、处理器使用224和回放缓冲器水平226。设备能力222指定处理器112(1)( e.q.,低端处理器)。 处理器使用224指定处理器112(1)的当前使用。 在一些其他实施例中,客户端设备状态数据 220 可以包括但不限于任何数量和/或类型的其他状态数据,而不是或除了设备能力 222、处理器使用率 224、回放缓冲区水平 226 或任何 它们的组合。 [0090] 如图所示,在一些实施例中,服务器/网络状态数据 230 指定服务器元数据 194 的最新版本。在相同或其他 在实施例中,服务器/网络状态数据230指定但不限于应用的调步值232和数据包丢失率234。如前文结合图1所描述的,每个应用的调步值232是设置的TCP参数值 由定步引擎 136 配置持久 TCP 连接 130 的定步。数据包丢失率 234 指定服务器 TCP/IP 堆栈 140 通过持久 TCP 连接 130 发出的在到达客户端之前被丢弃的总数据包的分数 TCP/IP 堆栈 170。 [0091] 在一些实施例中,在接收到编码配置文件 210 后,调步请求引擎 166 执行任何数量和/或类型的规则、试探法、算法等,以确定是否基于编码配置文件 210 生成调步规范 192,客户端 设备状态数据220、服务器/网络状态数据230、步调计算常量240、清单文件124或其任何组合。 例如,在一些实施例中,调步请求引擎166将回放缓冲水平226与最小缓冲要求242进行比较以确定是否生成调步规范192。 [0092] 在一些实施例中,调步请求引擎166确定是否基于设备能力222生成调步规范192。例如,如果设备能力222指示处理器112(1)是低端处理器,则调步请求 引擎166生成调步规范192。否则,调步请求引擎166不生成调步规范192。 [0093] 在相同或其他实施例中,调步请求引擎 166 执行任何数量和/或类型的规则、试探法、算法等,以基于编码配置文件 210、客户端设备状态数据 220、 服务器/网络状态数据230、步调计算常量240、清单文件124或其任何组合。 如图所示,在一些实施例中,调步请求引擎 166 基于平均编码率 212 和编码块大小 214 计算瞬时编码率 250。调步请求引擎 166 然后基于瞬时编码率 250 和 任何数量(包括无)和/或类型的数据。 例如,在一些实施例中,调步请求引擎166基于瞬时编码率250和回放缓冲器水平226计算调步率260。 [0094]在一些实施例中,调步请求引擎166不计算瞬时编码率250并且可以基于任何数量和/或类型的数据以任何技术上可行的方式计算调步率260。 例如,在一些实施例中,调步请求引擎166将调步速率260设置为等于速率乘数244中包括的单个乘数与清单文件124中指定的最高平均比特率的乘积。 [0095] 在一些实施例中,调步请求引擎166基于任何数量和/或类型的数据以任何技术上可行的方式确定最大段294。 在一些实施例中,调步请求引擎166评估以处理器112(0)上的更高负载为代价减少最大片段294以减少与编码块内容184相关联的突发性之间的权衡。 [0096] 如图所示,在相同或其他实施例中,调步请求引擎 166 基于调步速率 260 和最大段 294 计算最小间隙 292。调步请求引擎 166 然后生成调步规范 192,其指定但不限于 最小间隙 292 和最大段 294。 [0097] 作为生成调步规范 192 的一部分,调步请求引擎 166 可以评估任何数量(包括没有)和/或类型的权衡,以补充或代替上述最大段 294 与处理器负载的权衡。 在一些实施例中,调步请求引擎 166 可以通过任何数量的规则、试探法、算法等间接地评估任何数量的权衡。有利地,相对于传统的媒体流,因为调步请求引擎 166 可以访问可用于 无论是媒体传送应用程序 134 还是服务器 TCP/IP 堆栈 140,定步请求引擎 166 都可以更有效地优化数据包发射的定步。 不同起搏规范对应的包发射 [0098] 图3A是根据各种实施例的在媒体信道180上传输的图1的编码块内容184的更详细图示。 出于解释的目的,箭头指示时间沿着时间轴302增加的方向。回头参考图1,在一些实施例中,在计算实例上执行的回放应用160 110(1)或“客户端设备”向在计算实例110(0)或“CDN服务器设备”上执行的媒体传送应用程序134发出指定编码块的编码块请求182。 [0099] 在一些实施例中,为了将指定编码块的编码块内容184传输到回放应用160,媒体传送应用134发出HTTP响应。 如图所示,为了实现HTTP响应,服务器TCP/IP栈140以回放顺序跨TCP段320(1)-320(N)分布编码块内容184,其中N可以是任何正整数。 出于解释的目的,TCP段320(1)-320(N)在本文中也被单独称为“TCP段320”并且统称为“TCP段320”。 [0100] 如本文先前结合图1所描述的,服务器TCP/IP栈140用IP报头信息包装每个TCP段320以生成相应的分组。 服务器 TCP/IP 栈 140 通过持久 TCP 连接 130 以相关联的 TCP 段 320(1)-320(N) 的回放顺序从计算实例 110(0) 向客户端设备 150 传输数据包,经由 媒体信道180。在一些实施例中,在编码块内容184的传输期间没有分组丢失,因此TCP段320按回放顺序到达客户端设备150。 [0101]图3B是根据各种实施例的当未实现客户端控制的定步时图3A的TCP段320的更详细图示。 如图所示,在一些实施例中,当调步规范192为NULL时,调步引擎136不配置服务器TCP/IP栈140以实现任何调步。 如图所示,服务器TCP/IP栈140以40个分组的相对大的突发连续递送携带TCP段320(1)-320(40)的分组。 尽管未示出,服务器TCP/IP栈140在多达40个分组的后续突发中传送携带TCP段320(41)-320(N)的分组。 [0102] 图3C是根据各种实施例的当根据定步规范实现客户端控制的定步时图3A的TCP段320的更详细图示。 如图所示,在一些实施例中,起搏规范192指定一毫秒的最小间隙292和 最大分段 294 个,对应于大约 12 Mbps 的起搏速率。 [0103] 根据步调规范 192,对于从 1 到 N-1 的变量 x,在将携带 TCP 段 320(x) 的数据包发送到媒体通道 180 之后,服务器 TCP/IP 堆栈 140 在注入之前等待至少一毫秒 携带 TCP 段 320(x+1) 的数据包到媒体通道 180。相对于图 3B 中描绘的编码块内容 184 的无节奏传输,在每个数据包发射之间强制执行至少一毫秒的间隙导致平均 12 Mbps 的传输速率和突发性的显着降低。 [0104] 图3D是根据其他各种实施例的当客户端控制的步调根据另一步调规范实现时图3A的TCP段320的更详细图示。 如图所示,在一些实施例中,起搏规范192指定四毫秒的最小间隙292和四毫秒的最大段294,对应于大约12Mbps的起搏速率。 [0105] 根据步调规范 192,服务器 TCP/IP 堆栈 140 将携带 TCP 段 320(1)-320(4) 的四个数据包背靠背发射到媒体通道 180 上,等待至少 4 毫秒,发射另外四个数据包 携带TCP段320(5)-320(8)的数据包背靠背到媒体信道180上,等等。 [0106] 相对于图3B中描绘的编码块内容184的无节奏传输,在发射最多四个分组的每个突发之间强制执行至少四毫秒的间隙导致大约12Mbps的平均传输速率和突发性的显着减少。 相比之下,突发性相对于图3C中描绘的编码块内容184的定速传输显着增加。 图 3C 中描绘的编码块内容 184 的定速传输具有大约 12 Mbps 的类似平均传输速率,但图 3C 中描绘的每个数据包之间至少有一个 ms 的间隙。 值得注意的是,将最大段294从一个增加到四个减少了服务器TCP/IP栈140执行的出站处理操作的数量,并且因此减少了处理器112(0)上的负载。 [0107] 正如本领域技术人员将认识到的,客户端控制的步调(根据步调规范 192)对回放应用程序 160 和任何数量的依赖于共享持久 TCP 瓶颈链路的竞争 TCP 连接的软件应用程序的影响 连接 130 可以根据多种因素而变化。 一些最重要的因素可以包括但不限于步调速率 260 是否低于瓶颈速率、与任何竞争 TCP 连接相关联的 TCP 流量的数量和类型以及持久 TCP 连接 130 是否与慢启动相关联 、拥塞避免或恢复模式。 [0108]有利的是,持续 TCP 连接 130 的客户端控制步调在时间上分散了数据包到达持续 TCP 连接 130 的瓶颈链路。因此,任何竞争连接都比持续 TCP 连接 130 更有可能传输数据包突发 进入瓶颈链路,因此更有可能遇到数据包丢失。 结果,可以降低持久TCP连接130的丢包率234并且可以增加一个或多个竞争TCP连接的丢包率。 如前所述,如果处理器112(1)是相对低端的处理器,则丢包率的降低最终可以减少重新缓冲事件。 减少重新缓冲事件会减少回放中断并增加回放应用程序用户的 QoE。 [0109] 此外,当步调速率 260 低于瓶颈速率并且瓶颈链路不与任何其他连接共享时,通过持久 TCP 连接 130 传输的数据包既不会触发网络缓冲也不会触发数据包丢失,因此数据包的延迟可以 进行优化。 当定步速率260低于瓶颈速率并且瓶颈链路与一个或多个其他连接共享时,可以减少通过共享瓶颈链路的所有连接传输的分组的等待时间。 因此,可以提高与依赖共享瓶颈链路的任何连接的任何延迟敏感应用相关联的 QoE。 [0110] 图4是根据各种实施例的用于在流式传输期间通过TCP连接传输媒体标题的编码块的方法步骤的流程图。 尽管参考图 1-3D 的系统描述了方法步骤,但本领域技术人员将理解,任何系统 被配置为以任何顺序实施方法步骤的实施例落在各种实施例的范围内。 [0111] 如图所示,方法 400 开始于步骤 402,其中回放应用程序 160 获取媒体标题的清单文件 124,并打开到清单文件 124 中标识的媒体传送应用程序 134 的持久 TCP 连接 130。在步骤 404,媒体传送 应用程序134可选地启动瓶颈速率守护进程138,其基于从服务器TCP/IP栈140接收的任何数量和/或类型的数据重复估计持久TCP连接130的瓶颈速率。在步骤406,回放应用程序160可选地启动 确定客户端设备状态数据220的监视守护进程162。 [0112] 在步骤 408,回放应用程序 160 基于清单文件 124 选择对应于媒体标题的第一块的编码块。在步骤 410,回放应用程序 160 可选地基于关联的 编码简档、客户端设备状态数据220、服务器/网络状态数据230或其任何组合。 在步骤412,回放应用程序160分别经由媒体信道180和侧信道190通过持久TCP连接130向媒体传送应用程序134发送编码块请求和相关联的调步规范(当存在时)。 [0113] 在步骤414,媒体传送应用程序134基于定步规范(如果存在)或估计的瓶颈率来设置与持久TCP连接130相关联的零个或多个TCP参数。 在步骤416,媒体传送应用程序134使服务器TCP/IP栈140经由媒体信道180传输所选择的编码组块并且可选地经由侧信道190将服务器/网络元数据传输到回放应用程序160。在步骤418, 回放应用160确定所选择的编码块是否对应于媒体标题的最后一个块。 如果在步骤418回放应用程序160确定所选择的编码块不对应于媒体标题的最后块,则方法400进行到步骤420。 [0114] 在步骤420,回放应用160基于清单文件124选择下一个编码块。方法400然后返回到步骤420,回放应用160可选地为新的编码块生成步调规范。 选定的编码块。 然而,如果在步骤418,回放应用程序160确定所选择的编码块对应于媒体标题的最后一个块,则方法400终止。 [0115] 总之,所公开的技术可用于改善与媒体流相关联的QoE。 在一些实施例中,在客户端设备上执行的回放应用打开到在CDN中的服务器上执行的媒体传送应用的持久TCP连接。 为了在客户端设备上播放媒体标题的块,播放应用程序尝试选择该块的最高可能质量编码版本以至少部分基于持久 TCP 连接的当前性能流式传输到客户端设备 和播放缓冲级别。 基于所选编码块的大小和平均编码率,回放应用计算瞬时编码率。 回放应用基于瞬时编码率、回放缓冲器水平、客户端设备状态、服务器状态、网络状态或其任意组合来确定调步速率和相应的调步规范。 步调规范指定但不限于最多 TCP 段的最大数量的突发之间的间隙的下限。 回放应用分别经由媒体信道和侧信道通过TCP连接将与选择的编码块和定步规范相对应的编码块请求传输到媒体传送应用, [0116] 在相同或其他实施例中,在分别经由媒体信道和侧信道通过TCP连接从媒体传递应用程序接收到编码块请求和可选的定步规范后,媒体传递应用程序确定用于编码块的定步策略 内容。 如果媒体传送应用程序接收到与编码块请求相关联的定步规范,则媒体传送应用程序根据定步规范设置零个或多个 TCP 参数。 否则,媒体传送应用程序会根据对 TCP 连接瓶颈率的估计来设置零个或多个 TCP 参数。 媒体传送应用检索对应于编码块请求的编码块内容。 然后,媒体传送应用程序使 TCP 通过媒体通道和侧通道通过 TCP 连接将编码的块请求和可选的任何数量和/或类型的服务器元数据传送到媒体传送应用程序, 分别。 服务器元数据指定但不限于任何数量和/或类型的服务器状态和/或网络状态。 [0117] 所公开的技术相对于现有技术的至少一个技术优势在于,通过所公开的技术,可以根据实际需要优化在媒体流传输期间将携带编码媒体内容的数据包发射到TCP连接上的速率和间隔。 的播放应用程序。 就此而言,利用所公开的技术,侧信道使回放应用能够实现不同级别的步调,其降低分组到达瓶颈链路的突发性并且因此可以减少分组丢失的数量。 当回放应用程序在相对低端的处理器上执行时,丢包数量的减少会导致重新缓冲事件的整体减少。 此外,如果数据包发射的起搏速率低于瓶颈速率,则可以减少数据包穿越瓶颈链路的延迟。 因此,可以提高与依赖共享瓶颈链路的任何连接的任何延迟敏感应用相关联的 QoE。 这些技术优势提供了优于现有技术方法的一项或多项技术进步。 [0118]1. 在一些实施例中,一种用于传输媒体标题的编码块的计算机实现的方法包括经由媒体信道接收已经通过传输控制协议(TCP)连接传输的第一编码块请求; 经由侧信道接收与第一编码块请求相关联并且已经通过TCP连接传输的第一定步规范; 检索对应于第一编码块请求的第一编码块内容; 基于第一起搏规范将第一参数设置为等于第一参数值; 根据第一参数值,使与第一编码块内容相对应的第一多个 TCP 段通过媒体信道在 TCP 连接上传输。 [0119] 2. 条款 1 的计算机实现的方法,其中第一定步规范指定发射到 TCP 连接上的 TCP 段突发之间的最小时间间隙、每个突发中允许的 TCP 段的最大数量、或最大 与 TCP 段相关的数据包发射率。 [0120] 3. 条款 1 或 2 的计算机实现的方法,其中每个突发中允许的 TCP 段的最大数量包括大于或等于一的整数。 [0121] 4.条款1-3中任一项的计算机实现的方法,其中第一编码块请求包括超文本传输​​协议(HTTP)GET范围请求。 [0122] 5. 条款 1-4 中任一项的计算机实现的方法,其中边信道包括对 HTTP 的一个或多个扩展,允许将信息嵌入到一个或多个不同类型的 HTTP 消息中。 [0123] 6.条款1-5中任一项的计算机实现的方法,其中使第一多个TCP段通过TCP连接传输包括发出指定第一编码块内容的HTTP响应。 [0124] 7.根据条款1-6中任一项所述的计算机实现的方法,还包括使服务器元数据经由侧信道、通过TCP连接被传输到在客户端设备上执行的回放应用程序。 [0125] 8.条款1-7中任一项的计算机实现的方法,其中服务器元数据指定与服务器关联的性能度量值、与TCP连接关联的性能度量值或第一参数值中的至少一个。 [0126] 9. 条款 1-8 中任一项的计算机实现的方法,其中基于与第一编码块内容相关联的编码配置文件、回放缓冲器的级别、处理器使用率中的至少一个来计算第一定步规范, 或与 TCP 连接关联的性能指标值。 [0127] 10. 条款 1-9 中任一项的计算机实现的方法,还包括经由媒体信道接收已经通过 TCP 连接传输的第二编码块请求; 经由侧信道接收与第二编码块请求相关联并且已经通过TCP连接传输的第二定步规范; 基于第二起搏规范将第一参数设置为等于第二参数值而不是第一参数值; 并引起第二个多个TCP 根据第二参数值,对应于要经由媒体信道在TCP连接上传输的第二编码块内容的段。 [0128]11. 在一些实施例中,一个或多个非暂时性计算机可读媒体包括指令,当由一个或多个处理器执行时,使该一个或多个处理器通过经由媒体信道执行接收步骤来传输媒体标题的编码块 ,已经通过传输控制协议(TCP)连接传输的第一编码块请求; 经由侧信道接收与第一编码块请求相关联并且已经通过TCP连接传输的第一定步规范; 生成对第一编码块请求的第一响应,其中第一响应指定第一编码块内容; 基于第一起搏规范将第一参数设置为等于第一参数值; 根据第一参数值,使对应于第一响应的第一多个 TCP 段通过媒体信道在 TCP 连接上传输。 [0129] 12. 根据条款 11 所述的一个或多个非暂时性计算机可读介质,其中第一步调规范指定发射到 TCP 连接上的 TCP 段突发之间的最小时间间隙、每个中允许的 TCP 段的最大数量中的至少一个。 突发,或与 TCP 段关联的最大数据包发射率。 [0130] 13. 条款 11 或 12 的一个或多个非暂时性计算机可读介质,其中每个突发中允许的 TCP 段的最大数量包括大于或等于一的整数。 [0131] 14.条款11-13中任一项的一个或多个非暂时性计算机可读介质,其中第一编码块请求包括超文本传输​​协议(HTTP)GET范围请求。 [0132] 15. 条款 11-14 中任一项的一个或多个非暂时性计算机可读介质,其中接收第一定步规范包括通过统一资源定位符或 HTTP 报头接收第一定步规范或第一定步规范的编码版本 与第一个编码块请求相关联。 [0133] 16. 条款 11-15 中任一项的一个或多个非暂时性计算机可读介质,其中第一响应包括 HTTP 响应,并且还包括将服务器元数据添加到统一资源定位器(URL)或添加到与 第一响应,以便通过侧通道通过 TCP 连接将服务器元数据传输到在客户端设备上执行的回放应用程序。 [0134] 17. 条款 11-16 中任一项的一个或多个非暂时性计算机可读介质,其中服务器元数据指定与服务器关联的性能度量值、与 TCP 连接关联的性能度量值中的至少一个,或者 第一个参数值。 [0135] 18. 条款 11-17 中任一项的一个或多个非暂时性计算机可读介质,其中基于与第一编码块内容相关联的瞬时编码率、回放级别中的至少一个来计算第一步调规范。 缓冲区、平均编码率或第一个编码块内容的大小。 [0136] 19.条款11-18中任一项的一个或多个非暂时性计算机可读媒体,还包括经由媒体信道接收已经通过TCP连接传输的第二编码组块请求; 确定第二编码块请求不与定步规范相关联; 生成对第二编码块请求的第二响应,其中第二响应指定第二编码块内容; 基于与TCP连接相关联的瓶颈速率将第一参数设置为等于第二参数值而不是第一参数值; 根据第二参数值,使与第二响应相对应的第二多个 TCP 段通过媒体信道在 TCP 连接上传输。 [0137]20. 在一些实施例中,一种系统包括一个或多个存储指令的存储器和耦合到该一个或多个存储器的一个或多个处理器,处理器在执行指令时执行以下步骤:经由媒体信道接收编码的组块请求,该编码组块请求 已通过传输控制协议 (TCP) 连接传输; 通过侧信道接收与编码块请求相关联并且已经被 通过 TCP 连接传输; 检索对应于编码块请求的编码块内容; 根据定步规范将多个数据包发射到媒体通道上,其中多个数据包通过媒体通道在 TCP 连接上传输编码块内容。 [0138] 任何权利要求中记载的任何权利要求要素和/或本申请中描述的任何要素的任何和所有组合,以任何方式落入本发明的预期范围和保护范围内。 [0139] 已经出于说明的目的呈现了各种实施例的描述,但不旨在穷举或限制所公开的实施例。 在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说将是显而易见的。 [0140] 本实施例的方面可以体现为系统、方法或计算机程序产品。 因此,本公开的方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)的形式,或者结合软件和硬件方面的实施例,这些方面通常都可以被称为 在此称为“模块”或“系统”。 此外,本公开的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该介质具有体现在其上的计算机可读程序代码。 [0141] 可以利用一种或多种计算机可读介质的任何组合。 计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。 计算机可读存储介质可以是例如但不限于电、磁、光、电磁、红外或半导体系统、装置或设备,或前述的任何合适的组合。 计算机可读存储介质的更具体示例(非详尽列表)将包括以下内容:具有一根或多根电线的电连接、便携式计算机软盘、硬盘、随机存取存储器 (RAM)、可读存储器 只读存储器 (ROM)、可擦除可编程只读存储器(EPROM 或闪存)、光纤、可读光盘 仅存储器 (CD-ROM)、光存储设备、磁存储设备或前述的任何合适的组合。 在本文的上下文中,计算机可读存储介质可以是可以包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序的任何有形介质。 [0142] 上面参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图描述了本公开的各方面。 应当理解,流程图和/或框图的每个块,以及流程图和/或框图中的块的组合,可以由计算机程序指令来实现。 这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器。 当通过计算机的处理器或其他可编程数据处理装置执行时,指令能够实现流程图和/或方框图块中指定的功能/动作。 这样的处理器可以是但不限于通用处理器、专用处理器、专用处理器或现场可编程门阵列。 [0143]图中的流程图和框图图示了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。 就这一点而言,流程图或框图中的每个块可以表示模块、段或代码的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。 还应注意,在一些替代实施方式中,方框内标注的功能可能以图中标注的顺序出现。 例如,连续显示的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。 还将注意,方框图和/或流程图图示的每个块,以及框图和/或流程图图示中的块的组合,可以由执行特定功能或动作的基于专用硬件的系统来实现, 或专用硬件和计算机指令的组合。 [0144] 虽然前面针对本公开的实施例,但在不脱离本公开的基本范围的情况下可以设计本公开的其他和进一步的实施例,并且其范围由所附权利要求确定。
现在,一起体验智慧芽的产品和服务
自动注册,无需人工审核,即可立即开始查询专利
立即注册
澳门正版图库

AI助手