CN106063278B - 使用子组块化来对媒体流进行代码转换 - Google Patents
使用子组块化来对媒体流进行代码转换 Download PDFInfo
- Publication number
- CN106063278B CN106063278B CN201480062710.5A CN201480062710A CN106063278B CN 106063278 B CN106063278 B CN 106063278B CN 201480062710 A CN201480062710 A CN 201480062710A CN 106063278 B CN106063278 B CN 106063278B
- Authority
- CN
- China
- Prior art keywords
- chunking
- input
- video
- input video
- subordinate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/44016—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/233—Processing of audio elementary streams
- H04N21/2335—Processing of audio elementary streams involving reformatting operations of audio signals, e.g. by converting from one coding standard to another
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/23424—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2347—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/23608—Remultiplexing multiplex streams, e.g. involving modifying time stamps or remapping the packet identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2368—Multiplexing of audio and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/435—Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4405—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video stream decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Abstract
一种方法(600)包括接收输入媒体流(232)并且将输入媒体流的接收的部分的视频部分(232’)拆分成输入视频组块(233)同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,该方法包括向一个或者多个从属代码转换器(220)指派该输入视频组块,将该输入视频组块拆分成视频子组块(234)并且向代码转换器中的每个代码转换器分离地馈送每个输入视频子组块。该方法包括从从属代码转换器分离地接收输出视频子组块(235)。每个输出视频子组块分别对应于输入视频子组块中的一个输入视频子组块。该方法还包括将输出视频子组块组装成与输入视频组块对应的输出视频组块(236)并且将输出视频组块组装成输出媒体流(239)。
Description
技术领域
本公开内容涉及用于使用子组块化来对媒体流进行代码转换的技术。
背景技术
存在对于在用户设备(比如智能电话和平板计算机)处接收实况电视流的增长的需求。然而,使实况电视流可用于具有低端到端延时的移动设备给内容提供商带来挑战。当前解决方案提供可以超过60秒的端到端延时。这样的延时测量对客户无吸引力。
发明内容
公开内容的一个方面提供了一种方法,该方法包括接收根据第一编码参数集合编码的输入媒体流。该方法也包括将输入媒体流的接收的部分的视频部分拆分成输入视频组块,同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,该方法还包括向一个或者多个从属代码转换器指派输入视频组块,将输入视频组块拆分成输入视频子组块,以及向从第一编码参数到第二编码参数集合对数据进行代码转换的一个或者多个从属代码转换器中的每个从属代码转换器分离地馈送每个输入视频子组块。该方法还包括将每个输入视频子组块代码转换成对应的输出视频子组块以及将输出视频子组块组装成与输入视频组块对应的输出视频组块。该方法也包括将输出视频组块组装成输出媒体流。
公开内容的实现方式可以包括以下特征中的一个或者多个特征。在一些实现方式中,该方法包括将输入视频组块的接收的部分拆分成输入视频子组块,同时仍然接收输入视频组块的其余部分。该方法也可以包括向一个或者多个从属代码转换器馈送至少一个输入视频子组块,同时仍然接收输入视频组块的其余部分。每个从属代码转换器可以包括从属解码器和从属编码器。从属编码器对第一输入视频子组块编码,同时属解码器对第二输入视频子组块解码。该方法可以包括将输出视频组块组装成输出媒体流,同时将输入媒体流的视频部分的任何其余部分拆分成输入视频组块。
在一些示例中,该方法包括向多个从属代码转换器指派输入视频组块。附加地或者备选地,多个从属代码转换器中的一个从属代码转换器可以完成对输入视频组块的代码转换,从而命令多个代码转换器中的其它从属代码转换器停止对输入视频组块的输入视频子组块代码转换。附加地或者备选地,该方法可以包括在命令多个代码转换器中的其它从属代码转换器停止代码转换之后将所有从属代码转换器标识为可用于接收另一输入视频组块。
在一些实现方式中,该方法包括将输入媒体流解复用成输入媒体流的视频部分和音频部分,以及将输入媒体流的音频部分拆分成输入音频组块。每个输入音频组块分别对应于视频部分的输入视频组块之一。附加地或者备选地,输入音频组块和输入视频组块的每个对应的对可以在输入媒体流内的相同时间开始并且具有基本上相似或者相同的时间长度。
对于每个输入音频组块,该方法可以包括将输入音频组块解码成音频采样。在检测到在输入音频组块内的丢失的音频分组时,该方法可以包括在与丢失的音频分组对应的位置处向音频采样中插入静默音频采样以及将音频采样编码成输出音频组块。附加地或者备选地,该方法可以包括将输出视频组块组装成输出视频流,包括将每个输出音频组块与对应的输出视频组块对准。
在一些实现方式中,该方法包括从可用代码转换器队列取回一个或者多个从属代码转换器。在一个或者多个从属代码转换器完成对指派的输入视频组块的代码转换时,该方法可以包括将一个或者多个代码转换器释放回到代码转换器队列中。
对于每个输入视频组块,该方法可以包括获得紧接地在输入视频组块之前的在前输入视频组块的至少一个在前输入视频子组块。该方法可以包括在馈送输入视频组块的输入视频子组块之前向一个或者多个从属代码转换器馈送至少一个在前输入视频子组块。该方法还可以包括发布输出媒体流,以及向用户设备传输输出媒体流。
公开内容的另一方面提供了一种包括非瞬态计算机可读介质、多个从属代码转换器和处理设备的代码转换服务器。非瞬态计算机可读介质存储计算机可读指令。多个从属代码转换器从第一编码参数集合到第二编码参数集合对数据进行代码转换。处理设备与计算机可读介质通信并且执行计算机可读指令。计算机可读指令使得处理设备接收根据第一编码参数集合编码的输入媒体流。计算机可读指令也使得处理设备将输入媒体流的接收的部分的视频部分拆分成输入视频组块,同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,处理设备向一个或者多个从属代码转换器指派输入视频组块,将输入视频组块拆分成输入视频子组块,向将输入视频子组块代码转换成输出视频子组块的一个或者多个从属代码转换器中的每个从属代码转换器分离地馈送每个输入视频子组块。在一个或者多个从属代码转换器中的一个从属代码转换器将输入视频组块的所有输入视频子组块代码转换成输出视频子组块时,从属代码转换器将输出视频子组块组装成输出视频组块。处理设备从一个从属代码转换器接收与输入视频组块对应的输出视频组块,以及将输出视频组块组装成输出媒体流。
在一些实现方式中,处理设备将输入视频组块的接收的部分拆分成输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备还向一个或者多个从属代码转换器馈送至少一个输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备可以将输出视频组块组装成输出媒体流,同时将输入媒体流的视频部分的任何其余部分拆分成输入视频组块。
每个从属代码转换器可以包括从属解码器和从属编码器。从属编码器对第一输入视频子组块编码,同时从属解码器对第二输入视频子组块解码。处理设备还可以向多个从属代码转换器指派输入视频组块。附加地或者备选地,在多个从属代码转换器中的一个从属代码转换器完成对视频组块的代码转换时,处理设备可以命令多个代码转换器中的其它从属代码转换器停止对输入视频组块的输入视频子组块代码转换。附加地或者备选地,在命令多个代码转换器中的其它从属代码转换器停止代码转换之后,处理设备可以将所有从属代码转换器标识为可用于接收另一输入视频组块。
在一些示例中,处理设备将输入媒体流解复用成输入媒体流的视频部分和音频部分,以及将输入媒体的音频部分拆分成输入音频组块。每个输入音频组块分别对应于视频部分的输入视频组块中的一个输入视频组块。输入音频组块和输入视频组块的每个对应的对可以在输入媒体流内的相同时间开始,并且具有基本上相似或者相同的时间长度。
对于每个输入音频组块,处理设备可以将输入音频组块解码成音频采样。在检测到在输入音频组块内的丢失的音频分组时,处理设备可以在与丢失的音频分组对应的位置处向音频采样中插入静默音频采样。处理设备还可以将音频采样编码成输出音频组块。附加地或者备选地,服务器可以将输出视频组块组装成输出媒体流,包括将每个输出音频组块与对应的输出视频组块对准。在一些示例中,服务器组装多个输出流,其中每个输出流分离地包含视频输出组块或者音频输出组块,但不是二者。
在一些示例中,处理设备从可用代码转换器队列取回一个或者多个从属代码转换器。在一个或者多个从属代码转换器完成对指派的输入视频组块的代码转换时,处理设备将一个或者多个代码转换器释放回到代码转换器队列中。处理设备可以发布输出媒体流以及向用户设备传输输出媒体流。处理设备可以执行从属代码转换器,并且从属代码转换器可以在与处理设备通信的一个或者多个其它处理设备上执行。
公开内容的另一方面提供了一种代码转换服务器,该代码转换服务器包括非瞬态计算机可读介质、多个从属代码转换器和处理设备。非瞬态计算机可读介质存储计算机可读指令。多个从属代码转换器从第一编码参数集合到第二编码参数集合对数据进行代码转换。处理设备与计算机可读介质通信并且执行计算机可读指令。计算机可读指令使得处理设备接收根据第一编码参数集合编码的输入媒体流。计算机可读指令也使得处理设备将输入媒体流的接收的部分的视频部分拆分成输入视频组块,同时接收输入媒体流的其余部分。对于输入媒体流的视频部分的每个输入视频组块,处理设备向一个或者多个从属代码转换器指派输入视频组块,将输入视频组块拆分成输入视频子组块,以及向一个或者多个从属代码转换器中的每个从属代码转换器分离地馈送每个输入视频子组块。处理设备也从一个或者多个从属代码转换器接收输出视频子组块,以及将输出视频子组块组装成与输入视频组块对应的输出视频组块。每个输出视频子组块分别对应于输入视频子组块中的一个输入视频子组块。处理设备还包括将输出视频组块组装成输出媒体流。
在一些实现方式中,处理设备将输入视频组块的接收部分拆分成输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备还向一个或者多个从属代码转换器馈送至少一个输入视频子组块,同时仍然接收输入视频组块的其余部分。处理设备可以将输出视频组块组装成输出媒体流,同时将输入媒体流的视频部分的任何其余部分拆分成输入视频组块。
每个从属代码转换器可以包括从属解码器和从属编码器。从属编码器对第一输入视频子组块编码,同时从属解码器对第二输入视频子组块解码。处理设备还可以向多个从属代码转换器指派输入视频组块。附加地或者备选地,在多个从属代码转换器中的一个从属代码转换器完成对视频组块代码转换时,处理设备可以命令多个代码转换器中的其它从属代码转换器停止对输入视频组块的输入视频子组块代码转换。附加地或者备选地,在命令多个代码转换器中的其它从属代码转换器停止代码转换之后,处理设备可以将所有从属代码转换器标识为可用于接收另一输入视频组块。
在一些示例中,处理设备将输入媒体流解复用成输入媒体流的视频部分和音频部分以及将输入媒体流的音频部分拆分成输入音频组块。每个输入音频组块分别对应于视频部分的输入视频组块中的一个输入视频组块。输入音频组块和输入视频组块的每个对应的对可以在输入媒体流内的相同时间开始并且具有基本上相似或者相同的时间长度。
对于每个输入音频组块,处理设备可以将输入音频组块解码成音频采样。在检测到在输入音频组块内的丢失的音频分组时,处理设备可以在与丢失的音频分组对应的位置处向音频采样中插入静默音频采样。处理设备还可以将音频采样编码成输出音频组块。附加地或者备选地,服务器可以将输出视频组块组装成输出媒体流,包括将每个输出音频组块与对应的输出视频组块对准。
在一些示例中,处理设备从可用代码转换器队列取回一个或者多个从属代码转换器。在一个或者多个从属代码转换器完成对指派的输入视频组块代码转换时,处理设备将一个或者多个代码转换器释放回到代码转换器队列中。处理设备可以发布输出媒体流以及向用户设备传输输出媒体流。处理设备可以执行从属代码转换器,并且从属代码转换器可以在与处理设备通信的一个或者多个其它处理设备上执行。
在附图和以下说明书中阐述公开内容的一个或者多个实现方式的细节。将从说明书和附图以及从权利要求清楚其它方面、特征和优点。
附图说明
图1是图示了用于向用户设备递送媒体流的示例系统的示意图。
图2A是图示了代码转换服务器的示例部件的示意图。
图2B是图示了代码转换服务器的示例数据流的示意图。
图3是图示了子组块化模块的示例部件的示意图。
图4是图示了资源管理器的示例部件的示意图。
图5是图示了从属代码转换器的示例部件的示意图。
图6是用于向用户设备递送媒体流的方法的示例操作集合的示意图。
图7是用于对输入视频组块进行代码转换的方法的示例操作集合的示意图。
各附图中的相似标号指示相似单元。
具体实施方式
图1图示了用于向用户设备100递送媒体流的示例系统10。在一些实现方式中,代码转换服务器200从内容提供方120接收输入媒体流232。输入媒体流232包含媒体内容并且根据第一编码参数集合(例如,1080p MP4编码)被编码。代码转换服务器200可以从任何适当源接收输入媒体流232,包括通过经由网络110从卫星120A和/或内容服务器120B传输。在一些示例中,输入媒体流232是实况电视流,例如,将向一个或者多个用户设备100传输的实况电视广播。附加地或者备选地,输入媒体流232是从用户设备(例如,视频点播服务)请求的被请求媒体流。
代码转换服务器200将输入媒体流232代码转换成根据第二参数集合(例如,720pMP4编码)编码的输出媒体流239。代码转换服务器200(或者另一服务器)可以向用户设备100传输输出媒体流239。用户设备的示例包括但不限于平板计算设备100A、智能电话100B、个人计算设备100C和机顶盒100D。用户设备100可以经由一个或者多个用户接口(例如,显示设备和/或扬声器)播放输出媒体流239。输入媒体流232或者输出媒体流239可以包括视频部分232’和/或音频部分232”。用户设备100可以用任何适当方式请求输出媒体流239。例如,在智能电话或者平板计算机类型的用户设备100的情况下,用户可以访问用户设备100上的专用应用。在该应用中,用户可以选择媒体流(例如,频道或者视频)。用户设备100向代码转换服务器200(或者与之关联的服务器)传输请求选择的内容的请求。响应于请求,代码转换服务器200(或者关联的服务器)可以用流传输输出媒体流239到用户设备100。输出媒体流239可以用对于用户设备100适合的参数被编码。
在操作中,代码转换服务器200将输入媒体流232解复用成视频部分232’和音频部分232”(也就是在媒体流包括音频部分和视频部分时)。代码转换服务器200将输入媒体流232的视频部分232’拆分成多个输入视频组块233并且将每个输入视频组块233拆分成多个输入视频子组块234。输入视频组块233是输入媒体流232的视频数据段。输入视频子组块234是输入视频组块233的段。在一些实现方式中,输入视频组块233中的每个输入视频组块被拆分成相等大小的段(例如,五毫秒)。相似地,输入视频子组块234中的每个输入视频子组块被拆分成相等大小的子段(例如,5毫秒)。因此,输入视频组块233中的每个输入视频组块包括相等数目的输入视频子组块234。为了清楚,尚未被代码转换服务器200代码转换的视频组块234和视频子组块233被称为输入视频组块233和输入视频子组块234。
代码转换服务器200向一个或者多个可用从属代码转换器220指派输入媒体流232的每个输入视频组块233。代码转换服务器200向相应视频组块233被指派给的一个或者多个从属代码转换器220馈送相应视频组块233的视频子组块234。一个或者多个从属代码转换器220将输入视频子组块234中的每个输入视频子组块代码转换成输出视频子组块235。在一些实现方式中,一个或者多个从属代码转换器220使用输出视频子组块235来组装与相应输入视频组块233对应的输出视频组块236。从属代码转换器220可以返回输出视频组块236。在一些实现方式中,从属代码转换器220可以输出随后被组装成输出视频组块236的个别输出视频子组块235。从属代码转换器220可以被实施为代码转换服务器200的部分或者可以在代码转换服务器200外部。
在一些实现方式中,代码转换服务器200向多个从属代码转换器220(例如,三个从属代码转换器220)指派每个输入视频组块233。然后,代码转换服务器200向指派的从属代码转换器220馈送输入视频组块233的输入视频子组块234。指派的从属代码转换器220对输入视频子组块234进行代码转换,直至指派的从属代码转换器220中的一个从属代码转换器完成将输入视频组块233代码转换成输出视频组块236。一旦完成,代码转换服务器200就可以停止其它从属代码转换器220。代码转换服务器200可以将所有指派的从属代码转换器220的状态改变成可用。
在其中输入媒体流232包括音频部分232”的场景中,代码转换服务器200可以对音频部分232”进行代码转换。在一些实现方式中,代码转换服务器200可以将音频部分232”划分成一系列输入音频组块237。代码转换服务器200将输入音频组块237代码转换成输出音频组块238。在一些实现方式中,输入音频组块237被拆分成输入音频子组块(未示出),这些输入音频子组块被代码转换成输出音频子组块(未示出)。输出音频子组块被组装成输出音频组块238。
代码转换服务器200可以基于输出视频组块236和输出音频组块238来组装输出媒体流239。代码转换服务器200(或者与代码转换服务器200关联的另一服务器)可以经由网络100向一个或者多个而用户设备100递送输出媒体流。
图2A和图2B图示了代码转换服务器200的示例。图2A图示了代码转换服务器200的部件。图2B图示了代码转换服务器200的示例数据流。代码转换服务器200可以包括处理设备210、存储器设备230、存储设备240和网络接口设备250。代码转换服务器200的部件可以由一个或者多个总线和/或网络110连接。尽管代码转换服务器200被图示为在单个位置处的设备,但是可以用分布式方式实施代码转换服务器200,从而使得部件可以被实施为在不同物理位置处的多个设备。在这样的场景中,部件可以通过网络110(例如,因特网和/或一个或者多个内部网)通信。
处理设备210包括执行计算机可读指令(例如,可执行计算机代码)的一个或者多个物理处理器。在其中处理设备210包括两个或者更多个处理器的实现方式中,两个或者更多个处理器可以用个别或者分布式方式操作。处理设备210可以执行都可以被实施为计算机可读指令的流传输代理212、子组块模块214、资源管理器216、实况组块管理器218和多个从属代码转换器220。前述部件共同地形成代码转换流水线。在一些实现方式中,在不同物理设备处实施执行的部件中的一些部件。例如,实况组块管理器218和流传输代理212可以在第一位置/设备处执行,并且子组块模块214、资源管理器和从属代码转换器220可以在第二位置/设备处执行。另外,从属代码转换器220可以在与处理设备210通信的一个或者多个其它处理设备210上执行。
存储器设备230包括一个或者多个易失性、非瞬态计算机可读介质(例如,RAM和/或ROM)。存储器设备230可以存储输入媒体流232的部分和输出媒体流239的部分。存储器设备230还可以存储以上讨论的计算机可读指令。
存储设备240包括一个或者多个非易失性、非瞬态计算机可读介质(例如,闪存、HDD等)。存储设备240可以存储任何适当数据,包括输入视频组块233及其对应子组块234、输出视频组块236及其对应子组块235、输入音频组块237及其对应子组块以及输出音频组块239及其对应子组块。存储设备240可以附加地存储与音频和视频数据对应的元数据。
网络接口设备250从网络110接收数据和向网络110传输数据。网络接口设备250可以包括与网络110通信的一个或者多个设备。网络接口设备250可以执行有线和/或无线通信。
流传输代理212是代码转换流水线的入口点。流传输代理212从各种内容源120接收输入媒体流232。个别输入媒体流232可以被接收作为一系列数据分组或者作为模拟信号。在数字输入媒体流232的情况下,输入媒体流232的每个分组可以包括音频数据和/或视频数据以及关于输入媒体流232的元数据。关于输入媒体流232的元数据的示例包括但不限于流的名称(例如,用于从接收的实况流的NBCUHD)、在数据分组中包含的数据的时间戳、输入媒体流232的编码参数(例如,H264_1080p)。流传输代理212可以在存储器设备230中存储输入媒体流232和/或可以向子组块模块214提供输入媒体流232。在其中输入媒体流232是模拟信号的场景中,流传输代理212可以包括将模拟输入媒体流232转换成数字输入媒体流232的模数转换器。
子组块模块214从流传输代理212和/或从存储器设备230获得输入媒体流232。子组块模块214对输入媒体流232解复用以获得输入媒体流232的视频部分232’和音频部分232”。子组块模块214将输入媒体流232的视频部分232’拆分成一系列视频组块233并且将每个视频组块拆分成一系列视频子组块234。子组块模块214向资源管理器216提供视频子组块234并且可选地提供视频组块233。
子组块模块214还可以被配置为对输入媒体流232的音频部分232”进行代码转换。子组块模块214将经代码转换的音频部分232”拆分成输入音频组块237。子组块模块214将输入音频组块237代码转换成输出音频组块238。输出音频组块238用来组装输出媒体流239,并且也可以出于存储和调试目的被传达到资源管理器216。
资源管理器216接收每个输入视频组块233的输入视频子组块234。对于每个输入视频组块233,资源管理器216向一个或者多个从属代码转换器220指派输入视频组块233。在资源管理器216开始接收新视频组块233的视频子组块234时,资源管理器216向m个从属代码转换器指派新视频组块233(其中m大于或者等于一)。在一些实现方式中,可用从属代码转换器220在先入先出(FIFO)队列220’中等待。资源管理器216基于队列220’的排序来选择m个从属代码转换器220。
在其中m大于一的实现方式中,资源管理器216向m个从属代码转换器中的每个从属转换器馈送新视频组块233的每个视频子组块234。从属代码转换器220向资源管理器216返回输出视频组块236。在m个代码转换器220之一完成对整个视频组块233代码转换时,资源管理器216可以停止其它m-1个从属代码转换器220。从属代码转换器220在从属代码转换器220已经对输入视频组块233的所有输入视频子组块234进行代码转换并且向资源管理器216返回了对应的输出视频组块236时完成整个视频组块233。一旦资源管理器停止m-1个从属代码转换器,m个从属代码转换器220的状态就被改变成可用并且m个从属代码转换器220返回到队列220’。以这一方式,对视频组块224的代码转换更不大可能被慢速从属代码转换器220延迟。另外,这些实现方式在m个从属代码转换器220中的一个或者多个从属代码转换器出故障的情况下提供冗余性。另外,输入视频组块233更不大可能不能被代码转换。
在一些实现方式中,资源管理器216向子组块模块214返回输出视频组块236。在一些实现方式中,资源管理器216出于稍后分析和/或调试目的也向存储设备240写入输出视频子组块235和输出视频子组块236。
子组块模块214基于输出视频组块236和输出音频组块238来组装输出媒体流239。子组块模块214可以根据一个或者多个协议组装输出媒体流239。例如,子组块模块214可以根据通过HTTP的MPEG动态自适应流传输(DASH)协议和/或Apple HTTP实况流传输(HLS)协议生成输出媒体流239。子组块模块214可以生成输出媒体流239作为输出视频组块236并且对应的经代码转换的音频组块238变成可用。子组块模块24向实况组块模块218发布输出媒体流239。
实况组块管理器218是代码转换流水线的出口点。实况组块管理器218在输出媒体流239的部分由子组块模块214发布时接收这些部分。实况组块管理器218可以向一个或者多个用户设备100分发输出媒体流239。实况组块管理器218接收用于特定媒体流239的请求,并且相应地向请求用户设备100供应输出媒体流239。
图3图示了示例子组块模块214。在一些实现方式中,子组块模块214被配置为生成根据不同编码标准被编码的输出媒体流232。在所图示的示例中,示例子组块模块214可以生成根据通过HTTP的MPEG动态自适应流传输(DASH)或者Apple HTTP实况流传输(HLS)被编码的输出媒体流232。另外,在所图示的示例中,子组块模块214可以包括解复用器310、组块器312、音频解码器314、音频编码器316、MPEG复用器318、HLS分段器320、发布器322、虚线(dash)分段器324和子组块管理器326。
在操作中,解复用器310接收输入媒体流232并且将输入媒体流232解复用成视频部分232’和音频部分232”。在一些实现方式中,解复用器310调用预先存在的库(例如,FFmpeg第三方库)以将输入媒体流232解复用成分离的音频部分232”和视频部分232’。解复用器310输出音频部分232”和视频部分232’作为一系列数据分组。解复用器310可以备选地是与处理设备210通信的硬件部件。
组块器312接收输入媒体流232的音频部分232”和视频部分232’,并且将相应部分拆分成音频组块237和视频组块233。在一些实现方式中,组块器312输出时间长度基本上相似或者相等(例如,五秒)的输入视频组块233和输入音频组块237。另外,每个输入视频组块233可以具有在相同相对时间开始和结束的对应的输入音频组块237。例如,如果输入视频组块233在时间戳.15秒开始,则组块器312拆分也在时间戳.15秒开始的输入音频组块237。组块器312可以向每个输入视频组块233指派从输入媒体流232的其它输入视频组块233标识出输入视频组块233的组块标识符(“组块ID”)。相似地,组块器312可以向每个输入音频组块237指派组块标识符。在一些实现方式中,可以向对应的音频组块237和视频组块233指派相同或者对应的组块标识符。附加地,输入视频组块233和音频组块237可以被组块类型(例如,音频或者视频)加标签。
对于每个输入视频组块233,组块器312可以将输入视频组块233拆分成一系列输入视频子组块234。组块器312可以向每个输入视频子组块234指从输入视频组块233的其它输入视频子组块234派标出识视频子组块234的子组块标识符(“子组块ID”)。组块器312将输入视频子组块234拆分成相等时间划分,从而使得每个输入视频组块233具有相同数目的输入视频子组块234,这些输入视频子组块234具有基本上相似或者相同的时间长度。以这一方式,在一系列视频组块233和视频子组块234中组织输入媒体流232的视频部分232’。单个视频组块233包括视频子组块234的有序列表。在一些实现方式中,子组块234按它们的子组块ID(例如,时间戳)被排序并且被组块ID唯一地标识。输入视频子组块234可以各自还包括标识输入视频子组块234属于的输入视频组块233的标识符和子组块234的类型(例如,视频)。
在一些实现方式中,组块器312可以将每个输入音频组块237拆分成一系列输入音频子组块。在这些实现方式中,组块器312可以向每个音频子组块指派子组块ID。输入音频子组块可以各自还包括标识输入音频子组块属于的输入音频组块237的标识符和子组块的类型(例如,音频)。
输出视频组块236、输出音频组块238、输出视频子组块235和输出音频子组块可以包括与输入对应组块相似的字段。例如,输出视频组块236和输出音频238可以指示组块的类型。相似地,输出视频子组块235和输出音频组块可以包括标识子组块属于的组块的标识符。
组块器312还可以被配置为分析输入视频流232的视频部分232’以寻找丢失的视频分组。在这些实现方式中,如果输入视频组块233中的一个或者多个视频组块丢失或者损坏,则组块器312可以将输入视频组块233标记为损坏。在操作中,组块器312监视输入流的传入视频部分232’以寻找流中的不连续。不连续可以出现在单个输入视频组块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可以包含被标示为“BaD”的单个输出视频子组块235。
音频解码器314接收和解码输入媒体流232的音频部分232”的输入音频组块237。在一些实现方式中,音频解码器314将音频组块解码成脉冲代码调制(“PCM”)采样。音频解码器314可以被配置为检测音频组块237中的丢失的音频分组。如果音频解码器314检测到丢失的音频分组,则音频解码器314将静默音频PCM采样插入到音频组块237的PCM采样中。
音频编码器316接收一系列PCM采样并且将PCM采样编码成输出音频组块238。音频编码器316将PCM采样编码成任何适当格式(例如,AAC)。编码器316可以向输出音频组块238指派组块ID,其中组块ID与用来生成输出音频组块238的输入音频组块237的组块ID相同或者对应。
子组块管理器326是在子组块模块214与资源管理器216之间的接口。子组块管理器326从组块器312接收视频组块233和子组块234,并且向资源管理器216写入输入视频组块233和子组块234。在一些实现方式中,子组块管理器326可以向资源管理器216写入输入视频组块234同时组块器312从解复用器310接收相应的输入组块233、237的随后音频部分和视频部分。以这一方式,子组块管理器326在相同输入视频组块233的随后视频子组块234由组块312、解复用器310或者在一些场景中由流传输代理212接收之前向资源管理器216传达更早的视频子组块234。在这些实现方式中,可以减少媒体流的延时时间,因为对组块233的代码转换可以在代码转换服务器200接收整个输入视频组块233之前开始。在一些实现方式中,子组块管理器326还可以被配置为向资源管理器216写入输出音频组块238和/或输出音频子组块。
子组块管理器326从资源管理器216接收输出视频组块236。资源管理器216可以在输出视频组块236被写入到资源管理器216时向子组块管理器326写入输出视频组块236。子组块管理器326可以根据用于传输输出媒体流239的格式向MPEG复用器318和/或虚线分段器324提供接收的输出视频组块。例如,如果输出媒体流239将被传输作为HLS流,则子组块管理器326向MPEG复用器328提供接收的输出视频组块236和对应的输出音频组块238。如果输出媒体流239将被传输作为DASH流,则子组块管理器326向DASH分段器324提供接收的输出视频组块236和对应的输出音频组块238或者音频子组块。子组块管理器326可以基于它们的相应的组块标识符或者它们的相应的时间戳来标识对应的输出音频组块238和输出视频组块236。在一些实现方式中,组块器312和资源管理器216中的一个或者多个可以执行子组块管理器326的功能中的一些或者所有功能。
在输出媒体流239是HLS流时,MPEG复用器318将输出音频组块238和对应的输出视频组块236复用成适当MPEG格式(例如,MPEG-2TS)以获得输出媒体流239。HLS分段器320接收输出媒体流239作为MPEG-2传送流并且输出该输出媒体流239作为一系列相等长度的文件。HLS分段器320向发布器322输出分段的输出媒体流239。发布器322向实况组块管理器218发布分段的输出媒体流239。发布器322在输出媒体流239的分段被接收时发布它们。以这一方式,实况组块管理器218可以实时或者接近实时地分发输出媒体流239
在输出媒体流239是DASH流时,无需复用输出音频组块238和对应的输出视频组块236。因此,输出音频组块238和对应的输出视频组块236被传达到DASH分段器324。DASH分段器324接收输出音频组块238和对应的输出视频组块236并且生成输出媒体流239作为一系列小HTTP文件分段。DASH分段器324向发布器322写入输出媒体流239。发布器322在输出媒体流239的分段被接收时发布它们。
图3的示例子组块模块214被配置为提供DASH媒体流和HLS媒体流。然而,子组块模块214可以适于输出现在已知或者更晚开发的其它适当类型的媒体流。子组块模块214例如被提供并且子组块模块214的变化在公开内容的范围内。子组块模块214可以包括在图3中未示出的其它部件。例如,子组块模块214可以包括对输出媒体流239加密的一个或者多个加密模块。
图4图示了包括作业分配器410和数据管理器412的示例性资源管理器216。作业分配器410接收代码转换作业414。代码转换作业414包括输入媒体流232的标识符(例如,频道标识符或者内容文件标识符)和用于输出媒体流239的编码参数集合。作业分配器410配置从属代码转换器220以根据用于输出媒体流239的编码参数将输入子组块233代码转换成输出视频子组块235和组块236。编码参数可以包括视频分辨率、目标比特率、视频编码解码器类型、目标GOP大小或者任何其它适当参数。
作业分配器410向m个从属代码转换器220指派输入媒体流232的接收的输入视频组块233,其中m是大于或者等于一的整数。作业分配器410从多个从属代码转换器220指派m个从属代码转换器220。多个从属代码转换器220可以被布置在阵列或者队列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可以向子组块模块214返回输出视频组块236。
作业分配器410向m个从属代码转换器220中的每个从属代码转换器馈送每个输入视频子组块234,直至m个从属代码转换器220之一完成对整个输入视频组块233代码转换。在确定m个从属代码转换器220之一已经完成对指派的输入视频组块233的所有视频子组块234代码转换时,作业分配器可以停止其它m-1个从属代码转换器220、将所有m个从属代码转换器220的状态更新为可用并且将m个从属代码转换器220返回到队列220’。
作业分配器410可以对于输入媒体流232的持续时间以前述方式继续操作。作业分配器410可以循环遍历从属代码转换器220并且可以让m个从属代码转换器220的多个集合并行地对不同输入视频组块233进行代码转换。例如,作业分配器410可以开始m个从属代码转换器220的集合对随后输入视频组块233的代码转换,同时在前输入视频组块2333仍然由m个从属代码转换器220的不同集合进行代码转换。以这一方式,可以减少用于对输入媒体流232进行代码转换的延时时间。
数据管理器412在存储器设备230和存储设备240中存储输入视频组块233和输出视频组块236。作业分配器410可以向数据管理器412提供接收的视频组块233和返回的输出视频组块236。
数据管理器412可以向存储器设备230写入每个输入视频组块233的一个或者多个副本。在一些实现方式中,输入视频组块233被存储为一系列输入视频组块233。在存储输入视频组块233时,数据管理器412可以使用视频组块233的组块ID对存储器设备230中的输入视频组块233中的每个输入视频组块编索引。相似地,数据管理器412可以使用视频子组块234的子组块ID对存储器设备230中的输入视频子组块234中的每个输入视频子组块编索引。在一些实现方式中,数据管理器412使用公共数据结构以允许子组块模块214向存储器设备230写入数据并且允许从属代码转换器220从存储器设备230读取数据。
数据管理器412也向存储器设备230写入每个输出视频组块236的一个或者多个副本。在一些实现方式中,数据管理器412存储经代码转换的帧和/或每个输出视频组块236的子组块234。数据管理器412可以使用组块236的组块ID对存储器设备230中的输出视频组块236中的每个输出视频组块编索引。附加地,数据管理器412可以使用子组块235的子组块ID对存储器设备230中的每个输出视频子组块235编索引。在一些实现方式中,数据管理器412使用公共数据结构以允许子组块模块214从存储器设备230读取数据并且允许从属代码转换器220向存储器设备230写入数据。
在一些实现方式中,数据管理器412也在存储器设备230中存储每个输入音频组块237和输出音频组块238的一个或者多个副本。输入音频组块237和输出音频组块238可以按它们的相应的组块ID被引用。另外,数据管理器412可以使用允许子组块模块214从存储设备240读取音频数据和向存储设备240写入音频数据的公共数据结构。
出于调试的目的,数据管理器412可以在存储设备240中复制在存储器设备230中存储的数据。例如,输入视频组块233和输出视频组块236以及输入音频组块237和输出音频组块238可以在存储设备240中存储于a.cns文件中。另外,与输入视频组块233和输出视频组块236以及输入音频组块237和输出音频组块238对应的元数据可以被存储在存储设备240中。
图5图示了示例从属代码转换器220。从属代码转换器220负责对输入视频组块233进行代码转换。从属代码转换器220从资源管理器216读取输入视频组块233并且向资源管理器216写入输出视频组块236的输出视频子组块235。
每个从属代码转换器220可以驻留在三个不同状态之一中:“未初始化”、“可用”和“忙碌”。在从属代码转换器220已经被配置为根据编码参数集合对输入视频组块233编码之前,从属代码转换器220的状态是未初始化。一旦从属代码转换器220被初始化/配置并且已经进入了队列220’中,则资源管理器216将从属代码转换器220的状态改变成可用。在从属代码转换器220在“可用”状态中时,从属代码转换器220准备好执行代码转换。在一些实现方式中,从属代码转换器220周期地报告它的状态为可用。从属代码转换器220必须在可用状态中以接收代码转换作业。在资源管理器216向从属代码转换器220指派输入视频组块233时,资源管理器216将从属代码转换器220的状态改变成忙碌。在从属代码转换器220在忙碌状态中时,它正在对输入视频组块233进行代码转换并且不能被指派另一代码转换作业。在从属代码转换器220完成对输入视频组块233代码转换时,从属代码转换器220向资源管理器返回输出视频组块236并且资源管理器216将从属代码转换器的状态更新成可用。
从属代码转换器220各自包括视频解码器510和视频编码器512。在一些实现方式中,视频解码器510将输入视频子组块234解码成原始YUV帧。视频编码器512将原始YUV帧编码成输出视频子组块235。视频编码器512根据编码参数对输出视频子组块235编码。这两个级联级(编码跟随解码)被实施以便将解码和编码并行化,从而使得从解码级出来的原始YUV帧可以立即地被推送到随后的编码级以用于编码。
在操作中,资源管理器216向从属代码转换器220指派代码转换作业(即,待代码转换的输入视频组块233)。资源管理器216提供待代码转换的输入视频组块233的组块ID、用于向输出视频组块236提供的组块ID和输出视频组块236的编码参数。在大量代码转换时,资源管理器216可以将所有从属代码转换器220初始化以根据编码参数对输出视频组块236编码。另外,从属代码转换器220可以在被初始化时加载预定义的同步/关键帧(在H264/AVC中的IDR)以用于错误处置。
从属代码转换器220开始从资源管理器216读取输入视频组块233的输入视频子组块234。从属代码转换器220向视频解码器510馈送视频子组块234并且向编码器512馈送YUV帧。从属代码转换器220继续从资源管理器216读取输入视频子组块234,直至它到达输入视频组块233的最后子组块234。一旦从属代码转换器220已经对输入视频组块233的所有子组块234进行代码转换,从属代码转换器220就可以将输出视频子组块235组装成输出视频组块236并且可以向资源管理器216写入输出视频组块236。附加地或者备选地,从属代码转换器220向资源管理器216返回经代码转换的输出视频子组块235。在一些实现方式中,从属代码转换器220在返回输出视频子组块235之前等待,直至它已经对所有视频子组块233进行代码转换。在其它实现方式中,从属代码转换器220在输出视频子组块235变成可用时向资源管理器216返回它们。
在一些实现方式中,从属代码转换器220被配置为处置损坏的输入视频组块233。在从属代码转换器220接收损坏的输入视频子组块234(例如,被标示为“BaD”的输入视频组块233)时,从属代码转换器220停止对输入视频子组块234代码转换并且丢弃从属代码转换器220已经代码转换的输入视频组块233和任何输出视频子组块235。从属代码转换器220然后使用预定义的同步/关键帧来创建替换输出视频组块236,并且向资源管理器216写入替换视频组块236。从属代码转换器220可以这样标记替换输出视频组块。资源管理器216然后将从属代码转换器220的状态更新为可用。
在一些实现方式中,从属代码转换器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可以实施前述技术以避免用于输出视频组块236中的初始关键或者同步帧的突然质量不连续用于单个通过(single pass)代码转换。资源管理器216可以向m个从属代码转换器两次馈送输入媒体流的第一输入视频组块233。随后,资源管理器216向被指派用于对连续输入视频组块233中的第二输入视频组块进行代码转换的m个从属代码转换器220的集合馈送连续输入视频组块233。
回顾图2A,在一些实现方式中,代码转换服务器200被设计为从其部件中的一个或者多个部件中的致命错误恢复。致命错误可以出现在从属代码转换器220、资源管理器216、子组块模块214、流传输代理212和/或实况组块管理器218中。
一个错误类型是从属代码转换器220的故障。例如,资源管理器216可以向已经出故障的从属代码转换器220指派代码转换作业。在其中资源管理器216向多个代码转换器220指派代码转换作业的实现方式中,冗余指派减轻非工作从属代码转换器220的任何顾虑。一旦出故障的代码转换器220被发现,就可以重启出故障的代码转换器220。
问题可能在资源管理器216出故障时出现。例如,从属代码转换器220可能不能从资源管理器216读取输入视频子组块234。在这样的场景中,从属代码转换器220终止当前代码转换作业并且将它的状态改变成“可用”并且报告它的当前状态。在另一场景中,从属代码转换器220可能不能向资源管理器216写入输出视频子组块235。在这样的场景中,从属代码转换器220忽略故障、完成代码转换作业并且将它的状态更新为可用。在另一示例中,子组块模块214可能不能向资源管理器216写入输入音频组块237和/或输入视频组块233。在这一场景中,子组块模块214可以忽略故障并且可以继续尝试向资源管理器216写入输入组块233、237,如同故障从未出现。然而,如果子组块模块214不能在给定的超时时段内读取输出视频组块236,则子组块模块214可以生成“BaD”输出视频组块236以替换遗漏输出视频组块236。最后,可以重启出故障的资源管理器216。在重启之后,资源管理器216可以丢弃作为已经正在被处理的输入视频组块233的部分而被接收的任何输入视频子组块234。资源管理器216可以一旦它开始接收新输入视频组块233就开始处理输入视频子组块234。
另一错误类型是子组块模块214的故障。在子组块模块214出故障时,执行代码转换作业的任何从属代码转换器220可以终止当前代码转换作业并且将它们的相应的状态更新为可用,并且资源管理器216可以停止向从属代码转换器220指派代码转换作业。在这一场景中,实况组块管理器218停止接收输出媒体流239,并且流传输代理212停止递送输入媒体流232。在子组块模块214出故障时,子组块模块214最终被重启并且其它部件的操作可以恢复操作。
问题可能在流代理212出故障时出现。在这一场景中,其它部件可以继续操作并且尝试对输入媒体流232进行代码转换。然而,由于流代理212在故障状态中,所以子组块模块214未接收输入媒体流232。其余部件未受影响。一旦流代理212重启,子组块模块214就可以开始接收输入媒体流232并且代码转换可以开始。
另一错误类型是实况组块管理器218的故障。在实况组块管理器218出故障时,其余部件可以继续将输入媒体流232代码转换成输出媒体流234。在这一场景中,子组块模块214可以尝试向实况组块管理器218写入输出媒体流239的部分。在子组块模块214不能向实况组块管理器218写入时,子组块模块214可以丢弃输出媒体流239的可用部分。一旦实况组块管理器218重启,子组块模块214就可以开始输出媒体流239的递送。
提供前述错误类型作为示例。代码转换服务器200也可能遇到其它错误类型。代码转换服务器300用来处置错误的技术也可以变化。
图6图示了用于向用户设备100递送输出媒体流239的方法600的示例性操作集合。关于以上讨论的代码转换服务器200的部件说明方法600。然而,方法600可以由任何适当设备执行。
在操作610,代码转换服务器200接收代码转换指令。代码转换指令可以包括待编码的输入媒体流232的流标识符和用于对输入媒体流232编码的编码参数。可以从用户设备100、从另一设备或者内部接收代码转换指令。例如,用户设备100可以请求频道的实况流。在另一示例中,代码转换服务器200可以被设立为使任何数目的频道和视频点播内容在不同编码参数可用。流标识符可以标识待编码转换的频道馈送或者媒体内容。编码参数指示用于输出媒体流239的目标编码。
在操作612,资源管理器216配置从属代码转换器220。例如,资源管理器216可以设置从属代码转换器220的输出比特率。资源管理器216也可以建立从属代码转换器220的队列220’。
在操作614,子组块模块214通过流传输代理212接收输入媒体流232。流传输代理212可以从任何适当内容源120接收输入媒体流232。例如,流传输代理可以从有线提供方、网络、个体、电影工作室或者任何其它适当源接收内容。
在操作616,子组块模块214将输入媒体流232解复用成音频部分232”和视频部分232’。在操作618,子组块模块将音频部分232”拆分成输入音频组块237并且将视频部分232’拆分成输入视频组块233。输入视频组块233和输入音频组块237被拆分成相等大小的组块(例如,5毫秒组块)。每个输入组块233、237可以被指派组块ID并且用它的组块类型被标记。
在操作620,子组块模块214对输入音频组块237进行代码转换。子组块模块214可以根据用于输出媒体流239的音频部分的希望的编码参数对输入音频组块237进行代码转换。子组块模块214将输入音频组块237代码转换成输出音频组块238。
在操作622,子组块模块214将输入视频组块233拆分成输入视频子组块234。输入视频子组块234是相等长度的(例如,.05毫秒分段)。子组块模块214可以向每个输入视频子组块234指派子组块ID。子组块模块214可以向资源管理器216写入输入视频子组块。在操作624,资源管理器216和从属代码转换器220对输入视频组块233进行代码转换。
图7图示了用于对输入视频组块233进行代码转换的方法的操作集合。在操作710,资源管理器216将m个从属代码转换器220从队列220’出列,其中m是大于或者等于一的整数。在操作712,资源管理器216向m个从属代码转换器220指派输入视频组块233。资源管理器216可以将m个从属代码转换器中的每个从属代码转换器的状态更新为忙碌。
在一些实现方式中,m个从属代码转换器220如在操作714所示获得紧接地在待代码转换的输入视频组块233之前的输入视频组块233的至少一些子组块234。M个从属代码转换器220可以从资源管理器216读取在前输入视频组块233的所有子组块234或者在前输入视频组块233的最后一个或者多个子组块234。
在操作716,m个从属代码转换器220获得待代码转换的输入视频组块233的输入视频子组块234。可以从资源管理器216顺序读取输入视频子组块234,从而使得从属代码转换器220读取在随后输入视频子组块234之前的更早输入视频子组块234。在一些实现方式中,m个从属代码转换器220读取更早输入视频子组块234同时更晚输入视频子组块由子组块模块214接收。
在操作718,m个从属代码转换器220对输入视频子组块234进行代码转换。在一些实现方式中,m个从属代码转换器220中的每个从属代码转换器将输入视频子组块234解码成YUV帧,并且然后将YUV帧编码成输出视频子组块235。M个从属代码转换器220可以独立地和在它们自己的相应的速度工作。在从属代码转换器220完成对输入视频子组块234解码时,它可以获得下一输入视频子组块234并且开始对下一输入视频子组块234解码。相似地,在从属代码转换器220对输出视频组块235编码时,一旦从属代码转换器220完成对YUV帧解码,从属代码转换器220就可以开始对下一可用输入视频子组块234解码。如先前指示的那样,在一些实现方式中,m个从属代码转换器220在对待代码转换的输入视频组块233的输入视频子组块234进行代码转换之前开始对在前输入视频组块233的输入视频子组块234进行代码转换。在对在前输入视频组块233的输入视频子组块234进行代码转换时,从属代码转换器220可以丢弃与之对应的输出视频子组块235。
在操作720,资源管理器216确定m个从属代码转换器220之一是否已经完成代码转换作业(即,对输入视频子组块234进行代码转换)。如果不是,则m个从属代码转换器220继续对输入视频子组块进行代码转换。
在从属代码转换器220之一已经完成对整个输入视频组块233代码转换时,从属代码转换器220如在操作722所示返回输出视频组块236。一旦从属代码转换器220已经完成对输入视频组块233的所有输入视频子组块234代码转换,从属代码转换器220就从输出视频子组块235组装输出视频组块236。从属代码转换器220向资源管理器215返回输出视频组块236。在一些实现方式中,从属代码转换器220可以向资源管理器216返回输出视频子组块235,并且资源管理器216将输出视频子组块235组装成输出视频组块236。
在操作724,资源管理器216停止其余m-1个从属代码转换器220并且丢弃由m-1个从属代码转换器220代码转换的输出视频子组块235。资源管理器216可以向子组块模块214返回输出视频组块236。在操作726,资源管理器216将m个从属代码转换器220的状态更新为“可用”。资源管理器216可以将m个从属代码转换器220入队到队列220’上。
回顾图6,资源管理器216和从属代码转换器220在输入视频组块233由子组块模块214接收和组块化时连续地对它们进行代码转换。注意,子组块模块214可以对音频组块237进行代码转换同时资源管理器216和从属代码转换器220对输入视频组块233进行代码转换。
在操作626,子组块模块214将输出视频组块236和输出音频组块238组装成输出媒体流239。如先前讨论的那样,子组块模块214可以根据一个或者多个协议(例如,HLS和/或DASH)生成输出媒体流239。在操作628,子组块模块214向实况组块管理器218发布输出媒体流239。实况组块管理器218可以向一个或者多个下游用户设备100传输输出媒体流239。
在图6和图7中执行的操作的顺序不是必要的。操作中的许多操作对于输入媒体流232的不同部分并行地出现。例如,可以同时执行对音频组块和视频组块代码转换,并且可以有如下实例,其中多个视频组块233由不同从属代码转换器220同时进行代码转换。可以并行和/或串行执行以上描述的操作中的许多操作。例如,从属代码转换器220可以接收视频子组块234同时对其它输入视频子组块234进行代码转换。相似地,可以与视频组块233同时对音频组块238进行代码转换。另外,方法600和方法700可以包括备选或者附加操作。
可以在数字电子和/或光电路、集成电路、特殊地设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现这里描述的系统和技术的各种实现方式。这些各种实现方式可以包括在可编程系统上可执行和/或可解译的一个或者多个计算机程序中的实现方式,该可编程系统包括可以是特殊或者通用的至少一个可编程处理器、至少一个输入设备和至少一个输出设备,该至少一个可编程处理器被耦合用于从存储系统接收数据和指令以及向存储系统传输数据和指令。
这些计算机程序(也被称为程序、软件、软件应用或者代码)包括用于可编程处理器的机器指令,并且可以用高级过程和/或面向对象的编程语言和/或用汇编/机器语言来实施。如这里所用,术语“机器可读介质”和“计算机可读介质”是指用来向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非瞬态计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),该可编程处理器包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用来向可编程处理器提供机器指令和/或数据的任何信号。
可以在数字电子电路中或者在包括在本说明书中公开的结构及其结构等效物的计算机软件、固件或者硬件中或者在它们中的一项或者多项的组合中实施主题内容的实现方式和在本说明书中描述的功能操作。另外,在本说明书中描述的主题内容可以被实施为一个或者多个计算机程序产品,即,在计算机可读介质上编码的用于由数据处理装置执行或者控制数据处理装置的操作的一个或者多个计算机程序指令模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的物质组成或者它们中的一项或者多项的组合。术语“数据处理装置”、“计算设备”和“计算处理器”涵盖用于处理数据的所有装置、设备和机器,例如,包括一个可编程处理器、一个计算机或者多个处理器或者计算机。装置除了硬件之外还可以包括为讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一项或者多项的组合的代码。传播的信号是人为地生成的信号,例如,被生成为对用于向适当接收器装置传输的信息编码的由机器生成的电、光或者电磁信号。
可以用包括编译或者解译语言的任何形式的编程语言编写计算机程序(也被称为应用、程序、软件、软件应用、脚本或者代码),并且可以用任何适当形式部署它,包括被部署为单独程序或者被部署为适合用于在计算环境中使用的模块、部件、子例程或者其它单元。计算机程序未必对应于文件系统中的文件。程序可以被存储于保持其它程序或者数据的文件(例如,存储于标记语言文档中的一个或者多个脚本)的部分中、专用于讨论的程序的单个文件中或者多个协调的文件(例如,存储一个或者多个模块、子程序或者代码部分的文件)中。计算机程序可以被部署为在一个计算机上或者在位于一个地点或者分布于多个地点并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该一个或者多个可编程处理器执行一个或者多个计算机程序以通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路装置(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行,并且装置也可以被实施为该专用逻辑电路装置。
举例而言,适合用于执行计算机程序的处理器包括通用和专用微处理器以及任何种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的基本单元是用于执行动作的处理器以及用于存储指令和数据的一个或者多个存储器设备。一般而言,计算机也将包括用于存储数据的一个或者多个海量存储设备,例如,磁盘、光磁盘或者光盘或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备传送数据或者二者。然而,计算机无需具有这样的设备。另外,可以在另一设备(聊举数例,例如移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器)中嵌入计算机。适合用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言包括:半导体存储器设备(例如,EPROM、EEPROM和闪存设备);磁盘,例如内部硬盘或者可拆卸盘;光磁盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路装置补充或者并入于专用逻辑电路装置中。
为了提供与用户的交互,可以在计算机上实施公开内容的一个或者多个方面,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)、LCD(液晶显示器)监视器或者触屏)以及可选地具有用户可以用来向计算机提供输入的键盘和指点设备(例如,鼠标或者跟踪球)。其它种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以用包括声音、话音或者触觉输入的任何形式接收来自用户的输入。此外,计算机可以通过向由用户使用的设备发送文档和从该设备接收文档(例如,通过响应于从在用户的客户端设备上的web浏览器接收的请求而向web浏览器发送网页)来与用户交互。
可以在计算系统中实施公开内容的一个或者多个方面,该计算系统包括后端部件(例如,作为数据服务器)或者包括中间件部件(例如,应用服务器)或者包括前端部件(例如,具有图形用户界面或者Web浏览器(用户可以通过该图形用户界面或者Web浏览器与在本说明书中描述的主题内容的实现方式交互)的客户端计算机)或者一个或者多个这样的后端、中间件或者前端部件的任何适当组合。系统的部件可以由任何数字数据通信形式或者介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、网际网络(例如因特网)和对等网络(例如自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器一般地相互远离并且通常地通过通信网络交互。借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序产生客户端和服务器的关系。在一些实现方式中,服务器向客户端设备传输数据(例如,HTML页面)(例如,出于向与客户端设备交互的用户显示数据以及从该用户接收用户输入的目的)。可以在服务器从客户端设备接收在客户端设备生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多细节,但是不应将这些解释为限制公开内容的或者可以要求保护的内容的范围而实际上为对公开内容的具体实现方式特有的特征的描述。也可以在单个实现方式中组合提供在本说明书中在分离实现方式的上下文中描述的某些特征。反言之,也可以在多个实现方式中分离地或者在任何适当子组合中实施在单个实现方式的上下文中描述的各种特征。另外,虽然以上可以将特征描述为在某些组合中动作并且甚至起初地这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合中被删除,并且要求保护的组合可以涉及子组合或者子组合的变化。
相似地,尽管在附图中按特定顺序描绘操作,但是这不应被理解为要求按所示特定顺序或者按依次顺序执行这样的操作,或者执行所有所示操作以实现希望的结果。在某些境况中,多任务和并行处理可以是有利的。另外,在以上描述的实施例中的各种系统部件的分离不应理解为在所有实施例中要求这样的分离,而应当理解,描述的程序部件和系统一般地可以被一起集成于单个软件产品中或者被封装成多个软件产品。
已经描述了多个实现方式。然而,将理解,可以做出各种修改而未脱离公开内容的精神实质和范围。因而,其它实现方式在所附权利要求的范围内。例如,在权利要求中记载的动作可以按不同顺序被执行而仍然实现希望的结果。
Claims (29)
1.一种方法(600),包括:
接收根据第一编码参数集合编码的输入媒体流(232);
将所述输入媒体流(232)的接收的部分的视频部分(232’)拆分成输入视频组块(233)同时接收所述输入媒体流(232)的其余部分;
对于所述输入媒体流(232)的所述视频部分(232’)的每个输入视频组块(233):
向一个或者多个从属代码转换器(220)指派所述输入视频组块(233);
将所述输入视频组块(233)拆分成输入视频子组块(234);
向从所述第一编码参数集合到第二编码参数集合对数据进行代码转换的所述一个或者多个从属代码转换器(220)中的每个从属代码转换器分离地馈送每个输入视频子组块(234);其中每个从属代码转换器包括从属解码器(510)和从属编码器(512),所述从属编码器(512)对第一输入视频子组块(234)编码同时所述从属解码器(510)对第二输入视频子组块(234)解码;
将每个输入视频子组块(234)代码转换成对应的输出视频子组块(235);
将所述输出视频子组块(235)组装成与所述输入视频组块(233)对应的输出视频组块(236);以及
将所述输出视频组块(236)组装成输出媒体流(239)。
2.根据权利要求1所述的方法(600),还包括:
将所述输入视频组块(233)的接收的部分拆分成输入视频子组块(234)同时仍然接收所述输入视频组块(233)的其余部分;以及
向所述一个或者多个从属代码转换器(220)馈送至少一个输入视频子组块(234)同时仍然接收所述输入视频组块(233)的所述其余部分。
3.根据权利要求1所述的方法(600),还包括将所述输出视频组块(236)组装成所述输出媒体流(239)同时将所述输入媒体流(232)的所述视频部分(232')的任何其余部分拆分成输入视频组块(233)。
4.根据权利要求3所述的方法(600),还包括:
向多个从属代码转换器(220)指派所述输入视频组块(233);以及
在所述多个从属代码转换器(220)中的一个从属代码转换器(220)完成对所述输入视频组块(233)的代码转换时,命令所述多个从属代码转换器(220)中的其它从属代码转换器(220)停止对所述输入视频组块(233)的所述输入视频子组块(234)的代码转换。
5.根据权利要求4所述的方法(600),还包括在命令所述多个从属 代码转换器(220)中的其它从属代码转换器(220)停止代码转换之后,将所有所述从属代码转换器(220)标识为可用于接收另一输入视频组块(233)。
6.根据权利要求1所述的方法(600),还包括:
将所述输入媒体流(232)解复用成所述输入媒体流(232)的所述视频部分(232')和音频部分(232”);以及
将所述输入媒体流(232)的所述音频部分(232”)拆分成输入音频组块(237),每个输入音频组块(237)分别对应于所述视频部分(232')的所述输入视频组块(233)中的一个输入视频组块。
7.根据权利要求6所述的方法(600),其中输入音频组块(237)和输入视频组块(233)的每个对应的对在所述输入媒体流(232)内的相同时间开始并且具有基本上相同的时间长度。
8.根据权利要求7所述的方法(600),还包括:
对于每个输入音频组块(237):
将所述输入音频组块(237)解码成音频采样;
在检测到在所述输入音频组块(237)内的丢失的音频分组时,在与所述丢失的音频分组对应的位置处向所述音频采样中插入静默音频采样;以及
将所述音频采样编码成输出音频组块(238)。
9.根据权利要求8所述的方法(600),其中将所述输出视频组块(236)组装成所述输出媒体流(239)包括将每个输出音频组块(238)与对应的输出视频组块(236)对准。
10.根据权利要求1所述的方法(600),还包括:
从可用代码转换器队列(220')取回所述一个或者多个从属代码转换器(220);以及
在所述一个或者多个从属代码转换器(220)完成对指派的输入视频组块(233)代码转换时,将所述一个或者多个代码转换器(220)释放回到所述代码转换器(220)队列(220')中。
11.根据权利要求1所述的方法(600),还包括:
对于每个输入视频组块(233):
获得紧接地在所述输入视频组块(233)之前的在前输入视频组块(233)的至少一个在前输入视频子组块(234);以及
在馈送所述输入视频组块(233)的所述输入视频子组块(234)之前向所述一个或者多个从属代码转换器(220)馈送所述至少一个在前输入视频子组块(234)。
12.根据权利要求1所述的方法(600),还包括发布所述输出媒体流(239)。
13.根据权利要求1所述的方法(600),还包括向用户设备(100)传输所述输出媒体流(239)。
14.一种代码转换服务器(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)包括从属解码器(510)和从属编码器(512),所述从属编码器(512)对第一输入视频子组块(234)编码同时所述从属解码器(510)对第二输入视频子组块(234)解码;其中在所述一个或者多个从属代码转换器(220)中的一个从属代码转换器(220)将所述输入视频组块(233)的所有所述输入视频子组块(234)代码转换成输出视频子组块(235)时,所述从属代码转换器(220)将所述输出视频子组块(235)组装成输出视频组块(236);以及
从所述一个从属代码转换器(220)接收与所述输入视频组块(233)对应的所述输出视频组块(236);以及
将所述输出视频组块(236)组装成输出媒体流(239)。
15.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210):
将所述输入视频组块(233)的接收的部分拆分成输入视频子组块(234)同时仍然接收所述输入视频组块(233)的其余部分;以及
向所述一个或者多个从属代码转换器(220)馈送至少一个输入视频子组块(234)同时仍然接收所述输入视频组块(233)的所述其余部分。
16.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210)将所述输出视频组块(236)组装成所述输出媒体流(239)同时将所述输入媒体流(232)的所述视频部分(232')的任何其余部分拆分成输入视频组块(233)。
17.根据权利要求16所述的代码转换服务器(200),其中所述处理设备(210):
向多个从属代码转换器(220)指派所述输入视频组块(233);以及
在所述多个从属代码转换器(220)中的一个从属代码转换器(220)完成对所述输入视频组块(233)代码转换时,命令所述多个从属代码转换器(220)中的其它从属代码转换器(220)停止对所述输入视频组块(233)的所述输入视频子组块(234)代码转换。
18.根据权利要求17所述的代码转换服务器(200),其中在命令所述多个从属 代码转换器(220)中的其它从属代码转换器(220)停止代码转换之后,所述处理设备(210)将所有所述从属代码转换器(220)标识为可用于接收另一输入视频组块(233)。
19.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210):
将所述输入媒体流(232)解复用成所述输入媒体流(232)的所述视频部分(232')和音频部分(232”);以及
将所述输入媒体流(232)的所述音频部分(232”)拆分成输入音频组块(237),每个输入音频组块(237)分别对应于所述视频部分(232')的所述输入视频组块(233)中的一个输入视频组块(233)。
20.根据权利要求19所述的代码转换服务器(200),其中输入音频组块(237)和输入视频组块(233)的每个对应的对在所述输入媒体流(232)内的相同时间开始并且具有基本上相同的时间长度。
21.根据权利要求20所述的代码转换服务器(200),其中对于每个输入音频组块(237),所述处理设备(210):
将所述输入音频组块(237)解码成音频采样;
在检测到在所述输入音频组块(237)内的丢失的音频分组时,在与所述丢失的音频分组对应的位置处向所述音频采样中插入静默音频采样;以及
将所述音频采样编码成输出音频组块(238)。
22.根据权利要求21所述的代码转换服务器(200),其中所述处理设备(210)将所述输出视频组块(236)组装成所述输出媒体流(239)包括将每个输出音频组块(238)与对应的输出视频组块(236)对准。
23.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210):
从可用代码转换器(220)队列(220')取回所述一个或者多个从属代码转换器(220);以及
在所述一个或者多个从属代码转换器(220)完成对指派的输入视频组块(233)代码转换时,将所述一个或者多个代码转换器(220)释放回到所述代码转换器(220)队列(220')中。
24.根据权利要求14所述的代码转换服务器(200),其中对于每个输入视频组块(233),所述处理设备(210):
获得紧接地在所述输入视频组块(233)之前的在前输入视频组块(233)的至少一个在前输入视频子组块(234);以及
在馈送所述输入视频组块(233)的所述输入视频子组块(234)之前向所述一个或者多个代码转换器(220)馈送所述至少一个在前输入视频子组块(234)。
25.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210)发布所述输出媒体流(239)。
26.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210)向用户设备(100)传输所述输出媒体流(239)。
27.根据权利要求14所述的代码转换服务器(200),其中所述处理设备(210)执行所述从属代码转换器(220)。
28.根据权利要求14所述的代码转换服务器(200),其中所述从属代码转换器(220)在与所述处理设备(210)通信的一个或者多个其它处理设备(210)上执行。
29.一种代码转换服务器(200),包括:
非瞬态计算机可读介质(230),所述非瞬态计算机可读介质(230)存储计算机可读指令;
多个从属代码转换器(220),所述多个从属代码转换器(220)从第一编码参数集合到第二编码参数集合对数据进行代码转换;以及
处理设备(210),所述处理设备(210)与所述计算机可读介质(230)通信并且执行所述计算机可读指令,所述计算机可读指令使得所述处理设备(210):
接收根据所述第一编码参数集合编码的输入媒体流(232);
将所述输入媒体流(232)的接收的部分的视频部分(232’)拆分成输入视频组块(233)同时接收所述输入媒体流(232)的其余部分;
对于所述输入媒体流(232)的所述视频部分(232’)的每个输入视频组块(233):
向一个或者多个从属代码转换器(220)指派所述输入视频组块(233);
将所述输入视频组块(233)拆分成输入视频子组块(234);
向所述一个或者多个从属代码转换器(220)中的每个从属代码转换器分离地馈送每个输入视频子组块(234);其中每个从属代码转换器(220)包括从属解码器(510)和从属编码器(512),所述从属编码器(512)对第一输入视频子组块(234)编码同时所述从属解码器(510)对第二输入视频子组块(234)解码;
从所述一个或者多个从属代码转换器(220)分离地接收输出视频子组块(235),每个输出视频子组块(235)分别对应于所述输入视频子组块(234)中的一个输入视频子组块(234);以及将所述输出视频子组块(235)组装成与所述输入视频组块(233)对应的输出视频组块(236);以及
将所述输出视频组块(236)组装成输出媒体流(239)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/086,541 | 2013-11-21 | ||
US14/086,541 US8955027B1 (en) | 2013-11-21 | 2013-11-21 | Transcoding media streams using subchunking |
PCT/US2014/066321 WO2015077289A1 (en) | 2013-11-21 | 2014-11-19 | Transcoding media streams using subchunking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106063278A CN106063278A (zh) | 2016-10-26 |
CN106063278B true CN106063278B (zh) | 2019-04-23 |
Family
ID=52443799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480062710.5A Active CN106063278B (zh) | 2013-11-21 | 2014-11-19 | 使用子组块化来对媒体流进行代码转换 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8955027B1 (zh) |
EP (1) | EP3072301B1 (zh) |
JP (1) | JP6165983B2 (zh) |
KR (2) | KR101754548B1 (zh) |
CN (1) | CN106063278B (zh) |
WO (1) | WO2015077289A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160295256A1 (en) * | 2015-03-31 | 2016-10-06 | Microsoft Technology Licensing, Llc | Digital content streaming from digital tv broadcast |
JP2017143475A (ja) * | 2016-02-12 | 2017-08-17 | 日本放送協会 | 配信管理装置、受信装置、分散処理システム、及びプログラム |
DE102016116555A1 (de) * | 2016-09-05 | 2018-03-08 | Nanocosmos Informationstechnologien Gmbh | Verfahren zur Übertragung von echtzeitbasierten digitalen Videosignalen in Netzwerken |
US10298969B2 (en) * | 2016-11-10 | 2019-05-21 | University Of Louisiana At Lafayette | Architecture and method for high performance on demand video transcoding |
US11166057B2 (en) * | 2016-11-10 | 2021-11-02 | University Of Louisiana At Lafayette | System for high performance on-demand video transcoding |
JP7068789B2 (ja) * | 2017-02-07 | 2022-05-17 | スカイベル テクノロジーズ,インコーポレーテッド | スマート家庭通信システムおよび方法 |
US10853439B2 (en) | 2017-08-08 | 2020-12-01 | Nice Ltd. | Systems and methods for fast play back of recorded data |
CN108122558B (zh) * | 2017-12-22 | 2020-12-29 | 深圳国微技术有限公司 | 一种latm aac音频流的实时转容实现方法及装置 |
US10616616B2 (en) | 2018-01-01 | 2020-04-07 | Nice Ltd | Method and system for streaming a media file during a concurrent transcoding thereof |
KR102464757B1 (ko) | 2018-03-29 | 2022-11-09 | 삼성전자주식회사 | 비디오 데이터를 스트리밍하는 시스템 및 방법 |
CN110213598B (zh) * | 2018-05-31 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 一种视频转码系统、方法及相关产品 |
US10951906B2 (en) * | 2018-08-16 | 2021-03-16 | Bombbomb, Inc. | Method and system for implementing split and parallelized encoding or transcoding of audio and video content |
US11522810B2 (en) * | 2018-10-25 | 2022-12-06 | University Of Louisiana At Lafayette | System for request aggregation in cloud computing services |
US11790408B2 (en) * | 2019-03-01 | 2023-10-17 | Vungle, Inc. | Automated video advertisement creation |
CN116095336A (zh) | 2019-09-23 | 2023-05-09 | 谷歌有限责任公司 | 用于转码视频的方法、设备和计算机可读介质 |
US11403106B2 (en) * | 2019-09-28 | 2022-08-02 | Tencent America LLC | Method and apparatus for stateless parallel processing of tasks and workflows |
CN112188285A (zh) * | 2020-09-28 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 视频转码方法、装置、系统及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724555A (zh) * | 2012-07-09 | 2012-10-10 | 杭州海康威视数字技术股份有限公司 | 视频监控系统中的多路码流同端口处理方法及其系统 |
WO2013015596A2 (ko) * | 2011-07-26 | 2013-01-31 | 엘지전자 주식회사 | 비디오 스트림 전송 장치, 비디오 스트림 수신 장치, 비디오 스트림 전송 방법 및 비디오 스트림 수신 방법 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005176069A (ja) | 2003-12-12 | 2005-06-30 | Ntt Data Corp | 分散並列トランスコーダシステム及び分散並列トランスコード方法 |
JP2007274229A (ja) * | 2006-03-30 | 2007-10-18 | Sony Corp | 情報処理装置および情報処理方法、並びにプログラム |
US20070230586A1 (en) | 2006-03-31 | 2007-10-04 | Masstech Group Inc. | Encoding, decoding and transcoding of audio/video signals using combined parallel and serial processing techniques |
US20080270567A1 (en) | 2006-03-31 | 2008-10-30 | Mobitv, Inc. | Customizing and Distributing Data in Network Environments |
CN1889667B (zh) * | 2006-07-26 | 2011-03-30 | 浙江大学 | 视频信号多处理器并行处理方法 |
TW200948088A (en) | 2008-02-27 | 2009-11-16 | Ncomputing Inc | System and method for virtual 3D graphics acceleration and streaming multiple different video streams |
WO2009149063A1 (en) | 2008-06-02 | 2009-12-10 | Azuki Systems, Inc. | Media mashup system |
US8443411B2 (en) * | 2008-11-26 | 2013-05-14 | At&T Intellectual Property I, Lp | System and method to distribute video-on-demand content |
JP2010287110A (ja) | 2009-06-12 | 2010-12-24 | Nec Personal Products Co Ltd | 情報処理装置、情報処理方法、プログラム及び記録媒体 |
US8566393B2 (en) * | 2009-08-10 | 2013-10-22 | Seawell Networks Inc. | Methods and systems for scalable video chunking |
US20120030723A1 (en) * | 2010-07-27 | 2012-02-02 | Motorola, Inc. | Method and apparatus for streaming video |
JP5412385B2 (ja) * | 2010-08-16 | 2014-02-12 | スキルアップジャパン株式会社 | 分散トランスコーディングシステム並びに方法、及びトランスコーディング装置 |
KR101166085B1 (ko) * | 2010-12-17 | 2012-07-23 | 주식회사 픽스트리 | 동영상 파일의 분산 트랜스코딩 방법 |
US20120281748A1 (en) * | 2011-05-02 | 2012-11-08 | Futurewei Technologies, Inc. | Rate Control for Cloud Transcoding |
EP2566172A1 (en) * | 2011-09-02 | 2013-03-06 | Thomson Licensing | Method and apparatus for adaptive transcoding of multimedia stream |
CN103002274B (zh) | 2011-09-16 | 2016-05-18 | 腾讯科技(深圳)有限公司 | 一种基于离线下载的移动多媒体实时转码播放系统及方法 |
US9042449B2 (en) | 2011-09-29 | 2015-05-26 | Avvasi Inc. | Systems and methods for dynamic transcoding of indexed media file formats |
US20130117418A1 (en) * | 2011-11-06 | 2013-05-09 | Akamai Technologies Inc. | Hybrid platform for content delivery and transcoding |
CN103297452B (zh) * | 2012-02-24 | 2016-08-24 | 北京对角巷科技发展有限公司 | 一种在互联网发布和直播流媒体的方法及系统 |
US9106932B2 (en) * | 2012-02-29 | 2015-08-11 | Broadcom Corporation | Parallel pyramid entropy coding for video and image compression |
US9246741B2 (en) * | 2012-04-11 | 2016-01-26 | Google Inc. | Scalable, live transcoding with support for adaptive streaming and failover |
US8752112B2 (en) * | 2012-04-12 | 2014-06-10 | Google Inc. | Live streaming video processing |
CN102790905B (zh) | 2012-08-03 | 2016-08-17 | 重庆大学 | 基于P2PVoD视频点播系统的H.264/SVC到H.264/AVC的转码方法 |
CN102902803B (zh) | 2012-10-12 | 2016-01-13 | 北京奇虎科技有限公司 | 网页转码系统 |
CN102902802B (zh) | 2012-10-12 | 2016-06-01 | 北京奇虎科技有限公司 | 一种网页转码方法和装置 |
CN102932334B (zh) | 2012-10-12 | 2015-10-07 | 北京奇虎科技有限公司 | 一种网页转码系统 |
-
2013
- 2013-11-21 US US14/086,541 patent/US8955027B1/en not_active Expired - Fee Related
-
2014
- 2014-11-19 KR KR1020167019715A patent/KR101754548B1/ko active IP Right Grant
- 2014-11-19 JP JP2016530229A patent/JP6165983B2/ja active Active
- 2014-11-19 CN CN201480062710.5A patent/CN106063278B/zh active Active
- 2014-11-19 KR KR1020167013128A patent/KR101643529B1/ko active IP Right Grant
- 2014-11-19 EP EP14864842.1A patent/EP3072301B1/en active Active
- 2014-11-19 WO PCT/US2014/066321 patent/WO2015077289A1/en active Application Filing
- 2014-12-02 US US14/557,863 patent/US9179183B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013015596A2 (ko) * | 2011-07-26 | 2013-01-31 | 엘지전자 주식회사 | 비디오 스트림 전송 장치, 비디오 스트림 수신 장치, 비디오 스트림 전송 방법 및 비디오 스트림 수신 방법 |
CN102724555A (zh) * | 2012-07-09 | 2012-10-10 | 杭州海康威视数字技术股份有限公司 | 视频监控系统中的多路码流同端口处理方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20160060165A (ko) | 2016-05-27 |
EP3072301A1 (en) | 2016-09-28 |
CN106063278A (zh) | 2016-10-26 |
US8955027B1 (en) | 2015-02-10 |
EP3072301A4 (en) | 2017-07-19 |
US9179183B2 (en) | 2015-11-03 |
JP6165983B2 (ja) | 2017-07-19 |
JP2016541178A (ja) | 2016-12-28 |
EP3072301B1 (en) | 2021-08-04 |
WO2015077289A1 (en) | 2015-05-28 |
KR101643529B1 (ko) | 2016-08-10 |
KR101754548B1 (ko) | 2017-07-05 |
KR20160088957A (ko) | 2016-07-26 |
US20150143444A1 (en) | 2015-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106063278B (zh) | 使用子组块化来对媒体流进行代码转换 | |
US8566393B2 (en) | Methods and systems for scalable video chunking | |
US9438861B2 (en) | Integrating continuous and sparse streaming data | |
US7984342B2 (en) | System and method for MPEG CRC error based video network fault detection | |
KR102330088B1 (ko) | 매니페스트 속성을 이용하여 미디어 자산을 필터링하는 시스템 | |
CN101316358B (zh) | 向设备传输数字媒体流 | |
US20140351871A1 (en) | Live media processing and streaming service | |
JP2019193312A (ja) | ライブビデオエンコーディングおよびストリーミングにおけるフレーム複写およびフレーム拡張のためのシステムおよび方法 | |
US20220303328A1 (en) | Systems and methods for cloud storage direct streaming | |
CN104365108A (zh) | 实时流送视频处理 | |
CN103583051A (zh) | 用于实时或近实时流传输的播放列表 | |
US20210160589A1 (en) | Systems and methods for production of fragmented video content | |
US10999611B2 (en) | Systems and methods for playout of fragmented video content | |
CN104469370A (zh) | 一种视频转码的方法和装置 | |
CN111182322B (zh) | 一种导播控制方法、装置、电子设备和存储介质 | |
US11843792B2 (en) | Dynamic decoder configuration for live transcoding | |
CN113767639A (zh) | 基于http的动态自适应流传输的方法和装置 | |
CN110708579A (zh) | 可执行视频播放的电子装置 | |
US20180192064A1 (en) | Transcoder for real-time compositing | |
US10708336B2 (en) | System and method for announcing media changes | |
US9026983B2 (en) | Flexible and scalable software system architecture for implementing multimedia applications | |
CN106330667A (zh) | 一种微信明信片生成方法及系统 | |
JP2024515488A (ja) | スタッキング特性を有するプレロール、ミッドロールおよびエンドロールをサポートするためのmpeg dash用の補助mpdに関する方法、装置、媒体 | |
Leufvén | Integration of user generated content with an IPTV middleware | |
YAN | HTTP Live Streaming for zoomable video |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |