使用子组块化来对媒体流进行代码转换的制作方法

文档序号:10694542阅读:400来源:国知局
使用子组块化来对媒体流进行代码转换的制作方法
【专利摘要】一种方法(600)包括接收输入媒体流(232)并且将输入媒体流的接收的部分的视频部分(232’)拆分成输入视频组块(233)同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,该方法包括向一个或者多个从属代码转换器(220)指派该输入视频组块,将该输入视频组块拆分成视频子组块(234)并且向代码转换器中的每个代码转换器分离地馈送每个输入视频子组块。该方法包括从从属代码转换器分离地接收输出视频子组块(235)。每个输出视频子组块分别对应于输入视频子组块中的一个输入视频子组块。该方法还包括将输出视频子组块组装成与输入视频组块对应的输出视频组块(236)并且将输出视频组块组装成输出媒体流(239)。
【专利说明】
使用子组块化来对媒体流进行代码转换
技术领域
[0001 ]本公开内容设及用于使用子组块化来对媒体流进行代码转换的技术。
【背景技术】
[0002] 存在对于在用户设备(比如智能电话和平板计算机)处接收实况电视流的增长的 需求。然而,使实况电视流可用于具有低端到端延时的移动设备给内容提供商带来挑战。当 前解决方案提供可W超过60秒的端到端延时。运样的延时测量对客户无吸引力。

【发明内容】

[0003] 公开内容的一个方面提供了一种方法,该方法包括接收根据第一编码参数集合编 码的输入媒体流。该方法也包括将输入媒体流的接收的部分的视频部分拆分成输入视频组 块,同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,该 方法还包括向一个或者多个从属代码转换器指派输入视频组块,将输入视频组块拆分成输 入视频子组块,W及向从第一编码参数到第二编码参数集合对数据进行代码转换的一个或 者多个从属代码转换器中的每个从属代码转换器分离地馈送每个输入视频子组块。该方法 还包括将每个输入视频子组块代码转换成对应的输出视频子组块W及将输出视频子组块 组装成与输入视频组块对应的输出视频组块。该方法也包括将输出视频组块组装成输出媒 体流。
[0004] 公开内容的实现方式可W包括W下特征中的一个或者多个特征。在一些实现方式 中,该方法包括将输入视频组块的接收的部分拆分成输入视频子组块,同时仍然接收输入 视频组块的其余部分。该方法也可W包括向一个或者多个从属代码转换器馈送至少一个输 入视频子组块,同时仍然接收输入视频组块的其余部分。每个从属代码转换器可W包括从 属解码器和从属编码器。从属编码器对第一输入视频子组块编码,同时属解码器对第二输 入视频子组块解码。该方法可W包括将输出视频组块组装成输出媒体流,同时将输入媒体 流的视频部分的任何其余部分拆分成输入视频组块。
[0005] 在一些示例中,该方法包括向多个从属代码转换器指派输入视频组块。附加地或 者备选地,多个从属代码转换器中的一个从属代码转换器可W完成对输入视频组块的代码 转换,从而命令多个代码转换器中的其它从属代码转换器停止对输入视频组块的输入视频 子组块代码转换。附加地或者备选地,该方法可W包括在命令多个代码转换器中的其它从 属代码转换器停止代码转换之后将所有从属代码转换器标识为可用于接收另一输入视频 组块。
[0006] 在一些实现方式中,该方法包括将输入媒体流解复用成输入媒体流的视频部分和 音频部分,W及将输入媒体流的音频部分拆分成输入音频组块。每个输入音频组块分别对 应于视频部分的输入视频组块之一。附加地或者备选地,输入音频组块和输入视频组块的 每个对应的对可W在输入媒体流内的相同时间开始并且具有基本上相似或者相同的时间 长度。
[0007] 对于每个输入音频组块,该方法可w包括将输入音频组块解码成音频采样。在检 测到在输入音频组块内的丢失的音频分组时,该方法可W包括在与丢失的音频分组对应的 位置处向音频采样中插入静默音频采样W及将音频采样编码成输出音频组块。附加地或者 备选地,该方法可W包括将输出视频组块组装成输出视频流,包括将每个输出音频组块与 对应的输出视频组块对准。
[0008] 在一些实现方式中,该方法包括从可用代码转换器队列取回一个或者多个从属代 码转换器。在一个或者多个从属代码转换器完成对指派的输入视频组块的代码转换时,该 方法可W包括将一个或者多个代码转换器释放回到代码转换器队列中。
[0009] 对于每个输入视频组块,该方法可W包括获得紧接地在输入视频组块之前的在前 输入视频组块的至少一个在前输入视频子组块。该方法可W包括在馈送输入视频组块的输 入视频子组块之前向一个或者多个从属代码转换器馈送至少一个在前输入视频子组块。该 方法还可W包括发布输出媒体流,W及向用户设备传输输出媒体流。
[0010] 公开内容的另一方面提供了一种包括非瞬态计算机可读介质、多个从属代码转换 器和处理设备的代码转换服务器。非瞬态计算机可读介质存储计算机可读指令。多个从属 代码转换器从第一编码参数集合到第二编码参数集合对数据进行代码转换。处理设备与计 算机可读介质通信并且执行计算机可读指令。计算机可读指令使得处理设备接收根据第一 编码参数集合编码的输入媒体流。计算机可读指令也使得处理设备将输入媒体流的接收的 部分的视频部分拆分成输入视频组块,同时接收输入媒体流的其余部分。对于输入媒体流 的视频部分的每个输入视频组块,处理设备向一个或者多个从属代码转换器指派输入视频 组块,将输入视频组块拆分成输入视频子组块,向将输入视频子组块代码转换成输出视频 子组块的一个或者多个从属代码转换器中的每个从属代码转换器分离地馈送每个输入视 频子组块。在一个或者多个从属代码转换器中的一个从属代码转换器将输入视频组块的所 有输入视频子组块代码转换成输出视频子组块时,从属代码转换器将输出视频子组块组装 成输出视频组块。处理设备从一个从属代码转换器接收与输入视频组块对应的输出视频组 块,W及将输出视频组块组装成输出媒体流。
[0011] 在一些实现方式中,处理设备将输入视频组块的接收的部分拆分成输入视频子组 块,同时仍然接收输入视频组块的其余部分。处理设备还向一个或者多个从属代码转换器 馈送至少一个输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备可W将 输出视频组块组装成输出媒体流,同时将输入媒体流的视频部分的任何其余部分拆分成输 入视频组块。
[0012] 每个从属代码转换器可W包括从属解码器和从属编码器。从属编码器对第一输入 视频子组块编码,同时从属解码器对第二输入视频子组块解码。处理设备还可W向多个从 属代码转换器指派输入视频组块。附加地或者备选地,在多个从属代码转换器中的一个从 属代码转换器完成对视频组块的代码转换时,处理设备可W命令多个代码转换器中的其它 从属代码转换器停止对输入视频组块的输入视频子组块代码转换。附加地或者备选地,在 命令多个代码转换器中的其它从属代码转换器停止代码转换之后,处理设备可W将所有从 属代码转换器标识为可用于接收另一输入视频组块。
[0013] 在一些示例中,处理设备将输入媒体流解复用成输入媒体流的视频部分和音频部 分,W及将输入媒体的音频部分拆分成输入音频组块。每个输入音频组块分别对应于视频 部分的输入视频组块中的一个输入视频组块。输入音频组块和输入视频组块的每个对应的 对可W在输入媒体流内的相同时间开始,并且具有基本上相似或者相同的时间长度。
[0014] 对于每个输入音频组块,处理设备可W将输入音频组块解码成音频采样。在检测 到在输入音频组块内的丢失的音频分组时,处理设备可W在与丢失的音频分组对应的位置 处向音频采样中插入静默音频采样。处理设备还可W将音频采样编码成输出音频组块。附 加地或者备选地,服务器可W将输出视频组块组装成输出媒体流,包括将每个输出音频组 块与对应的输出视频组块对准。在一些示例中,服务器组装多个输出流,其中每个输出流分 离地包含视频输出组块或者音频输出组块,但不是二者。
[0015] 在一些示例中,处理设备从可用代码转换器队列取回一个或者多个从属代码转换 器。在一个或者多个从属代码转换器完成对指派的输入视频组块的代码转换时,处理设备 将一个或者多个代码转换器释放回到代码转换器队列中。处理设备可W发布输出媒体流W 及向用户设备传输输出媒体流。处理设备可W执行从属代码转换器,并且从属代码转换器 可W在与处理设备通信的一个或者多个其它处理设备上执行。
[0016] 公开内容的另一方面提供了一种代码转换服务器,该代码转换服务器包括非瞬态 计算机可读介质、多个从属代码转换器和处理设备。非瞬态计算机可读介质存储计算机可 读指令。多个从属代码转换器从第一编码参数集合到第二编码参数集合对数据进行代码转 换。处理设备与计算机可读介质通信并且执行计算机可读指令。计算机可读指令使得处理 设备接收根据第一编码参数集合编码的输入媒体流。计算机可读指令也使得处理设备将输 入媒体流的接收的部分的视频部分拆分成输入视频组块,同时接收输入媒体流的其余部 分。对于输入媒体流的视频部分的每个输入视频组块,处理设备向一个或者多个从属代码 转换器指派输入视频组块,将输入视频组块拆分成输入视频子组块,W及向一个或者多个 从属代码转换器中的每个从属代码转换器分离地馈送每个输入视频子组块。处理设备也从 一个或者多个从属代码转换器接收输出视频子组块,W及将输出视频子组块组装成与输入 视频组块对应的输出视频组块。每个输出视频子组块分别对应于输入视频子组块中的一个 输入视频子组块。处理设备还包括将输出视频组块组装成输出媒体流。
[0017] 在一些实现方式中,处理设备将输入视频组块的接收部分拆分成输入视频子组 块,同时仍然接收输入视频组块的其余部分。处理设备还向一个或者多个从属代码转换器 馈送至少一个输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备可W将 输出视频组块组装成输出媒体流,同时将输入媒体流的视频部分的任何其余部分拆分成输 入视频组块。
[0018] 每个从属代码转换器可W包括从属解码器和从属编码器。从属编码器对第一输入 视频子组块编码,同时从属解码器对第二输入视频子组块解码。处理设备还可W向多个从 属代码转换器指派输入视频组块。附加地或者备选地,在多个从属代码转换器中的一个从 属代码转换器完成对视频组块代码转换时,处理设备可W命令多个代码转换器中的其它从 属代码转换器停止对输入视频组块的输入视频子组块代码转换。附加地或者备选地,在命 令多个代码转换器中的其它从属代码转换器停止代码转换之后,处理设备可W将所有从属 代码转换器标识为可用于接收另一输入视频组块。
[0019] 在一些示例中,处理设备将输入媒体流解复用成输入媒体流的视频部分和音频部 分W及将输入媒体流的音频部分拆分成输入音频组块。每个输入音频组块分别对应于视频 部分的输入视频组块中的一个输入视频组块。输入音频组块和输入视频组块的每个对应的 对可W在输入媒体流内的相同时间开始并且具有基本上相似或者相同的时间长度。
[0020] 对于每个输入音频组块,处理设备可W将输入音频组块解码成音频采样。在检测 到在输入音频组块内的丢失的音频分组时,处理设备可W在与丢失的音频分组对应的位置 处向音频采样中插入静默音频采样。处理设备还可W将音频采样编码成输出音频组块。附 加地或者备选地,服务器可W将输出视频组块组装成输出媒体流,包括将每个输出音频组 块与对应的输出视频组块对准。
[0021] 在一些示例中,处理设备从可用代码转换器队列取回一个或者多个从属代码转换 器。在一个或者多个从属代码转换器完成对指派的输入视频组块代码转换时,处理设备将 一个或者多个代码转换器释放回到代码转换器队列中。处理设备可W发布输出媒体流W及 向用户设备传输输出媒体流。处理设备可W执行从属代码转换器,并且从属代码转换器可 W在与处理设备通信的一个或者多个其它处理设备上执行。
[0022] 在附图和W下说明书中阐述公开内容的一个或者多个实现方式的细节。将从说明 书和附图W及从权利要求清楚其它方面、特征和优点。
【附图说明】
[0023] 图1是图示了用于向用户设备递送媒体流的示例系统的示意图。
[0024] 图2A是图示了代码转换服务器的示例部件的示意图。
[0025] 图2B是图示了代码转换服务器的示例数据流的示意图。
[0026] 图3是图示了子组块化模块的示例部件的示意图。
[0027] 图4是图示了资源管理器的示例部件的示意图。
[0028] 图5是图示了从属代码转换器的示例部件的示意图。
[0029] 图6是用于向用户设备递送媒体流的方法的示例操作集合的示意图。
[0030] 图7是用于对输入视频组块进行代码转换的方法的示例操作集合的示意图。
[0031] 各附图中的相似标号指示相似单元。
【具体实施方式】
[0032] 图1图示了用于向用户设备100递送媒体流的示例系统10。在一些实现方式中,代 码转换服务器200从内容提供方120接收输入媒体流232。输入媒体流232包含媒体内容并且 根据第一编码参数集合(例如,108化MP4编码)被编码。代码转换服务器200可W从任何适 当源接收输入媒体流232,包括通过经由网络110从卫星120A和/或内容服务器120B传输。在 一些示例中,输入媒体流232是实况电视流,例如,将向一个或者多个用户设备100传输的实 况电视广播。附加地或者备选地,输入媒体流232是从用户设备(例如,视频点播服务)请求 的被请求媒体流。
[0033] 代码转换服务器200将输入媒体流232代码转换成根据第二参数集合(例如,720P MP4编码)编码的输出媒体流239。代码转换服务器200(或者另一服务器)可W向用户设备 100传输输出媒体流239。用户设备的示例包括但不限于平板计算设备100A、智能电话100B、 个人计算设备100C和机顶盒100D。用户设备100可W经由一个或者多个用户接口(例如,显 示设备和/或扬声器)播放输出媒体流239。输入媒体流232或者输出媒体流239可W包括视 频部分232'和/或音频部分232"。用户设备100可W用任何适当方式请求输出媒体流239。例 如,在智能电话或者平板计算机类型的用户设备100的情况下,用户可W访问用户设备100 上的专用应用。在该应用中,用户可W选择媒体流(例如,频道或者视频)。用户设备100向代 码转换服务器200(或者与之关联的服务器)传输请求选择的内容的请求。响应于请求,代码 转换服务器200(或者关联的服务器)可W用流传输输出媒体流239到用户设备100。输出媒 体流239可W用对于用户设备100适合的参数被编码。
[0034] 在操作中,代码转换服务器200将输入媒体流232解复用成视频部分232'和音频部 分232"(也就是在媒体流包括音频部分和视频部分时)。代码转换服务器200将输入媒体流 232的视频部分232'拆分成多个输入视频组块233并且将每个输入视频组块233拆分成多个 输入视频子组块234。输入视频组块233是输入媒体流232的视频数据段。输入视频子组块 234是输入视频组块233的段。在一些实现方式中,输入视频组块233中的每个输入视频组块 被拆分成相等大小的段(例如,五毫秒)。相似地,输入视频子组块234中的每个输入视频子 组块被拆分成相等大小的子段(例如,5毫秒)。因此,输入视频组块233中的每个输入视频组 块包括相等数目的输入视频子组块234。为了清楚,尚未被代码转换服务器200代码转换的 视频组块234和视频子组块233被称为输入视频组块233和输入视频子组块234。
[0035] 代码转换服务器200向一个或者多个可用从属代码转换器220指派输入媒体流232 的每个输入视频组块233。代码转换服务器200向相应视频组块233被指派给的一个或者多 个从属代码转换器220馈送相应视频组块233的视频子组块234。一个或者多个从属代码转 换器220将输入视频子组块234中的每个输入视频子组块代码转换成输出视频子组块235。 在一些实现方式中,一个或者多个从属代码转换器220使用输出视频子组块235来组装与相 应输入视频组块233对应的输出视频组块236。从属代码转换器220可W返回输出视频组块 236。在一些实现方式中,从属代码转换器220可W输出随后被组装成输出视频组块236的个 别输出视频子组块235。从属代码转换器220可W被实施为代码转换服务器200的部分或者 可W在代码转换服务器200外部。
[0036] 在一些实现方式中,代码转换服务器200向多个从属代码转换器220(例如,Ξ个从 属代码转换器220)指派每个输入视频组块233。然后,代码转换服务器200向指派的从属代 码转换器220馈送输入视频组块233的输入视频子组块234。指派的从属代码转换器220对输 入视频子组块234进行代码转换,直至指派的从属代码转换器220中的一个从属代码转换器 完成将输入视频组块233代码转换成输出视频组块236。一旦完成,代码转换服务器200就可 W停止其它从属代码转换器220。代码转换服务器200可W将所有指派的从属代码转换器 220的状态改变成可用。
[0037] 在其中输入媒体流232包括音频部分232"的场景中,代码转换服务器200可W对音 频部分232"进行代码转换。在一些实现方式中,代码转换服务器200可W将音频部分232"划 分成一系列输入音频组块237。代码转换服务器200将输入音频组块237代码转换成输出音 频组块238。在一些实现方式中,输入音频组块237被拆分成输入音频子组块(未示出),运些 输入音频子组块被代码转换成输出音频子组块(未示出)。输出音频子组块被组装成输出音 频组块238。
[0038] 代码转换服务器200可W基于输出视频组块236和输出音频组块238来组装输出媒 体流239。代码转换服务器200(或者与代码转换服务器200关联的另一服务器)可W经由网 络100向一个或者多个而用户设备100递送输出媒体流。
[0039] 图2A和图2B图示了代码转换服务器200的示例。图2A图示了代码转换服务器200的 部件。图2B图示了代码转换服务器200的示例数据流。代码转换服务器200可W包括处理设 备210、存储器设备230、存储设备240和网络接口设备250。代码转换服务器200的部件可W 由一个或者多个总线和/或网络110连接。尽管代码转换服务器200被图示为在单个位置处 的设备,但是可W用分布式方式实施代码转换服务器200,从而使得部件可W被实施为在不 同物理位置处的多个设备。在运样的场景中,部件可W通过网络11〇(例如,因特网和/或一 个或者多个内部网)通信。
[0040] 处理设备210包括执行计算机可读指令(例如,可执行计算机代码)的一个或者多 个物理处理器。在其中处理设备210包括两个或者更多个处理器的实现方式中,两个或者更 多个处理器可W用个别或者分布式方式操作。处理设备210可W执行都可W被实施为计算 机可读指令的流传输代理212、子组块模块214、资源管理器216、实况组块管理器218和多个 从属代码转换器220。前述部件共同地形成代码转换流水线。在一些实现方式中,在不同物 理设备处实施执行的部件中的一些部件。例如,实况组块管理器218和流传输代理212可W 在第一位置/设备处执行,并且子组块模块214、资源管理器和从属代码转换器220可W在第 二位置/设备处执行。另外,从属代码转换器220可W在与处理设备210通信的一个或者多个 其它处理设备210上执行。
[0041] 存储器设备230包括一个或者多个易失性、非瞬态计算机可读介质(例如,RAM和/ 或ROM)。存储器设备230可W存储输入媒体流232的部分和输出媒体流239的部分。存储器设 备230还可W存储W上讨论的计算机可读指令。
[0042] 存储设备240包括一个或者多个非易失性、非瞬态计算机可读介质(例如,闪存、 HDD等)。存储设备240可W存储任何适当数据,包括输入视频组块233及其对应子组块234、 输出视频组块236及其对应子组块235、输入音频组块237及其对应子组块W及输出音频组 块239及其对应子组块。存储设备240可W附加地存储与音频和视频数据对应的元数据。
[0043] 网络接口设备250从网络110接收数据和向网络110传输数据。网络接口设备250可 W包括与网络110通信的一个或者多个设备。网络接口设备250可W执行有线和/或无线通 信。
[0044] 流传输代理212是代码转换流水线的入口点。流传输代理212从各种内容源120接 收输入媒体流232。个别输入媒体流232可W被接收作为一系列数据分组或者作为模拟信 号。在数字输入媒体流232的情况下,输入媒体流232的每个分组可W包括音频数据和/或视 频数据W及关于输入媒体流232的元数据。关于输入媒体流232的元数据的示例包括但不限 于流的名称(例如,用于从NBC狼接收的实况流的NBCUHD)、在数据分组中包含的数据的时 间戳、输入媒体流232的编码参数(例如,H264_1080p)。流传输代理212可W在存储器设备 230中存储输入媒体流232和/或可W向子组块模块214提供输入媒体流232。在其中输入媒 体流232是模拟信号的场景中,流传输代理212可W包括将模拟输入媒体流232转换成数字 输入媒体流232的模数转换器。
[0045] 子组块模块214从流传输代理212和/或从存储器设备230获得输入媒体流232。子 组块模块214对输入媒体流232解复用W获得输入媒体流232的视频部分232'和音频部分 232"。子组块模块214将输入媒体流232的视频部分232'拆分成一系列视频组块233并且将 每个视频组块拆分成一系列视频子组块234。子组块模块214向资源管理器216提供视频子 组块234并且可选地提供视频组块233。
[0046] 子组块模块214还可W被配置为对输入媒体流232的音频部分232"进行代码转换。 子组块模块214将经代码转换的音频部分232"拆分成输入音频组块237。子组块模块214将 输入音频组块237代码转换成输出音频组块238。输出音频组块238用来组装输出媒体流 239,并且也可W出于存储和调试目的被传达到资源管理器216。
[0047] 资源管理器216接收每个输入视频组块233的输入视频子组块234。对于每个输入 视频组块233,资源管理器216向一个或者多个从属代码转换器220指派输入视频组块233。 在资源管理器216开始接收新视频组块233的视频子组块234时,资源管理器216向m个从属 代码转换器指派新视频组块233(其中m大于或者等于一)。在一些实现方式中,可用从属代 码转换器220在先入先出(FIFO)队列220'中等待。资源管理器216基于队列220'的排序来选 择m个从属代码转换器220。
[004引在其中m大于一的实现方式中,资源管理器216向m个从属代码转换器中的每个从 属转换器馈送新视频组块233的每个视频子组块234。从属代码转换器220向资源管理器216 返回输出视频组块236。在m个代码转换器220之一完成对整个视频组块233代码转换时,资 源管理器216可W停止其它m-1个从属代码转换器220。从属代码转换器220在从属代码转换 器220已经对输入视频组块233的所有输入视频子组块234进行代码转换并且向资源管理器 216返回了对应的输出视频组块236时完成整个视频组块233。一旦资源管理器停止m-1个从 属代码转换器,m个从属代码转换器220的状态就被改变成可用并且m个从属代码转换器220 返回到队列220'。W运一方式,对视频组块224的代码转换更不大可能被慢速从属代码转换 器220延迟。另外,运些实现方式在m个从属代码转换器220中的一个或者多个从属代码转换 器出故障的情况下提供冗余性。另外,输入视频组块233更不大可能不能被代码转换。
[0049] 在一些实现方式中,资源管理器216向子组块模块214返回输出视频组块236。在一 些实现方式中,资源管理器216出于稍后分析和/或调试目的也向存储设备240写入输出视 频子组块235和输出视频子组块236。
[0050] 子组块模块214基于输出视频组块236和输出音频组块238来组装输出媒体流239。 子组块模块214可W根据一个或者多个协议组装输出媒体流239。例如,子组块模块214可W 根据通过HTTP的MPEG动态自适应流传输(DA細)协议和/或Apple HTTP实况流传输化LS)协 议生成输出媒体流239。子组块模块214可W生成输出媒体流239作为输出视频组块236并且 对应的经代码转换的音频组块238变成可用。子组块模块24向实况组块模块218发布输出媒 体流239。
[0051] 实况组块管理器218是代码转换流水线的出口点。实况组块管理器218在输出媒体 流239的部分由子组块模块214发布时接收运些部分。实况组块管理器218可W向一个或者 多个用户设备100分发输出媒体流239。实况组块管理器218接收用于特定媒体流239的请 求,并且相应地向请求用户设备100供应输出媒体流239。
[0052] 图3图示了示例子组块模块214。在一些实现方式中,子组块模块214被配置为生成 根据不同编码标准被编码的输出媒体流232。在所图示的示例中,示例子组块模块214可W 生成根据通过HTTP的MPEG动态自适应流传输化ASH)或者App 1 e HTTP实况流传输化LS)被编 码的输出媒体流232。另外,在所图示的示例中,子组块模块214可W包括解复用器310、组块 器312、音频解码器314、音频编码器316、MPEG复用器318、HLS分段器320、发布器322、虚线 (dash)分段器324和子组块管理器326。
[0053] 在操作中,解复用器310接收输入媒体流232并且将输入媒体流232解复用成视频 部分232'和音频部分232"。在一些实现方式中,解复用器310调用预先存在的库(例如, FFmpeg第Ξ方库)W将输入媒体流232解复用成分离的音频部分232"和视频部分232'。解复 用器310输出音频部分232"和视频部分232'作为一系列数据分组。解复用器310可W备选地 是与处理设备210通信的硬件部件。
[0054] 组块器312接收输入媒体流232的音频部分232"和视频部分232',并且将相应部分 拆分成音频组块237和视频组块233。在一些实现方式中,组块器312输出时间长度基本上相 似或者相等(例如,五秒)的输入视频组块233和输入音频组块237。另外,每个输入视频组块 233可W具有在相同相对时间开始和结束的对应的输入音频组块237。例如,如果输入视频 组块233在时间戳.15秒开始,则组块器312拆分也在时间戳.15秒开始的输入音频组块237。 组块器312可W向每个输入视频组块233指派从输入媒体流232的其它输入视频组块233标 识出输入视频组块233的组块标识符Γ组块I护)。相似地,组块器312可W向每个输入音频 组块237指派组块标识符。在一些实现方式中,可W向对应的音频组块237和视频组块233指 派相同或者对应的组块标识符。附加地,输入视频组块233和音频组块237可W被组块类型 (例如,音频或者视频)加标签。
[0055] 对于每个输入视频组块233,组块器312可W将输入视频组块233拆分成一系列输 入视频子组块234。组块器312可W向每个输入视频子组块234指从输入视频组块233的其它 输入视频子组块234派标出识视频子组块234的子组块标识符Γ子组块I护)。组块器312将 输入视频子组块234拆分成相等时间划分,从而使得每个输入视频组块233具有相同数目的 输入视频子组块234,运些输入视频子组块234具有基本上相似或者相同的时间长度。W运 一方式,在一系列视频组块233和视频子组块234中组织输入媒体流232的视频部分232'。单 个视频组块233包括视频子组块234的有序列表。在一些实现方式中,子组块234按它们的子 组块ID(例如,时间戳)被排序并且被组块ID唯一地标识。输入视频子组块234可W各自还包 括标识输入视频子组块234属于的输入视频组块233的标识符和子组块234的类型(例如,视 频)。
[0056] 在一些实现方式中,组块器312可W将每个输入音频组块237拆分成一系列输入音 频子组块。在运些实现方式中,组块器312可W向每个音频子组块指派子组块ID。输入音频 子组块可W各自还包括标识输入音频子组块属于的输入音频组块237的标识符和子组块的 类型(例如,音频)。
[0057] 输出视频组块236、输出音频组块238、输出视频子组块235和输出音频子组块可W 包括与输入对应组块相似的字段。例如,输出视频组块236和输出音频238可W指示组块的 类型。相似地,输出视频子组块235和输出音频组块可W包括标识子组块属于的组块的标识 符。
[005引组块器312还可W被配置为分析输入视频流232的视频部分232'W寻找丢失的视 频分组。在运些实现方式中,如果输入视频组块233中的一个或者多个视频组块丢失或者损 坏,则组块器312可W将输入视频组块233标记为损坏。在操作中,组块器312监视输入流的 传入视频部分232'W寻找流中的不连续。不连续可W出现在单个输入视频组块233内或者 跨两个邻近输入视频组块233的边界。在任一场景中,在输入视频组块包含不连续时,组块 器312通标示子组块标志字段(例如,将子组块标志字段标示为"BaD")来将输入视频组块 233本地标注为损坏。在一些实现方式中,组块器312也将输入视频组块233中的所有后续子 组块234标志为损坏。运些子组块234随后被写入到资源管理器216,该资源管理器216向从 属代码转换器220提供子组块234。在从属代码转换器220处理被标示为损坏的输入视频子 组块234时,从属代码转换器220继续读取损坏的子组块234,直至它到达被运样标示的输入 视频组块233的最后子组块。运时,从属代码转换器220使用预先加载的关键/同步帖来生成 新输出视频组块236(由标记的输出视频子组块235组成)、如此标示输出视频组块236并且 向资源管理器216写入标记的输出视频组块236。在一些实现方式中,标记的输出视频组块 236由重复数目的相同、固定和预先加载的关键/同步帖组成。输出视频组块236可W包含被 标示为巧a护的单个输出视频子组块235。
[0059] 音频解码器314接收和解码输入媒体流232的音频部分232"的输入音频组块237。 在一些实现方式中,音频解码器314将音频组块解码成脉冲代码调制("PCM")采样。音频解 码器314可W被配置为检测音频组块237中的丢失的音频分组。如果音频解码器314检测到 丢失的音频分组,则音频解码器314将静默音频PCM采样插入到音频组块237的PCM采样中。
[0060] 音频编码器316接收一系列PCM采样并且将PCM采样编码成输出音频组块238。音频 编码器316将PCM采样编码成任何适当格式(例如,AAC)。编码器316可W向输出音频组块238 指派组块ID,其中组块ID与用来生成输出音频组块238的输入音频组块237的组块ID相同或 者对应。
[0061] 子组块管理器326是在子组块模块214与资源管理器216之间的接口。子组块管理 器326从组块器312接收视频组块233和子组块234,并且向资源管理器216写入输入视频组 块233和子组块234。在一些实现方式中,子组块管理器326可W向资源管理器216写入输入 视频组块234同时组块器312从解复用器310接收相应的输入组块233、237的随后音频部分 和视频部分。W运一方式,子组块管理器326在相同输入视频组块233的随后视频子组块234 由组块312、解复用器310或者在一些场景中由流传输代理212接收之前向资源管理器216传 达更早的视频子组块234。在运些实现方式中,可W减少媒体流的延时时间,因为对组块233 的代码转换可W在代码转换服务器200接收整个输入视频组块233之前开始。在一些实现方 式中,子组块管理器326还可W被配置为向资源管理器216写入输出音频组块238和/或输出 音频子组块。
[0062] 子组块管理器326从资源管理器216接收输出视频组块236。资源管理器216可W在 输出视频组块236被写入到资源管理器216时向子组块管理器326写入输出视频组块236。子 组块管理器326可W根据用于传输输出媒体流239的格式向MPEG复用器318和/或虚线分段 器324提供接收的输出视频组块。例如,如果输出媒体流23則尋被传输作为化S流,则子组块 管理器326向MPEG复用器328提供接收的输出视频组块236和对应的输出音频组块238。如果 输出媒体流23則尋被传输作为DA甜流,则子组块管理器326向DA甜分段器324提供接收的输 出视频组块236和对应的输出音频组块238或者音频子组块。子组块管理器326可W基于它 们的相应的组块标识符或者它们的相应的时间戳来标识对应的输出音频组块238和输出视 频组块236。在一些实现方式中,组块器312和资源管理器216中的一个或者多个可W执行子 组块管理器326的功能中的一些或者所有功能。
[0063] 在输出媒体流239是化S流时,MPEG复用器31則尋输出音频组块238和对应的输出视 频组块236复用成适当MPEG格式(例如,MPEG-2TS)W获得输出媒体流239。化S分段器320接 收输出媒体流239作为MPEG-2传送流并且输出该输出媒体流239作为一系列相等长度的文 件。HLS分段器320向发布器322输出分段的输出媒体流239。发布器322向实况组块管理器 218发布分段的输出媒体流239。发布器322在输出媒体流239的分段被接收时发布它们。W 运一方式,实况组块管理器218可W实时或者接近实时地分发输出媒体流239
[0064] 在输出媒体流239是DASH流时,无需复用输出音频组块238和对应的输出视频组块 236。因此,输出音频组块238和对应的输出视频组块236被传达到DA甜分段器324dDA甜分段 器324接收输出音频组块238和对应的输出视频组块236并且生成输出媒体流239作为一系 列小HTTP文件分段。DA細分段器324向发布器322写入输出媒体流239。发布器322在输出媒 体流239的分段被接收时发布它们。
[0065] 图3的示例子组块模块214被配置为提供DAS曲某体流和化S媒体流。然而,子组块模 块214可W适于输出现在已知或者更晚开发的其它适当类型的媒体流。子组块模块214例如 被提供并且子组块模块214的变化在公开内容的范围内。子组块模块214可W包括在图3中 未示出的其它部件。例如,子组块模块214可W包括对输出媒体流239加密的一个或者多个 加密模块。
[0066] 图4图示了包括作业分配器410和数据管理器412的示例性资源管理器216。作业分 配器410接收代码转换作业414。代码转换作业414包括输入媒体流232的标识符(例如,频道 标识符或者内容文件标识符)和用于输出媒体流239的编码参数集合。作业分配器410配置 从属代码转换器220W根据用于输出媒体流239的编码参数将输入子组块233代码转换成输 出视频子组块235和组块236。编码参数可W包括视频分辨率、目标比特率、视频编码解码器 类型、目标G0P大小或者任何其它适当参数。
[0067] 作业分配器410向m个从属代码转换器220指派输入媒体流232的接收的输入视频 组块233,其中m是大于或者等于一的整数。作业分配器410从多个从属代码转换器220指派m 个从属代码转换器220。多个从属代码转换器220可W被布置在阵列或者队列220'或者某个 相似结构中。在一些实现方式中,队列是维持从属代码转换器220在可用状态中的FIFO队 列。在作业分配器410接收新输入视频组块233的输入视频子组块234时,作业分配器410将m 个从属代码转换器220从队列出列并且向出列的从属代码转换器220指派新输入视频组块 233。一旦作业分配器410向m个从属代码转换器220指派新输入视频组块233,作业分配器 410就开始向指派的从属代码转换器220馈送输入视频子组块234。在m个从属代码转换器 220中的每个从属代码转换器对输入视频子组块234进行代码转换时,从属代码转换器220 向作业分配器410返回由输出视频子组块235组成的输出视频组块236。作业分配器410可W 向子组块模块214返回输出视频组块236。
[0068] 作业分配器410向m个从属代码转换器220中的每个从属代码转换器馈送每个输入 视频子组块234,直至m个从属代码转换器220之一完成对整个输入视频组块233代码转换。 在确定m个从属代码转换器220之一已经完成对指派的输入视频组块233的所有视频子组块 234代码转换时,作业分配器可W停止其它m-1个从属代码转换器220、将所有m个从属代码 转换器220的状态更新为可用并且将m个从属代码转换器220返回到队列220'。
[0069] 作业分配器410可W对于输入媒体流232的持续时间W前述方式继续操作。作业分 配器410可W循环遍历从属代码转换器220并且可W让m个从属代码转换器220的多个集合 并行地对不同输入视频组块233进行代码转换。例如,作业分配器410可W开始m个从属代码 转换器220的集合对随后输入视频组块233的代码转换,同时在前输入视频组块2333仍然由 m个从属代码转换器220的不同集合进行代码转换。W运一方式,可W减少用于对输入媒体 流232进行代码转换的延时时间。
[0070] 数据管理器412在存储器设备230和存储设备240中存储输入视频组块233和输出 视频组块236。作业分配器410可W向数据管理器412提供接收的视频组块233和返回的输出 视频组块236。
[0071] 数据管理器412可W向存储器设备230写入每个输入视频组块233的一个或者多个 副本。在一些实现方式中,输入视频组块233被存储为一系列输入视频组块233。在存储输入 视频组块233时,数据管理器412可W使用视频组块233的组块ID对存储器设备230中的输入 视频组块233中的每个输入视频组块编索引。相似地,数据管理器412可W使用视频子组块 2%的子组块ID对存储器设备230中的输入视频子组块234中的每个输入视频子组块编索 引。在一些实现方式中,数据管理器412使用公共数据结构W允许子组块模块214向存储器 设备230写入数据并且允许从属代码转换器220从存储器设备230读取数据。
[0072] 数据管理器412也向存储器设备230写入每个输出视频组块236的一个或者多个副 本。在一些实现方式中,数据管理器412存储经代码转换的帖和/或每个输出视频组块236的 子组块234。数据管理器412可W使用组块236的组块ID对存储器设备230中的输出视频组块 236中的每个输出视频组块编索引。附加地,数据管理器412可W使用子组块235的子组块ID 对存储器设备230中的每个输出视频子组块235编索引。在一些实现方式中,数据管理器412 使用公共数据结构W允许子组块模块214从存储器设备230读取数据并且允许从属代码转 换器220向存储器设备230写入数据。
[0073] 在一些实现方式中,数据管理器412也在存储器设备230中存储每个输入音频组块 237和输出音频组块238的一个或者多个副本。输入音频组块237和输出音频组块238可W按 它们的相应的组块ID被引用。另外,数据管理器412可W使用允许子组块模块214从存储设 备240读取音频数据和向存储设备240写入音频数据的公共数据结构。
[0074] 出于调试的目的,数据管理器412可W在存储设备240中复制在存储器设备230中 存储的数据。例如,输入视频组块233和输出视频组块236 W及输入音频组块237和输出音频 组块238可W在存储设备240中存储于a.cns文件中。另外,与输入视频组块233和输出视频 组块236 W及输入音频组块237和输出音频组块238对应的元数据可W被存储在存储设备 240 中。
[0075] 图5图示了示例从属代码转换器220。从属代码转换器220负责对输入视频组块233 进行代码转换。从属代码转换器220从资源管理器216读取输入视频组块233并且向资源管 理器216写入输出视频组块236的输出视频子组块235。
[0076] 每个从属代码转换器220可W驻留在Ξ个不同状态之一中:"未初始化"、"可用"和 "忙碌"。在从属代码转换器220已经被配置为根据编码参数集合对输入视频组块233编码之 前,从属代码转换器220的状态是未初始化。一旦从属代码转换器220被初始化/配置并且已 经进入了队列220'中,则资源管理器216将从属代码转换器220的状态改变成可用。在从属 代码转换器220在"可用"状态中时,从属代码转换器220准备好执行代码转换。在一些实现 方式中,从属代码转换器220周期地报告它的状态为可用。从属代码转换器220必须在可用 状态中W接收代码转换作业。在资源管理器216向从属代码转换器220指派输入视频组块 233时,资源管理器216将从属代码转换器220的状态改变成忙碌。在从属代码转换器220在 忙碌状态中时,它正在对输入视频组块233进行代码转换并且不能被指派另一代码转换作 业。在从属代码转换器220完成对输入视频组块233代码转换时,从属代码转换器220向资源 管理器返回输出视频组块236并且资源管理器216将从属代码转换器的状态更新成可用。
[0077] 从属代码转换器220各自包括视频解码器510和视频编码器512。在一些实现方式 中,视频解码器510将输入视频子组块234解码成原始YUV帖。视频编码器512将原始YUV帖编 码成输出视频子组块235。视频编码器512根据编码参数对输出视频子组块235编码。运两个 级联级(编码跟随解码)被实施W便将解码和编码并行化,从而使得从解码级出来的原始 YUV帖可W立即地被推送到随后的编码级W用于编码。
[0078] 在操作中,资源管理器216向从属代码转换器220指派代码转换作业(即,待代码转 换的输入视频组块233)。资源管理器216提供待代码转换的输入视频组块233的组块ID、用 于向输出视频组块236提供的组块ID和输出视频组块236的编码参数。在大量代码转换时, 资源管理器216可W将所有从属代码转换器220初始化W根据编码参数对输出视频组块236 编码。另外,从属代码转换器220可W在被初始化时加载预定义的同步/关键帖(在肥64/AVC 中的IDR)W用于错误处置。
[0079] 从属代码转换器220开始从资源管理器216读取输入视频组块233的输入视频子组 块234。从属代码转换器220向视频解码器510馈送视频子组块234并且向编码器512馈送YUV 帖。从属代码转换器220继续从资源管理器216读取输入视频子组块234,直至它到达输入视 频组块233的最后子组块234。一旦从属代码转换器220已经对输入视频组块233的所有子组 块234进行代码转换,从属代码转换器220就可W将输出视频子组块235组装成输出视频组 块236并且可W向资源管理器216写入输出视频组块236。附加地或者备选地,从属代码转换 器220向资源管理器216返回经代码转换的输出视频子组块235。在一些实现方式中,从属代 码转换器220在返回输出视频子组块235之前等待,直至它已经对所有视频子组块233进行 代码转换。在其它实现方式中,从属代码转换器220在输出视频子组块235变成可用时向资 源管理器216返回它们。
[0080] 在一些实现方式中,从属代码转换器220被配置为处置损坏的输入视频组块233。 在从属代码转换器220接收损坏的输入视频子组块234(例如,被标示为吨a护的输入视频组 块233)时,从属代码转换器220停止对输入视频子组块234代码转换并且丢弃从属代码转换 器220已经代码转换的输入视频组块233和任何输出视频子组块235。从属代码转换器220然 后使用预定义的同步/关键帖来创建替换输出视频组块236,并且向资源管理器216写入替 换视频组块236。从属代码转换器220可W运样标记替换输出视频组块。资源管理器216然后 将从属代码转换器220的状态更新为可用。
[0081] 在一些实现方式中,从属代码转换器220通过对紧接地在待代码转换的输入视频 组块233之前的输入视频组块233的至少一部分进行代码转换、然后对待代码转换的输入视 频组块233进行代码转换来对待代码转换的输入视频组块233进行代码转换。在运些实现方 式中,从属代码转换器220输出与待代码转换的输入视频组块233对应的单个输出视频组块 236。在操作中,资源管理器216向解码器215馈送在待代码转换的输入视频组块233之前的 输入视频组块233的至少一部分、继而是待代码转换的输入视频组块233。因此,每个从属代 码转换器220对来自两个连续输入视频组块233的输入视频子组块234进行代码转换。在运 些实现方式中的一些实现方式中,从属代码转换器220在对待代码转换的输入视频组块233 进行代码转换之前对在待代码转换的输入视频组块233之前的整个输入视频组块233进行 代码转换。在其它实现方式中,从属代码转换器220在对待代码转换的输入视频组块233进 行代码转换之前对在待代码转换的输入视频组块233之前的输入视频组块233的更晚输入 视频子组块234(例如,最后Ξ个Ξ个子组块234)进行代码转换。在任一情况下,在从属代码 转换器220完成对两个输入视频组块233的输入视频子组块234的代码转换时,从属代码转 换器220丢弃与在前输入视频组块233对应的输出视频子组块235,并且返回与待代码转换 的输入视频组块233对应的输出视频子组块235。从属代码转换器220可W实施前述技术W 避免用于输出视频组块236中的初始关键或者同步帖的突然质量不连续用于单个通过 (single pass)代码转换。资源管理器216可W向m个从属代码转换器两次馈送输入媒体流 的第一输入视频组块233。随后,资源管理器216向被指派用于对连续输入视频组块233中的 第二输入视频组块进行代码转换的m个从属代码转换器220的集合馈送连续输入视频组块 233。
[0082] 回顾图2A,在一些实现方式中,代码转换服务器200被设计为从其部件中的一个或 者多个部件中的致命错误恢复。致命错误可W出现在从属代码转换器220、资源管理器216、 子组块模块214、流传输代理212和/或实况组块管理器218中。
[0083] 一个错误类型是从属代码转换器220的故障。例如,资源管理器216可W向已经出 故障的从属代码转换器220指派代码转换作业。在其中资源管理器216向多个代码转换器 220指派代码转换作业的实现方式中,冗余指派减轻非工作从属代码转换器220的任何顾 虑。一旦出故障的代码转换器220被发现,就可W重启出故障的代码转换器220。
[0084] 问题可能在资源管理器216出故障时出现。例如,从属代码转换器220可能不能从 资源管理器216读取输入视频子组块234。在运样的场景中,从属代码转换器220终止当前代 码转换作业并且将它的状态改变成"可用"并且报告它的当前状态。在另一场景中,从属代 码转换器220可能不能向资源管理器216写入输出视频子组块235。在运样的场景中,从属代 码转换器220忽略故障、完成代码转换作业并且将它的状态更新为可用。在另一示例中,子 组块模块214可能不能向资源管理器216写入输入音频组块237和/或输入视频组块233。在 运一场景中,子组块模块214可W忽略故障并且可W继续尝试向资源管理器216写入输入组 块233、237,如同故障从未出现。然而,如果子组块模块214不能在给定的超时时段内读取输 出视频组块236,则子组块模块214可W生成屯1护输出视频组块236W替换遗漏输出视频组 块236。最后,可W重启出故障的资源管理器216。在重启之后,资源管理器216可W丢弃作为 已经正在被处理的输入视频组块233的部分而被接收的任何输入视频子组块234。资源管理 器216可W-旦它开始接收新输入视频组块233就开始处理输入视频子组块234。
[0085] 另一错误类型是子组块模块214的故障。在子组块模块214出故障时,执行代码转 换作业的任何从属代码转换器220可W终止当前代码转换作业并且将它们的相应的状态更 新为可用,并且资源管理器216可W停止向从属代码转换器220指派代码转换作业。在运一 场景中,实况组块管理器218停止接收输出媒体流239,并且流传输代理212停止递送输入媒 体流232。在子组块模块214出故障时,子组块模块214最终被重启并且其它部件的操作可W 恢复操作。
[0086] 问题可能在流代理212出故障时出现。在运一场景中,其它部件可W继续操作并且 尝试对输入媒体流232进行代码转换。然而,由于流代理212在故障状态中,所W子组块模块 214未接收输入媒体流232。其余部件未受影响。一旦流代理212重启,子组块模块214就可W 开始接收输入媒体流232并且代码转换可W开始。
[0087] 另一错误类型是实况组块管理器218的故障。在实况组块管理器218出故障时,其 余部件可W继续将输入媒体流232代码转换成输出媒体流234。在运一场景中,子组块模块 214可W尝试向实况组块管理器218写入输出媒体流239的部分。在子组块模块214不能向实 况组块管理器218写入时,子组块模块214可W丢弃输出媒体流239的可用部分。一旦实况组 块管理器218重启,子组块模块214就可W开始输出媒体流239的递送。
[0088] 提供前述错误类型作为示例。代码转换服务器200也可能遇到其它错误类型。代码 转换服务器300用来处置错误的技术也可W变化。
[0089] 图6图示了用于向用户设备100递送输出媒体流239的方法600的示例性操作集合。 关于W上讨论的代码转换服务器200的部件说明方法600。然而,方法600可W由任何适当设 备执行。
[0090] 在操作610,代码转换服务器200接收代码转换指令。代码转换指令可W包括待编 码的输入媒体流232的流标识符和用于对输入媒体流232编码的编码参数。可W从用户设备 100、从另一设备或者内部接收代码转换指令。例如,用户设备100可W请求频道的实况流。 在另一示例中,代码转换服务器200可W被设立为使任何数目的频道和视频点播内容在不 同编码参数可用。流标识符可W标识待编码转换的频道馈送或者媒体内容。编码参数指示 用于输出媒体流239的目标编码。
[0091] 在操作612,资源管理器216配置从属代码转换器220。例如,资源管理器216可W设 置从属代码转换器220的输出比特率。资源管理器216也可W建立从属代码转换器220的队 列220'。
[0092] 在操作614,子组块模块214通过流传输代理212接收输入媒体流232。流传输代理 212可W从任何适当内容源120接收输入媒体流232。例如,流传输代理可W从有线提供方、 网络、个体、电影工作室或者任何其它适当源接收内容。
[0093] 在操作616,子组块模块214将输入媒体流232解复用成音频部分232"和视频部分 232'。在操作618,子组块模块将音频部分232"拆分成输入音频组块237并且将视频部分 232'拆分成输入视频组块233。输入视频组块233和输入音频组块237被拆分成相等大小的 组块(例如,5毫秒组块)。每个输入组块233、237可W被指派组块ID并且用它的组块类型被 标记。
[0094] 在操作620,子组块模块214对输入音频组块237进行代码转换。子组块模块214可 W根据用于输出媒体流239的音频部分的希望的编码参数对输入音频组块237进行代码转 换。子组块模块214将输入音频组块237代码转换成输出音频组块238。
[00M]在操作622,子组块模块214将输入视频组块233拆分成输入视频子组块234。输入 视频子组块234是相等长度的(例如,.05毫秒分段)。子组块模块214可W向每个输入视频子 组块234指派子组块ID。子组块模块214可W向资源管理器216写入输入视频子组块。在操作 624,资源管理器216和从属代码转换器220对输入视频组块233进行代码转换。
[0096] 图7图示了用于对输入视频组块233进行代码转换的方法的操作集合。在操作710, 资源管理器216将m个从属代码转换器220从队列220'出列,其中m是大于或者等于一的整 数。在操作712,资源管理器216向m个从属代码转换器220指派输入视频组块233。资源管理 器216可W将m个从属代码转换器中的每个从属代码转换器的状态更新为忙碌。
[0097] 在一些实现方式中,m个从属代码转换器220如在操作714所示获得紧接地在待代 码转换的输入视频组块233之前的输入视频组块233的至少一些子组块234"M个从属代码转 换器220可W从资源管理器216读取在前输入视频组块233的所有子组块234或者在前输入 视频组块233的最后一个或者多个子组块234。
[0098] 在操作716,m个从属代码转换器220获得待代码转换的输入视频组块233的输入视 频子组块234。可W从资源管理器216顺序读取输入视频子组块234,从而使得从属代码转换 器220读取在随后输入视频子组块234之前的更早输入视频子组块234。在一些实现方式中, m个从属代码转换器220读取更早输入视频子组块234同时更晚输入视频子组块由子组块模 块214接收。
[0099] 在操作718,m个从属代码转换器220对输入视频子组块234进行代码转换。在一些 实现方式中,m个从属代码转换器220中的每个从属代码转换器将输入视频子组块234解码 成YUV帖,并且然后将YUV帖编码成输出视频子组块235"M个从属代码转换器220可W独立地 和在它们自己的相应的速度工作。在从属代码转换器220完成对输入视频子组块234解码 时,它可W获得下一输入视频子组块234并且开始对下一输入视频子组块234解码。相似地, 在从属代码转换器220对输出视频组块235编码时,一旦从属代码转换器220完成对YUV帖解 码,从属代码转换器220就可W开始对下一可用输入视频子组块234解码。如先前指示的那 样,在一些实现方式中,m个从属代码转换器220在对待代码转换的输入视频组块233的输入 视频子组块234进行代码转换之前开始对在前输入视频组块233的输入视频子组块234进行 代码转换。在对在前输入视频组块233的输入视频子组块234进行代码转换时,从属代码转 换器220可W丢弃与之对应的输出视频子组块235。
[0100] 在操作720,资源管理器216确定m个从属代码转换器220之一是否已经完成代码转 换作业(即,对输入视频子组块234进行代码转换)。如果不是,则m个从属代码转换器220继 续对输入视频子组块进行代码转换。
[0101] 在从属代码转换器220之一已经完成对整个输入视频组块233代码转换时,从属代 码转换器220如在操作722所示返回输出视频组块236。一旦从属代码转换器220已经完成对 输入视频组块233的所有输入视频子组块234代码转换,从属代码转换器220就从输出视频 子组块235组装输出视频组块236。从属代码转换器220向资源管理器215返回输出视频组块 236。在一些实现方式中,从属代码转换器220可W向资源管理器216返回输出视频子组块 235,并且资源管理器216将输出视频子组块235组装成输出视频组块236。
[0102] 在操作724,资源管理器216停止其余m-1个从属代码转换器220并且丢弃由m-1个 从属代码转换器220代码转换的输出视频子组块235。资源管理器216可W向子组块模块214 返回输出视频组块236。在操作726,资源管理器216将m个从属代码转换器220的状态更新为 "可用"。资源管理器216可W将m个从属代码转换器220入队到队列220'上。
[0103] 回顾图6,资源管理器216和从属代码转换器220在输入视频组块233由子组块模块 214接收和组块化时连续地对它们进行代码转换。注意,子组块模块214可W对音频组块237 进行代码转换同时资源管理器216和从属代码转换器220对输入视频组块233进行代码转 换。
[0104] 在操作626,子组块模块214将输出视频组块236和输出音频组块238组装成输出媒 体流239。如先前讨论的那样,子组块模块214可W根据一个或者多个协议(例如,化S和/或 DA甜)生成输出媒体流239。在操作628,子组块模块214向实况组块管理器218发布输出媒体 流239。实况组块管理器218可W向一个或者多个下游用户设备100传输输出媒体流239。
[0105] 在图6和图7中执行的操作的顺序不是必要的。操作中的许多操作对于输入媒体流 232的不同部分并行地出现。例如,可W同时执行对音频组块和视频组块代码转换,并且可 W有如下实例,其中多个视频组块233由不同从属代码转换器220同时进行代码转换。可W 并行和/或串行执行W上描述的操作中的许多操作。例如,从属代码转换器220可W接收视 频子组块234同时对其它输入视频子组块234进行代码转换。相似地,可W与视频组块233同 时对音频组块238进行代码转换。另外,方法600和方法700可W包括备选或者附加操作。
[0106] 可W在数字电子和/或光电路、集成电路、特殊地设计的ASIC(专用集成电路)、计 算机硬件、固件、软件和/或其组合中实现运里描述的系统和技术的各种实现方式。运些各 种实现方式可W包括在可编程系统上可执行和/或可解译的一个或者多个计算机程序中的 实现方式,该可编程系统包括可W是特殊或者通用的至少一个可编程处理器、至少一个输 入设备和至少一个输出设备,该至少一个可编程处理器被禪合用于从存储系统接收数据和 指令W及向存储系统传输数据和指令。
[0107] 运些计算机程序(也被称为程序、软件、软件应用或者代码)包括用于可编程处理 器的机器指令,并且可W用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来 实施。如运里所用,术语"机器可读介质"和"计算机可读介质"是指用来向可编程处理器提 供机器指令和/或数据的任何计算机程序产品、非瞬态计算机可读介质、装置和/或设备(例 如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),该可编程处理器包括接收机器指令作为机 器可读信号的机器可读介质。术语"机器可读信号"是指用来向可编程处理器提供机器指令 和/或数据的任何信号。
[0108] 可W在数字电子电路中或者在包括在本说明书中公开的结构及其结构等效物的 计算机软件、固件或者硬件中或者在它们中的一项或者多项的组合中实施主题内容的实现 方式和在本说明书中描述的功能操作。另外,在本说明书中描述的主题内容可W被实施为 一个或者多个计算机程序产品,即,在计算机可读介质上编码的用于由数据处理装置执行 或者控制数据处理装置的操作的一个或者多个计算机程序指令模块。计算机可读介质可W 是机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的物质组成 或者它们中的一项或者多项的组合。术语"数据处理装置"、"计算设备"和"计算处理器"涵 盖用于处理数据的所有装置、设备和机器,例如,包括一个可编程处理器、一个计算机或者 多个处理器或者计算机。装置除了硬件之外还可W包括为讨论的计算机程序创建执行环境 的代码,例如,构成处理器固件、协议找、数据库管理系统、操作系统或者它们中的一项或者 多项的组合的代码。传播的信号是人为地生成的信号,例如,被生成为对用于向适当接收器 装置传输的信息编码的由机器生成的电、光或者电磁信号。
[0109] 可W用包括编译或者解译语言的任何形式的编程语言编写计算机程序(也被称为 应用、程序、软件、软件应用、脚本或者代码),并且可W用任何适当形式部署它,包括被部署 为单独程序或者被部署为适合用于在计算环境中使用的模块、部件、子例程或者其它单元。 计算机程序未必对应于文件系统中的文件。程序可W被存储于保持其它程序或者数据的文 件(例如,存储于标记语言文档中的一个或者多个脚本)的部分中、专用于讨论的程序的单 个文件中或者多个协调的文件(例如,存储一个或者多个模块、子程序或者代码部分的文 件)中。计算机程序可W被部署为在一个计算机上或者在位于一个地点或者分布于多个地 点并且由通信网络互连的多个计算机上执行。
[0110] 在本说明书中描述的过程和逻辑流程可W由一个或者多个可编程处理器执行,该 一个或者多个可编程处理器执行一个或者多个计算机程序W通过对输入数据进行操作并 且生成输出来执行功能。过程和逻辑流程也可W由专用逻辑电路装置(例如,FPGA(现场可 编程口阵列)或者ASIC(专用集成电路))执行,并且装置也可W被实施为该专用逻辑电路装 置。
[0111] 举例而言,适合用于执行计算机程序的处理器包括通用和专用微处理器W及任何 种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将从只读存储器或者随 机存取存储器或者二者接收指令和数据。计算机的基本单元是用于执行动作的处理器W及 用于存储指令和数据的一个或者多个存储器设备。一般而言,计算机也将包括用于存储数 据的一个或者多个海量存储设备,例如,磁盘、光磁盘或者光盘或者被操作地禪合用于从该 一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备传送数据或者 二者。然而,计算机无需具有运样的设备。另外,可W在另一设备(聊举数例,例如移动电话、 个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器)中嵌入计算机。适合用 于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和 存储器设备,举例而言包括:半导体存储器设备(例如,EPROM、EEPR0M和闪存设备);磁盘,例 如内部硬盘或者可拆卸盘;光磁盘;W及CD-ROM和DVD-ROM盘。处理器和存储器可W由专用 逻辑电路装置补充或者并入于专用逻辑电路装置中。
[0112] 为了提供与用户的交互,可W在计算机上实施公开内容的一个或者多个方面,该 计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)、LCD(液晶显示器)监 视器或者触屏及可选地具有用户可W用来向计算机提供输入的键盘和指点设备(例如, 鼠标或者跟踪球)。其它种类的设备也可W用来提供与用户的交互;例如,向用户提供的反 馈可W是任何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可W用包括 声音、话音或者触觉输入的任何形式接收来自用户的输入。此外,计算机可W通过向由用户 使用的设备发送文档和从该设备接收文档(例如,通过响应于从在用户的客户端设备上的 web浏览器接收的请求而向web浏览器发送网页)来与用户交互。
[0113] 可W在计算系统中实施公开内容的一个或者多个方面,该计算系统包括后端部件 (例如,作为数据服务器)或者包括中间件部件(例如,应用服务器)或者包括前端部件(例 如,具有图形用户界面或者Web浏览器(用户可W通过该图形用户界面或者Web浏览器与在 本说明书中描述的主题内容的实现方式交互)的客户端计算机)或者一个或者多个运样的 后端、中间件或者前端部件的任何适当组合。系统的部件可W由任何数字数据通信形式或 者介质(例如,通信网络)互连。通信网络的示例包括局域网("LAN")和广域网("WAN")、网际 网络(例如因特网)和对等网络(例如自组织对等网络)。
[0114] 计算系统可W包括客户端和服务器。客户端和服务器一般地相互远离并且通常地 通过通信网络交互。借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机 程序产生客户端和服务器的关系。在一些实现方式中,服务器向客户端设备传输数据(例 如,HTML页面)(例如,出于向与客户端设备交互的用户显示数据W及从该用户接收用户输 入的目的)。可W在服务器从客户端设备接收在客户端设备生成的数据(例如,用户交互的 结果)。
[0115] 尽管本说明书包含许多细节,但是不应将运些解释为限制公开内容的或者可W要 求保护的内容的范围而实际上为对公开内容的具体实现方式特有的特征的描述。也可W在 单个实现方式中组合提供在本说明书中在分离实现方式的上下文中描述的某些特征。反言 之,也可W在多个实现方式中分离地或者在任何适当子组合中实施在单个实现方式的上下 文中描述的各种特征。另外,虽然W上可W将特征描述为在某些组合中动作并且甚至起初 地运样要求保护,但是来自要求保护的组合的一个或者多个特征可W在一些情况下从该组 合中被删除,并且要求保护的组合可W设及子组合或者子组合的变化。
[0116] 相似地,尽管在附图中按特定顺序描绘操作,但是运不应被理解为要求按所示特 定顺序或者按依次顺序执行运样的操作,或者执行所有所示操作W实现希望的结果。在某 些境况中,多任务和并行处理可W是有利的。另外,在W上描述的实施例中的各种系统部件 的分离不应理解为在所有实施例中要求运样的分离,而应当理解,描述的程序部件和系统 一般地可W被一起集成于单个软件产品中或者被封装成多个软件产品。
[0117] 已经描述了多个实现方式。然而,将理解,可W做出各种修改而未脱离公开内容的 精神实质和范围。因而,其它实现方式在所附权利要求的范围内。例如,在权利要求中记载 的动作可W按不同顺序被执行而仍然实现希望的结果。
【主权项】
1. 一种方法(600),包括: 接收根据第一编码参数集合编码的输入媒体流(232); 将所述输入媒体流(232)的接收的部分的视频部分(232')拆分成输入视频组块(233) 同时接收所述输入媒体流(232)的其余部分; 对于所述输入媒体流(232)的所述视频部分(232')的每个输入视频组块(233): 向一个或者多个从属代码转换器(220)指派所述输入视频组块(233); 将所述输入视频组块(233)拆分成输入视频子组块(234); 向从所述第一编码参数集合到第二编码参数集合对数据进行代码转换的所述一个或 者多个从属代码转换器(220)中的每个从属代码转换器分离地馈送每个输入视频子组块 (234); 将每个输入视频子组块(234)代码转换成对应的输出视频子组块(235); 将所述输出视频子组块(235)组装成与所述输入视频组块(233)对应的输出视频组块 (236);以及 将所述输出视频组块(236)组装成输出媒体流(239)。2. 根据权利要求1所述的方法(600 ),还包括: 将所述输入视频组块(233)的接收的部分拆分成输入视频子组块(234)同时仍然接收 所述输入视频组块(233)的其余部分;以及 向所述一个或者多个从属代码转换器(220)馈送至少一个输入视频子组块(234)同时 仍然接收所述输入视频组块(233)的所述其余部分。3. 根据权利要求1所述的方法(600),其中每个从属代码转换器包括从属解码器(510) 和从属编码器(512),所述从属编码器(512)对第一输入视频子组块(234)编码同时所述从 属解码器(510)对第二输入视频子组块(234)解码。4. 根据权利要求1所述的方法(600),还包括将所述输出视频组块(236)组装成所述输 出媒体流(239)同时将所述输入媒体流(232)的所述视频部分(232')的任何其余部分拆分 成输入视频组块(233)。5. 根据权利要求4所述的方法(600 ),还包括: 向多个从属代码转换器(220)指派所述输入视频组块(233);以及 在所述多个从属代码转换器(220)中的一个从属代码转换器(220)完成对所述输入视 频组块(233)的代码转换时,命令所述多个代码转换器(220)中的其它从属代码转换器 (220)停止对所述输入视频组块(233)的所述输入视频子组块(234)的代码转换。6. 根据权利要求5所述的方法(600),还包括在命令所述多个代码转换器(220)中的其 它从属代码转换器(220)停止代码转换之后,将所有所述从属代码转换器(220)标识为可用 于接收另一输入视频组块(233)。7. 根据权利要求1所述的方法(600 ),还包括: 将所述输入媒体流(232)解复用成所述输入媒体流(232)的所述视频部分(232')和音 频部分(232");以及 将所述输入媒体流(232)的所述音频部分(232")拆分成输入音频组块(237),每个输入 音频组块(237)分别对应于所述视频部分(232')的所述输入视频组块(233)中的一个输入 视频组块。8. 根据权利要求7所述的方法(600),其中输入音频组块(237)和输入视频组块(233)的 每个对应的对在所述输入媒体流(232)内的相同时间开始并且具有基本上相同的时间长 度。9. 根据权利要求8所述的方法(600 ),还包括: 对于每个输入音频组块(237): 将所述输入音频组块(237)解码成音频采样; 在检测到在所述输入音频组块(237)内的丢失的音频分组时,在与所述丢失的音频分 组对应的位置处向所述音频采样中插入静默音频采样;以及 将所述音频采样编码成输出音频组块(238)。10. 根据权利要求9所述的方法(600),其中将所述输出视频组块(236)组装成所述输出 媒体流(239)包括将每个输出音频组块(238)与对应的输出视频组块(236)对准。11. 根据权利要求1所述的方法(600 ),还包括: 从可用代码转换器队列(220')取回所述一个或者多个从属代码转换器(220);以及 在所述一个或者多个从属代码转换器(220)完成对指派的输入视频组块(233)代码转 换时,将所述一个或者多个代码转换器(220)释放回到所述代码转换器(220)队列(220') 中。12. 根据权利要求1所述的方法(600),还包括: 对于每个输入视频组块(233): 获得紧接地在所述输入视频组块(233)之前的在前输入视频组块(233)的至少一个在 前输入视频子组块(234);以及 在馈送所述输入视频组块(233)的所述输入视频子组块(234)之前向所述一个或者多 个从属代码转换器(220)馈送所述至少一个在前输入视频子组块(234)。13. 根据权利要求1所述的方法(600),还包括发布所述输出媒体流(239)。14. 根据权利要求1所述的方法(600),还包括向用户设备(100)传输所述输出媒体流 (239)〇15. -种代码转换服务器(200 ),包括: 非瞬态计算机可读介质(230),所述非瞬态计算机可读介质(230)存储计算机可读指 令; 多个从属代码转换器(220),所述多个从属代码转换器(220)从第一编码参数集合到第 二编码参数集合对数据进行代码转换;以及 处理设备(210),所述处理设备(210)与所述计算机可读介质(230)通信并且执行所述 计算机可读指令,所述计算机可读指令使得所述处理设备(210): 接收根据所述第一编码参数集合编码的输入媒体流(232); 将所述输入媒体流(232)的接收的部分的视频部分(232')拆分成输入视频组块(233) 同时接收所述输入媒体流(232)的其余部分; 对于所述输入媒体流(232)的所述视频部分(232')的每个输入视频组块(233): 向一个或者多个从属代码转换器(220)指派所述输入视频组块(233); 将所述输入视频组块(233)拆分成输入视频子组块(234); 向将所述输入视频子组块(234)代码转换成输出视频子组块(235)的所述一个或者多 个从属代码转换器(220)中的每个从属代码转换器分离地馈送每个输入视频子组块(234), 其中在所述一个或者多个从属代码转换器(220)中的一个从属代码转换器(220)将所述输 入视频组块(233)的所有所述输入视频子组块(234)代码转换成输出视频子组块(235)时, 所述从属代码转换器(220)将所述输出视频子组块(235)组装成输出视频组块(236);以及 从所述一个从属代码转换器(220)接收与所述输入视频组块(233)对应的所述输出视 频组块(236);以及 将所述输出视频组块(236)组装成输出媒体流(239)。16. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210): 将所述输入视频组块(233)的接收的部分拆分成输入视频子组块(234)同时仍然接收 所述输入视频组块(233)的其余部分;以及 向所述一个或者多个从属代码转换器(220)馈送至少一个输入视频子组块(234)同时 仍然接收所述输入视频组块(233)的所述其余部分。17. 根据权利要求15所述的代码转换服务器(200),其中每个从属代码转换器(220)包 括从属解码器(510)和从属编码器(512),所述从属编码器(512)对第一输入视频子组块 (234)编码同时所述从属解码器(510)对第二输入视频子组块(234)解码。18. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210)将所述输 出视频组块(236)组装成所述输出媒体流(239)同时将所述输入媒体流(232)的所述视频部 分(232')的任何其余部分拆分成输入视频组块(233)。19. 根据权利要求18所述的代码转换服务器(200),其中所述处理设备(210): 向多个从属代码转换器(220)指派所述输入视频组块(233);以及 在所述多个从属代码转换器(220)中的一个从属代码转换器(220)完成对所述输入视 频组块(233)代码转换时,命令所述多个代码转换器(220)中的其它从属代码转换器(220) 停止对所述输入视频组块(233)的所述输入视频子组块(234)代码转换。20. 根据权利要求19所述的代码转换服务器(200),其中在命令所述多个代码转换器 (220)中的其它从属代码转换器(220)停止代码转换之后,所述处理设备(210)将所有所述 从属代码转换器(220)标识为可用于接收另一输入视频组块(233)。21. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210): 将所述输入媒体流(232)解复用成所述输入媒体流(232)的所述视频部分(232')和音 频部分(232");以及 将所述输入媒体流(232)的所述音频部分(232")拆分成输入音频组块(237),每个输入 音频组块(237)分别对应于所述视频部分(232')的所述输入视频组块(233)中的一个输入 视频组块(233)。22. 根据权利要求21所述的代码转换服务器(200),其中输入音频组块(237)和输入视 频组块(233)的每个对应的对在所述输入媒体流(232)内的相同时间开始并且具有基本上 相同的时间长度。23. 根据权利要求22所述的代码转换服务器(200),其中对于每个输入音频组块(237), 所述处理设备(210): 将所述输入音频组块(237)解码成音频采样; 在检测到在所述输入音频组块(237)内的丢失的音频分组时,在与所述丢失的音频分 组对应的位置处向所述音频采样中插入静默音频采样;以及 将所述音频采样编码成输出音频组块(238)。24. 根据权利要求23所述的代码转换服务器(200),其中所述处理设备(210)将所述输 出视频组块(236)组装成所述输出媒体流(239)包括将每个输出音频组块(238)与对应的输 出视频组块(236)对准。25. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210): 从可用代码转换器(220)队列(220')取回所述一个或者多个从属代码转换器(220);以 及 在所述一个或者多个从属代码转换器(220)完成对指派的输入视频组块(233)代码转 换时,将所述一个或者多个代码转换器(220)释放回到所述代码转换器(220)队列(220') 中。26. 根据权利要求15所述的代码转换服务器(200),其中对于每个输入视频组块(233), 所述处理设备(210): 获得紧接地在所述输入视频组块(233)之前的在前输入视频组块(233)的至少一个在 前输入视频子组块(234);以及 在馈送所述输入视频组块(233)的所述输入视频子组块(234)之前向所述一个或者多 个代码转换器(220)馈送所述至少一个在前输入视频子组块(234)。27. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210)发布所述 输出媒体流(239)。28. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210)向用户设 备(1 〇〇)传输所述输出媒体流(239)。29. 根据权利要求15所述的代码转换服务器(200),其中所述处理设备(210)执行所述 从属代码转换器(220)。30. 根据权利要求15所述的代码转换服务器(200),其中所述从属代码转换器(220)在 与所述处理设备(210)通信的一个或者多个其它处理设备(210)上执行。31. -种代码转换服务器(200 ),包括: 非瞬态计算机可读介质(230),所述非瞬态计算机可读介质(230)存储计算机可读指 令; 多个从属代码转换器(220),所述多个从属代码转换器(220)从第一编码参数集合到第 二编码参数集合对数据进行代码转换;以及 处理设备(210),所述处理设备(210)与所述计算机可读介质(230)通信并且执行所述 计算机可读指令,所述计算机可读指令使得所述处理设备(210): 接收根据所述第一编码参数集合编码的输入媒体流(232); 将所述输入媒体流(232)的接收的部分的视频部分(232')拆分成输入视频组块(233) 同时接收所述输入媒体流(232)的其余部分; 对于所述输入媒体流(232)的所述视频部分(232')的每个输入视频组块(233): 向一个或者多个从属代码转换器(220)指派所述输入视频组块(233); 将所述输入视频组块(233)拆分成输入视频子组块(234); 向所述一个或者多个从属代码转换器(220)中的每个从属代码转换器分离地馈送每个 输入视频子组块(234); 从所述一个或者多个从属代码转换器(220)分离地接收输出视频子组块(235),每个输 出视频子组块(235)分别对应于所述输入视频子组块(234)中的一个输入视频子组块 (234);以及 将所述输出视频子组块(235)组装成与所述输入视频组块(233)对应的输出视频组块 (236);以及 将所述输出视频组块(236)组装成输出媒体流(239)。
【文档编号】H04N21/234GK106063278SQ201480062710
【公开日】2016年10月26日
【申请日】2014年11月19日
【发明人】董建鹏, K·埃斯瓦兰, 詹洁宁, V·沙斯特里
【申请人】谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1