用于代码转换后的媒体内容的渐进递送的系统和方法

文档序号:7737885阅读:155来源:国知局
专利名称:用于代码转换后的媒体内容的渐进递送的系统和方法
技术领域
本发明一般地涉及数字媒体内容,更具体地,涉及低等待时间(latency)内容递送。
背景技术
伴随着近年来已经出现的视频、音频和多媒体内容的数量和多样性的急剧增加, 对用于将内容高效地递送给用户的系统和技术的需求也同样增加。能接入因特网的手机、 个人数字助理(PDA)和其它移动媒体设备已经促成了对各种不同目标格式的内容递送的增加的需求。此外,用户生成内容的快速增长已经以许多不同源格式创建了大量用户可用的媒体内容。将内容从内容被创建或被存储的源格式转换为适合于特定媒体播放器的使用的目标格式可能是耗时的。媒体内容的递送中的延时(delay)可能会减损用户对内容的享用或者在其它方面负面地影响用户的体验。并且,在递送资源受到限制的系统中,将媒体内容转换为适于特定用户的格式可能导致影响其它用户的处理瓶颈、网络拥塞和附加延时。 因此,在内容向各个用户的递送期间出现的延时可能导致内容递送系统总体效率的明显降低。

发明内容
根据本发明,与递送数字媒体内容相关联的缺点和问题已经被大大减少或消除。根据本发明一个实施例,一种用于递送媒体内容的方法包括接收来自客户端的针对媒体内容的请求以及识别包含与该请求相关联的媒体内容的第一媒体文件。第一媒体文件具有第一媒体格式。该方法还包括开始与该请求相关联的第二媒体文件的创建以及估计第二媒体文件的一个或多个特征。第二媒体文件具有第二媒体格式。另外,该方法包括基于第二媒体文件的估计出的特征来生成用于第二媒体文件的媒体信息并且在第二媒体的创建已被完成之前将媒体信息发送给客户端。某些实施例的技术优点包括将媒体内容以多种格式递送给各种不同设备的能力。 某些实施例提供在用户请求特定媒体文件的时间与递送系统开始将所请求的内容递送给用户的时间之间的延时最小的低等待时间递送。另外,具体实施例可以在没有引入对用户所利用的软件或硬件的约束的情况下被实现。对于本领域技术人员,其它技术优点从以下附图、描述和权利要求将显而易见。此外,尽管以上已经列举了具体的优点,但是各个实施例可以包括所列举的优点中的全部、一些优点或不包括所列举的优点。


为了更全面地理解本发明以及其其它特征和优点,现在参考结合附图进行的以下描述,在附图中图1图示出根据本发明的具体实施例的用于递送媒体内容的系统;
图2A图示出图1中所示的系统的具体实施例中可以利用的一种媒体文件;图2B图示出系统的具体实施例中可以利用的另一种媒体文件;图3是图示出系统的具体实施例中可以利用的代码转换器的框图;以及图4是详细描述根据本发明某些实施例的用于递送媒体内容的系统的示例操作的流程图。
具体实施例方式图1图示出内容递送系统10的具体实施例,其用于将数字媒体内容从被存储在内容递送系统10中或由其生成的源文件80递送给客户端70。系统10包括原始内容储存器 20、代码转换器30、修改内容储存器22、主机处理器40、内容服务器50、网络60和客户端 70。为了将内容提供给具有各种不同接收和显示要求的客户端70,内容递送系统10可以修改源文件80中被请求的媒体内容来创建目标文件82,目标文件82包含适合于发送给特定客户端70和/或由其显示的格式的相同或类似内容。通过在整个目标文件82已被生成之前开始有关目标文件82向请求客户端70的发送或递送,系统10可以降低与处理用于递送给不同客户端70的内容相关联的等待时间。此外,在具体实施例中,内容递送系统10可以支持这样的递送技术,其中客户端 70利用描述被存储在有关目标文件82中的内容的某些信息(在此一般称为“媒体信息 90”)来配置它们自身以用于被请求媒体内容的接收和回放。例如,在具体实施例中,内容递送系统10可以支持内容的渐进下载并且客户端70可被配置为使用由内容递送系统10 提供的媒体信息90来配置它们自身以用于内容的接收并且被配置为从其识别所请求的转换后的媒体的适当部分。然而,媒体信息90可以描述关联的目标文件82的特性,这些特性在那个目标文件82被完整创建之前可能不能被确定。因此,如以下进一步所述,内容递送系统10可以通过在目标文件82被完整创建之前估计它的某些特征并且基于所估计的特征生成针对目标文件82的媒体信息90,可以减少内容向这样的客户端70的递送中的等待时间。为了本描述以及以下权利要求的目的,“估计”包括但不限于对特征、特性或其它值的任意预测或逼近。“估计”也可以包括任何计算、选择或确定在相关值被以其他方式设置之前被启用的值的其它方式,即便相关值随后有必要基于估计运算的结果被设置也是如此。例如,这里使用的“估计”可以指用于计算将被写入媒体文件中的内容的帧大小的处理, 即便该内容随后被写入基于该估计被确定大小的帧中。因此,在具体实施例中,估计可以预先确定值,而不是仅仅逼近或预测该值。在图1中所示的示例实施例中,原始内容储存器20和修改内容储存器22每一个表示或包括任意合适类型的存储设备。内容储存器20和22可以每一个包括例如适于存储数据的易失性或非易失性、本地或远程设备,诸如随机存取储存器(RAM)设备,只读储存器 (ROM)设备、磁存储设备、光存储设备或任意其它合适的数据存储设备。另外,尽管内容储存器20和22 二者都被示出为系统10中的单个元件,但是内容储存器20和22可以每一个表示多个设备并且可以分布在系统10的多个位置上。例如,在具体实施例中,内容储存器20 和22可以表示网络附接存储装置(NAQ或其部分。原始内容储存器20存储用于递送给客户端70的源文件80。如上面注意到的,源文件80可以包括任意合适类型的媒体内容。源文件80的具体示例包括视频/多媒体内容文件,诸如运动图片专家组(MPEG)、Windows媒体视频(WMV)、音频视频交织(AVI)和 QuickTime文件;音频内容文件,诸如波形音频(WAV)、MPEG_1音频层3 (MP!3)和/或Windows 媒体音频(WMA)文件;和/或任意合适类型或格式的内容文件。原始内容储存器20中的源文件80可以全都以单一的存储格式被存储或者可以以适合于向不同客户端70的发送或由不同客户端70进行的显示的各种不同的格式被存储。尽管在图1中被示作系统10的部分,但是原始内容储存器20可以表示系统10外部的组件,诸如遍布因特网的存储组件。因此,在具体实施例中,代码转换器30可以能够取回、接收、以其他方式存取和/或处理由在因特网中可获得的许多内容源提供的源文件80,以用于递送给客户端70。修改内容储存器22存储目标文件82,目标文件82表示来自已经被代码转换器30 生成、代码转换或以其他方式修改的源文件80的内容。在具体实施例中,修改内容储存器 22表示代码转换器30本地的或外部的存储装置,诸如用作代码转换器30之一的web服务器的内部存储器。在某些实施例中,代码转换器30可以将包含来自特定源文件80的修改内容的目标文件82存储在修改内容储存器22中,同时代码转换器30继续修改内容来创建有关的目标文件82。目标文件82可以包括任意合适类型或格式的媒体内容,包括但不限于以上针对源文件80列出的那些。另外,尽管在这里被称为“文件”,但是在某些实施例中,存储在修改内容储存器22中的目标文件82可以表示在给定时间点的、根据与有关目标文件 82关联的类型或格式并不完整的部分文件或其包含的内容。修改内容储存器22也可以将对源文件进行代码转换的处理30期间由代码转换器30生成的媒体信息90作为所创建的目标文件82的部分和/或作为单独的数据元素进行存储。如以下进一步描述的,媒体信息 90可被客户端70用来辅助目标文件82的下载。代码转换器30从原始内容储存器20取回、接收或以其他方式存取所请求的内容并且以适合于向请求客户端70发送和由请求客户端70进行的显示的方式来修改所请求的内容。代码转换器30随后将修改后的内容写入目标文件82。根据请求客户端70的能力以及所请求的源文件80的特征,代码转换器30可以以适于使得内容适合于向请求客户端70 的发送和/或由请求客户端70进行的回放的任意方式,对所请求的源文件80的内容或特征进行代码转换、速率转换、分辨率调节或其它方式的修改。作为修改内容的一部分,代码转换器30可以将所请求的源文件80的内容从第一格式修改为第二格式,其中第一格式诸如是存储有关源文件80所使用的原始格式,第二格式诸如是适合于向请求客户端70的发送和由请求客户端70进行的显示的目标格式。为了本描述和以下权利要求的目的,内容的 “格式”是指有关内容的与向特定类型的客户端70发送该内容或由客户端70显示该内容相关联的编码、比特率、分辨率、帧率、配置和/或任意其它方面、特征或特性。另外,如以下进一步描述的,代码转换器30也可以生成媒体信息90,媒体信息90 允许客户端70,在代码转换器30已经完成了有关目标文件82的创建和/或对应源文件80 的代码转换之前,开始下载和回放来自目标文件82的内容。如以下进一步描述的,媒体信息90可以包括描述所请求的媒体内容或所请求的媒体内容被写入其中的目标文件82的任意合适形式的数据、代码或信息。以下将关于图3来更详细地描述代码转换器30的具体示例实施例的内容。内容服务器50从客户端70接收对来自源文件80的内容进行取回、下载、成流(stream)或以其他方式将其发送给客户端70的请求,并且响应于这些请求,将所请求的内容递送给客户端70。在具体实施例中,内容服务器50将负责确定包括所请求的媒体内容的源文件80将是否需要被进行代码转换、速率转换或以其它方式被修改,以用于向请求客户端60的发送和/或由请求客户端60进行的显示。如果这样,内容服务器50可以将接收到的请求转发给主机处理器40或直接转发给代码转换器30来开始对所请求的源文件80 的转换。内容服务器50也可以对用户进行认证、执行内容搜索请求或以其它方式来辅助用户之间的交互以及由系统10提供的内容提供服务。主机处理器40从内容服务器50接收针对媒体内容的请求并且管理代码转换器30 在准备用于递送给客户端70的被请求内容中的操作。在具体实施例中,主机处理器40负责生成工作流并将其传送给代码转换器30,该工作流识别被客户端70请求的特定源文件 80和用于该源文件的合适的目标格式。另外,在具体实施例中,内容递送系统10可以包括能够并行地应对来自若干不同客户端70的内容请求的多个代码转换器30。在这样的实施例中,主机处理器40也可以负责选择合适的代码转换器30来应对每个请求并且可以执行不同代码转换器30之间的负载平衡或其他方式的代码转换任务分发。尽管代码转换器30、主机处理器40和内容服务器50在图1中被各自示作单个组件,但是在具体实施例中,每一个可以表示由若干分离的物理组件所提供的功能性。另外, 代码转换器30、主机处理器40和内容服务器50中的任意两个或更多个可以部分或全部地表示同一组件。例如,在具体实施例中,主机处理器40可以与代码转换器30—样是相同物理组件的一部分。一般,代码转换器30、主机处理器40和内容服务器50可以各自表示适于提供所描述的功能性的软件和/或硬件的任意合适的组合。在具体实施例中,代码转换器30、主机处理器40和内容服务器50表示被配置为接收来自客户端70的超文本传输协议 (HTTP)请求并对其响应并相互响应的web服务器。网络60表示支持有线和/或无线通信链路上的电路交换的、基于分组的和/或任意合适类型的通信的任意形式的通信网络。尽管在图1中被示作单个元件,但是通信网络可以表示一个或多个分离的网络,包括分离的并且服务不同群组的客户端70的各种不同网络的全部或部分。网络60可以包括任意合适形式的或布置的路由器、集线器、开关、网关、呼叫控制器和/或任意其它合适的组件。一般,网络60可以包括公用或专用通信设备的任意组合,这些设备诸如是公用交换电话网络(PSTN)、诸如因特网之类的全球计算机网络、局域网、广域网的元件或其它合适的通信设备。另外,尽管图1图示出元素被直接地连接到网络60的具体配置,但是在具体实施例中,网络60可以直接地或间接地连接到系统10的任意合适的元件和/或与之交互。例如,尽管图1示出代码转换器30被直接连接到原始内容储存器20和内容服务器50,但是可替换地,代码转换器30可以通过网络60连接到这些元件的任一者。因此,系统10的组件可以以任意合适的方式布置或配置来通过网络60和/或通过有关元件之间的直接连接进行通信。客户端70向用户显示、传送或以其它方式回放从内容储存器20取回的内容。客户端70可以表示适合于播放系统10中所利用的数字媒体内容的任意类型的设备。客户端 70的示例可以包括但不限于计算机、支持视频的电话、媒体播放器(诸如,例如iPod)、电视、PDA、手机、便携式通信设备和其它电子设备。更一般地,客户端70可以包括适于提供所述功能性的硬件和/或软件的任意合适的组合。客户端70可以通过专用连接(有线的或无线的)耦合到网络60,或者可以仅在需要时连接到网络60来访问媒体内容。尽管图1为了示例的目的图示出具体数目和类型的客户端70,但是系统10的可替换实施例可以包括任意合适数目和类型的客户端70。在具体实施例中,客户端70可以能够接收和/或播放与各种文件格式、文件类型、 编解码、比特率和/或分辨率相关联的和/或具有其它合适特征的媒体。例如,在所图示的实施例中,客户端70a可以包括计算机,其能够播放与用客户端70b表示的支持视频的手机或用客户端70c表示的便携式通信设备不同的媒体文件格式。因此,如以下进一步所述,系统10可以修改被请求的内容来匹配具体请求客户端70的能力。在操作中,内容服务器50接收来自客户端70的请求并且开始取回包含客户端70 所请求的媒体内容的源文件80。代码转换器30随后可以对取回的源文件80进行代码转换或其它方式的修改,来提供适于向请求客户端70的发送和/或由请求客户端70进行的显示的内容。代码转换器30将修改后的内容写入对应的目标文件82,以用于发送给请求客户端70。另外,在请求客户端70可以开始播放有关目标文件82之前,针对一些媒体内容格式,请求客户端70可能需要有关目标文件82中的媒体内容的某些信息。因此,代码转换器 30也可以生成描述对应目标文件82中的媒体的某些媒体信息90。为了最小化用户在客户端70可以开始回放来自目标文件82的内容之前的用户必须等候的时间量,在有关目标文件82的创建已被完成之前,代码转换器30可以生成媒体信息90并将媒体信息90发送给请求客户端70。请求客户端70随后可以开始回放修改后的内容的一部分,同时代码转换器 30继续将修改后的内容写入目标文件82。图1中图示出了该处理的一个示例。如图1中所示,客户端70 (这里,客户端70a) 通过向内容服务器50发送内容请求84开始递送处理。内容请求84可以识别具体的源文件80或可以描述所请求的媒体内容的特征(例如使用关键字)。内容请求84可以表示由发送客户端70请求内容的递送的任意合适的消息、分组或其它信息集合。例如,在具体实施例中,内容请求84表示识别由原始内容储存器20存储的特定源文件80的超文本传输协议(HTTP)请求。响应于接收到内容请求84,内容服务器50确定用于所请求的内容的适当格式(这里称为“目标格式”),以允许、辅助或优化向客户端70a的发送和由客户端70a进行的回放。 内容服务器50可以基于任意合适的信息、考虑或情况来确定目标格式。作为一个示例,内容请求84可以指示用于所请求的内容的适当格式。因此,在具体实施例中,内容服务器50 可以接收HTTP请求,该HTTP请求指定用于所请求的内容的编解码、比特率和/或其它参数。因此,内容服务器50可以能够基于HTTP请求中所包含的信息来确定适合于所请求的内容的输出格式和特征。作为另一示例,内容服务器50可以识别客户端70a和/或客户端70a的有关特征并且基于此信息来确定用于所请求的内容的目标格式。例如,内容服务器50可以识别客户端是否是计算机(诸如客户端70a)、蜂窝电话(诸如客户端70b)或个人数字助理(诸如客户端70c)和/或其它类型的客户端设备。作为响应,内容服务器50可以基于其类型来确定适合于特定客户端70a到70c的格式特征。作为又一示例,内容服务器50可以检测客户端70a正经其进行通信的特定网络或网络60的部分的特征,来确定用来向客户端70a提供所请求的内容的适当目标格式。因此, 在具体实施例中,内容服务器50可以基于内容请求84时在某种类型的网络上被接收的事实,来确定用来将所请求的内容发送给客户端70a的适当编解码或比特率。然而,一般,内容服务器50可以以任意适合的方式并且基于来自任意合适组件的输入来确定用于由客户端70a请求的内容的适当格式和特征。内容服务器50随后将内容请求84转发给代码转换器30。可替换地,系统10的具体实施例包括负责管理一个或多个代码转换器30的操作的主机处理器40,并且内容服务器50可以向主机处理器40发送内容请求。主机处理器40生成指示将由代码转换器30 完成的修改的工作流86并且将工作流86发送给代码转换器30。另外,在具体实施例中, 系统10可以包括多个代码转换器30并且主机处理器40可以负责负载平衡和向代码转换器30指派代码转换责任。响应于接收到来自内容服务器50的内容请求84或来自主机处理器40的工作流86,代码转换器30取回所请求的源文件80,在此情况中为源文件80a。代码转换器30随后开始创建适合于向客户端70a发送和由客户端70a进行的回放的目标文件82 (在图1中被示作目标文件82a)。作为该处理的一部分,代码转换器30生成用于目标文件8 的媒体信息90。如以上注意到的,媒体信息90描述用特定媒体文件存储的媒体内容并且客户端70可以使用与接收的媒体文件相关联的媒体信息90来针对相关联的媒体文件配置自身,请求相关联的媒体文件的内容和/或以其他方式辅助所请求的媒体内容的接收和回放。媒体信息90的示例可以包括特定媒体文件的文件大小、帧率或持续时间和/或媒体文件中的媒体内容的各个部分的帧大小、媒体类型或时间戳。如以上注意到的,系统10可以存储和递送具有各种不同格式和文件结构的源文件80。例如,图2A图示出特定文件类型(在此一般称为“类型A”),其中媒体信息90和内容一起散布在图示出的文件中。图2B图示出另一文件类型(在此一般称为“类型B”),其中媒体信息90和内容在图示的文件中被分段。当对某种类型的源文件80进行代码转换时,代码转换器30可以能够直接从这些源文件80提取媒体信息90并且基于所提取的媒体信息90来生成用于对应的目标文件82 的媒体信息。代码转换器30可以在将任何修改的内容写入相应目标文件82之前,将用于这些目标文件82的媒体信息90写入这些目标文件82中。随后,当代码转换器30开始对源文件80进行代码转换时,内容服务器50可以将用于这样的目标文件82的媒体信息90 发送给请求客户端70。类型B源文件80例如让全部媒体信息90位于文件的开头。因此, 代码转换器30可以能够在代码转换处理的开始时访问类型B源文件80中的全部媒体信息 90。因此,当对类型B源文件80进行代码转换时,只要代码转换器30开始代码转换并且使得这样的媒体信息90可被请求客户端70获得,代码转换器30就可以从有关源文件80的开头提取媒体信息90。请求客户端70随后可以使用媒体信息90来让请求客户端70处的媒体播放器准备好用于回放并且开始从正被代码转换器30进行代码转换的目标文件8 请求内容块。可替换地,当对其它类型的源文件80进行代码转换时,代码转换器30可能不能够在代码转换的开头访问所请求的源文件80的所有媒体信息90。类型A源文件80例如让媒体信息90和内容散布在文件中。因此,当代码转换器30最初开始对有关源文件80进行代码转换时不能从类型A源文件80提取媒体信息90并且因而不能访问被代码转换器30以其他方式使用来生成用于对应目标文件82的媒体信息的那些数据。然而,在请求客户端70 可以开始下载有关目标文件82和/或播放来自有关目标文件82的内容之前,请求客户端 70可能期望和/或需要媒体信息90。因此,对于某些类型的源文件80,代码转换器30可以估计被请求的源文件80的某些特性来生成用于对应目标文件82的媒体信息90,媒体信息 90将允许请求客户端70开始接收和播放来自有关目标文件82的内容。在图1所示的示例中,假定源文件80a是类型A媒体文件。因此,当代码转换器30 开始对源文件80a进行代码转换时,代码转换器30不能访问源文件80a中的所有媒体信息 90。因此,代码转换器30可以使用工作流86中所提供的数据、在源文件80a的开头处可获得的信息、由代码转换器30估计出的参数和/或可用于代码转换器30的任何其它合适的信息,来生成用于目标文件82a的媒体信息90。例如,在具体实施例中,为目标文件8 创建的媒体信息90的一部分依赖于用于所请求的内容的目标格式和速率。因此,代码转换器30可以将此数据从内容请求84或工作流86复制到用于目标文件82a的媒体信息90。在具体实施例中,代码转换器30可以将诸如文件所利用的帧率、持续时间以及音频和视频编解码的类型直接从内容请求84或工作流86复制到用于目标文件82a的媒体信息90。另外,代码转换器30可以使用工作流86 或内容请求84中的信息来确定用于目标文件82a的媒体信息90的其它字段。例如,代码转换器30可以通过将工作流86中可用获得的帧率和持续时间相乘来计算源文件80a中的总帧数并且随后将该总帧数写入目标文件82a中的媒体信息90。另外,代码转换器30可以估计在代码转换开始时不可获得的参数。例如,在具体实施例中,代码转换器30利用先验估计技术来(1)基于有关编码格式和编码参数,诸如所请求的源文件80和/或将由代码转换器30生成的目标文件82中的比特率、帧率、采样率、 I-帧间隔和总媒体帧数,来估计媒体信息90中的字段,诸如音频和视频帧的时间戳以及这样的帧的大小;( 估计目标文件82a中的音频和视频帧的交织格式。在具体实施例中,代码转换器30可以通过相对于编码器参数设置特征对每帧的比特进行建模来开始该处理。对于给定的视频或音频编码以及其对应的编码参数设置,代码转换器30的输出可被表征为针对给定编码器参数设置确定每帧的比特的最小值、最大值和平均水平。基于此表征,代码转换器30可以将依据每帧的比特的帧大小建模为编码比特率、帧率/采样率、帧的时间位置、分辨率、编码格式和/或任意其它合适的特征或因素的函数。目标文件82的帧大小随后可以基于该模型来估计。对于视频媒体,代码转换器30 可以基于编码器参数设置来确定比特流中I帧出现的频率并且可以基于此频率来估计I帧的帧大小。此外,代码转换器30可以使用以下公式基于帧率来计算两个连续帧之间的时间差之差(两个连续帧之间的时间差之差)=1/(帧率)。使用该公式,代码转换器30随后可以如下为每帧确定时间戳当前帧的时间戳=紧前帧的时间戳+连续帧之间的时间戳之差。代码转换器30也可以为目标文件82中不同类型的媒体数据确定交织次序。例如,针对给定数量的音频内容,代码转换器30可以确定预定数量的视频内容将被写入目标文件82。代码转换器30可以基于目标格式和/或其它合适的考虑来确定该次序。如以下进一步讨论的,代码转换器30可以之后在将内容写入目标文件82时使用该交织次序。
基于每帧的时间戳、帧大小、对媒体中的音频和视频帧的交织格式的估计,代码转换器30随后可以确定每个单独的音频和视频帧在在将由代码转换器30生成的目标文件82 中的估计位置。代码转换器可以生成媒体信息90,其包含每个媒体帧在目标文件82中的估计位置以及客户端70a需要或期望的其它合适的数据。代码转换器30随后可以将媒体信息90发送给内容服务器50以用于随后发送给客户端70a。作为一个示例,代码转换器30可被配置为将修改后的视频和音频内容以包含固定时间量的相应类型的内容的交替块写入目标文件82。因此,代码转换器30可以确定与所要写入的每个视频或音频数据块相关联的时间量X。尽管该数量可以基于任意合适的考虑来确定,但是在具体实施例中,代码转换器30可以被配置为将音频和视频数据以包含预定数量的内容(例如100ms)的块写入所有目标文件82,而不论所涉及的格式如何。基于与每个块相关联的时间量和任意其它合适的因素,代码转换器30随后可以确定要分别写入有关目标文件82中的每个视频和音频内容块的视频帧数和音频帧数。例如,在具体实施例中,代码转换器30基于与目标格式相关联的视频帧率(Rl),根据等式m =XxRl来确定要写入每个视频内容块的视频帧数(m),并且基于与目标格式相关联的每帧样本值(S)和由代码转换器30或客户端70a(例如基于期望的音频质量)设置的采样率(R2),根据等式 N2 = X x(R2/S)来确定要写入每个音频内容块的音频帧数(拟)。代码转换器30随后可以使用每个视频数据块中的适配帧数W和每个音频数据块中的音频帧数N2来估计将针对当前请求写入的目标文件82的各种特征,诸如每个音频和视频内容块的位置、每个块的时间戳或写入这些块中的帧的帧大小。这些特征可被包括在由代码转换器30生成的媒体信息 90中并且被发送给客户端70a。另外,如以下进一步所述,代码转换器30可以以某种方式按照或基于这些估计特征来将输入写入有关目标文件82。在具有较大的等待时间容限的具体实施例中,代码转换器30可以对将被写入目标文件8 的音频和/或视频内容的几个帧进行代码转换并且缓冲这些帧以用于生成媒体信息90之前的分析。代码转换器30随后可以使用来自实际编码媒体帧的数据来提炼基于上述技术估计的参数。因此,作为结果,代码转换器可以能够实现改进的帧大小估计。代码转换器30随后可以利用改进的帧大小估计来针对还未被进行代码转换的帧生成媒体信息 90。代码转换器30随后可以将用于代码转换后的帧的数据连同用于还未被代码转换的帧的估计数据一起作为媒体信息90发送给客户端70a。在估计由客户端70a使用的媒体信息90之后,代码转换器30随后可以开始将来自源文件80a的内容从源格式修改为目标格式。如以上注意到的,代码转换器30可以以任何合适的方式来对所请求的源文件80的内容或特征进行代码转换、速率转换、分辨率调节或其它方式的修改,来使得内容适合于向请求客户端70的发送和/或由请求客户端70进行的回放。代码转换器30随后可以将修改后的来自源文件80a的内容写入修改内容储存器22中的目标文件82 (这里为目标文件82a)。在具体实施例中,因为由代码转换器30生成的媒体信息90将被客户端70a用来请求来自目标文件82a的内容,所以代码转换器30可以使用媒体信息90来确定内容应当如何写入目标文件82a。作为一个示例,在具体实施例中,代码转换器30将视频和音频内容以包括固定数量的视频帧(Ni)和音频帧(拟)的单独的块写入目标文件82a。m和N2可以由代码转换器30在生成媒体信息90之前计算出,如上所述。在这样的实施例中,代码转换器30可以基于m和N2为每个媒体内容块计算估计的块位置和时间戳,并且可以将估计的块位置和时间戳包括在被发送给客户端70a的媒体信息90中。代码转换器30随后可以根据传送给客户端70a的块位置和时间戳来将视频和音频内容写入目标文件82a。作为另一示例,在具体实施例中,代码转换器30将代码转换后的视频帧的帧大小与被发送给客户端70a的媒体信息90中所包括的估计视频帧大小相比较。如果代码转换器30确定当前针对目标文件8 生成的代码转换后的视频帧比媒体信息90中所包括的视频帧大小大,则代码转换器30可以丢弃所生成的视频帧并且用合适形式的哑元帧(dummy frame)(例如将被客户端70a读作未编码帧的全部为0的帧)替换目标文件82a中的丢弃帧,或以其他方式修改将被写入目标文件82a的该帧,来确保有关帧不会超过媒体信息90 中所识别的视频帧大小。由于这样的帧最有可能出现在目标文件8 中不那么受缺失帧影响的时间位置,所以一起丢弃这些帧不会导致明显劣化的视频质量。另一方面,如果所生成的视频帧小于视频帧大小,则代码转换器30可以用0填充该帧或以其他方式修改被写入目标文件8 的帧,来确保有关帧不小于预期的视频帧大小。类似地,代码转换器30可以使用媒体信息90中的交织信息来确定代码转换器30用来将音频和视频内容写入目标文件8 的适当交织样式。作为又一示例,在具体实施例中,代码转换器30可以生成用于目标文件82a的音频帧,每个音频帧包括标记音频帧的结束的帧结束标记(例如,在高级音频编码(AAC)的情况中为ID_END)。在这样的实施例中,代码转换器30可以估计音频帧的帧大小,作为生成媒体信息90的一部分。随后,当生成用于目标文件82a的音频帧时,代码转换器30可以将所生成的每个音频帧与估计的帧大小相比较。如果特定音频帧小于估计的音频帧大小,则代码转换器30可以在有关帧中的内容数据的最后一个比特与帧结束标记之间插入足够数目的哑元比特(例如,在高级音频编码的情况中为filljlements)或0值比特,来确保那个音频帧的大小与估计的音频帧大小匹配。在客户端70a接收到来自代码转换器30的媒体信息90之后,客户端70a可以基于接收到的媒体信息90来请求来自目标文件82a的内容。例如,在具体实施例中,客户端 70a可以基于接收到的媒体信息90,通过发送具有识别由客户端70a确定的目标文件8 的一部分(诸如音频和视频帧的特定集合)的范围字段的HTTP “GET”请求,来开始目标文件82a的渐进下载。内容服务器50随后可以将目标文件82a的被请求的部分发送给客户端70a,并且客户端70a可以开始目标文件82a的回放。在具体实施例中,客户端70a可以能够在代码转换器30已经完成将全部代码转换后的媒体写入目标文件8 之前开始回放来自目标文件82a的内容。代码转换器30可以继续对来自源文件80a的内容进行代码转换并且将代码转换后的内容写入目标文件82a。另外,客户端70a可以继续请求来自目标文件8 的内容直到全部内容已经被客户端70a从目标文件8 取回并播放为止。内容服务器50随后可以将文件结束指示发送给客户端70a,并且客户端70a可以结束所请求的内容的回放。在某些情况下,客户端70a可以在代码转换器30已经将部分数据写入目标文件 8 之前,请求目标文件82a中的那部分数据。系统10的具体实施例可以通过利用数据流计量技术来解决这样的情况。数据流计量技术控制客户端70a从目标文件8 接收数据的速率来维持流畅的回放。系统10可以以若干不同方式实现数据流计量。
例如,如果作为渐进处理的一部分,内容服务器50正将内容发送给客户端70a,代码转换器30可以在渐进下载开始之前以比特计算总文件大小( 或者基于诸如视频比特率、音频比特率、媒体信息大小和持续时间之类的目标格式媒体参数来估计S。代码转换器 30可以通过将目标文件82中的报头中的媒体信息90的估计大小和所有媒体帧的媒体信息 90的估计大小相加来估计类型A文件的S。对于类型B文件,代码转换器30可以使用以下等式来计算S S = (V χ Τ) + (Α χ T) +M其中V是视频比特率,A是音频比特率,T是源文件80a的持续时间并且M是目标文件82中的媒体信息90的和,包括与作为整体的文件相关联的媒体信息的大小和与各个音频或视频内容帧相关联的媒体信息。代码转换器30将文大小S提供给内容服务器50,使得内容服务器50可以利用该信息来进行数据流计量。使用总文件大小S和持续时间T,代码转换器30或内容服务器50随后可以根据等 SR = S^T来确定将允许流畅回放的最小数据率R。在具体实施例中,内容服务器50随后可以使用最小数据率R来确定用来向客户端70a发送内容的适当速率。作为一个示例,代码转换器30可以计算速率(R+α)以用于将内容发送给客户端70a,其中α是为了补偿来自客户端70a的数据率抖动而增加的安全裕度(safety margin)。在具体实施例中,内容服务器50可以以α = 0. Ix R的初始设置来开始从目标文件82向客户端70a的内容发送,并且可以基于代码转换器30的代码转换速度和客户端70a 请求数据的数据速度来在发送期间适应性地调节α的值。客户端70a随后可以基于与客户端70a相关联的缓冲长度和媒体回放速度,以某种间隔周期性地发送对来自目标文件82 的数据块的请求,并且内容服务器50可以基于计算出的速率来确定用于向客户端70a发送的适当内容数量。在这样的实施例中,如果来自客户端70a的两个连续的请求在时刻t = tl和t = t2到达内容服务器,则内容服务器50计算在时刻t = t2将发送给客户端70a的总数据大小,即(R+a)x(t2_tl)。因此,内容服务器50在t = t2,将(R+a )x(t2_tl)比特的数据发送给客户端70a。可替换地,如果客户端70a仅在发送的开头发送仅一个请求,该请求针对具有与目标文件82的大小相等的大小的单个数据块,则内容服务器50可以以平均(N+(R+a))的间隔周期性地发送大小N比特的分组,其中N通常小于或等于最大允许传输控制协议(TCP)分组大小和最大允许HTTP分组大小。除了数据流计量以外,系统10的具体实施例还可以利用某些技术来应对代码转换的动态速率。即便代码转换器30平均而言正在实时进行代码转换,其即时性能也逐帧不同(例如对于I帧较快而对于P帧较慢)或逐场景不同(例如,在高运动场景期间较慢并且在低运动场景中较快)。为了应付代码转换速度中的该变化,系统10的具体实施例可以实现等候时间(wait-time)控制算法。在这样的实施例中,如果目标文件82a的被请求部分当被客户端70a请求时不可被内容服务器50用来发送给客户端70a,则内容服务器50可以在响应之前,等候预定的或动态设置的时间量,或“等候时间”。如果被请求的来自目标文件82a的数据在等候时间内被代码转换器30写入目标文件82a,则内容服务器50将数据发送给客户端70a并且继续之后的正常操作。否则,如果所请求的数据在等候时间内未被写入目标文件82a,则在等候时间结束时,内容服务器50可以向客户端70a发送文件结束 (EOF),从而结束发送会话,或采取其他适当的补救措施。
在具体实施例中,等候时间可以初始基于视频帧率被设置并且在会话期间基于请求速率、数据可用性、代码转换器30的性能和/或其它合适的因素被适应性地调节。例如, 在具体实施例中,内容服务器50可以计算等候时间值,其初始等于视频帧率的乘法逆的一个数量级或W = 10x(l-视频帧率)。系统10随后可以利用计算出的等候时间W作为内容服务器50将等候所请求的信息的时间量的上界。在这样的实施例中,内容服务器50可别设计为每0.01秒轮询(poll)该文件,但是不长于W秒。因此,只要所请求的来自目标文件 82的数据是可获得的,则内容服务器50将立即取回数据并将其发送给客户端70。如果在 W秒之后,所请求的内容不可在目标文件82a中获得,则内容服务器可以发送EOF或采取适当步骤。为了辅助数据流计量、等候时间值的使用以及内容服务器50和客户端70a之间的交互的其他方面,代码转换器30可以在代码转换的开头或在目标文件82的创建被完成前的其他适当时间点,将媒体信息90和各种其他数据传送给内容服务器50。类似地,代码转换器30可以将具体客户端侧协议需要的或对于辅助向具有某些能力限制的客户端的递送必要的其他值存储在可由内容服务器50访问的文件中。因此,在具体实施例中,代码转换器30可以将三个参数——估计文件大小(S)、数据率(R)和初始等候时间(W)——写入可由内容服务器50访问的文件中。内容服务器50可以随后基于这些参数将内容发送给客户端70a或以其它方式与客户端70交互。因此,通过估计用来生成媒体信息90的文件特征而不是等候直到有关源文件80 的代码转换被完成为止,系统10的具体实施例可以准许客户端70在这样的文件已经被完整进行代码转换之前开始所请求的源文件80的回放。此外,通过以用发送给客户端70a的媒体信息90确定的方式写入目标文件82,代码转换器可以确保客户端70能够恰当地请求和播放来自目标文件82的内容,尽管事实是客户端70a用来配置自身的媒体信息90以及请求内容是基于目标文件82a的估计特征而生成的。另外,通过利用数据计量和等候时间技术来管理向客户端70的内容发送,系统10的具体实施例可以减少或消除所请求的内容的回放中的不必要的或过量的中断。因此,系统10可以以最少的回放期间的中断来提供各种不同格式的媒体内容的回放。系统10的具体实施例在将所请求的内容从Flash视频 (FLV)源格式代码转换成运动图片专家组-4目标格式(通常称为MP4文件格式)的同时进行渐进下载中特别有效。因此,系统10的具体实施例可以提供许多操作益处。然而,具体实施例可以不提供这些益处、这些益处中的一些或全部。图2A图示出具有系统10的具体实施例可以支持的文件结构的示例媒体文件202。 如上所述,媒体文件202是其中描述媒体文件202中的媒体内容的信息散布在媒体文件202 中的文件类型(在此称为“类型A”)。系统10的某些实施例可以支持的类型A媒体文件的示例包括但不限于FLV、音频视频交织(AVI)和MPEG-I文件。如图2A中所示,用于媒体文件202的媒体信息90包括报头信息204和帧信息206。尽管图2A图示出系统10的具体实施例可以支持的类型A文件的示例,但是系统10的可替换实施例可以能够支持具有多个媒体信息集合和/或位于除了文件开头以外的其它地方的媒体信息的其它类型的文件。图2B图示出具有系统10的具体实施例可以支持的可替换文件结构的示例媒体文件212。如上所述,媒体文件212是其中描述媒体文件212中的媒体内容的信息在媒体文件 212的开头处被分段的文件类型(在此称为“类型B”)。系统10的某些实施例可以支持的类型B媒体文件的示例包括但不限于MP4、3GP和Quicktime文件。如图2B中所示,媒体文件212仅在媒体文件212的开头处包括单个媒体信息块214。尽管图2B图示出系统10的具体实施例可以支持的类型B文件的示例,但是系统10的可替换实施例可以能够支持包括位于文件的开头处的单个媒体信息块90。图3是更详细地图示出代码转换器30的具体实施例的内容和操作的框图。一般, 如以上关于图1所述,代码转换器30取回或以其它方式接收用于递送给客户端70的内容, 以恰当的方式修改取回的内容来创建目标文件82,并且生成对应的媒体信息90来辅助修改后的内容向请求客户端70的发送。如图3中所示,代码转换器30可以包括处理器310、 存储器320、主机接口模块330、网络接口模块340、存储接口模块350和一个或多个代码转换模块360。处理器310可以表示或包括任意形式的处理组件,包括通用计算机、专用微处理器或能够处理电子信息的其他处理设备。处理器310的示例包括数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和任意其它适合的专用或通用处理器。尽管图3图示出包括单个处理器310的代码转换器30的具体实施例,但是代码转换器30 —般可以包括任意合适数目的处理器310。存储器320存储在操作期间由代码转换器30利用的处理器指令、编解码和/或值和参数。存储器320可以包括适合于存储数据的易失性或非易失性的组件的任意集合和布置,这些组件诸如是例如随机存取存储器(RAM)设备、只读存储器(ROM)设备、磁存储设备、 光存储设备或任意合适的数据存储设备。在具体实施例中,存储器320可以部分地表示计算机指令在其上被编码的计算机可读介质。在这样的实施例中,所描述的代码转换器30的功能性的一些或全部可以由执行被编码在所述介质上的指令的处理器310来提供。尽管在图3中被示作单个组件,但是存储器320可以表示在代码转换器30内、其本地的或其可访问的任意数目的存储元件。主机接口模块330将代码转换器30耦合到主机处理器40来辅助主机处理器40和代码转换器30之间的通信和数据流。例如,代码转换器30可以通过主机接口模块330来从主机处理器40接收工作流86。代码转换器30也可以使用主机接口模块330来向主机处理器40发送指示代码转换器30已经完成之前接收的工作流86并且准备好用于另外的指派的消息。在某些实施例中,可替换地,代码转换器30和主机处理器40之间的通信和数据流可以经由网络接口模块340来进行。网络接口模块340将代码转换器30耦合到系统10的适当组件来在由代码转换器 30执行的内容递送操作方面辅助代码转换器30与内容服务器50和/或系统10的其他合适的组件之间的经由网络60的通信。例如,代码转换器30可以利用网络接口模块340来将媒体信息90发送给内容服务器50。在具体实施例中,网络接口模块340包括或表示适合于通过网络60的基于分组的通信的一个或多个网络接口卡(NIC)。存储接口模块350辅助代码转换器30与系统10的各个存储组件之间的内容的传送。具体而言,代码转换器30通过存储接口模块350来接收来自原始内容储存器20的内容并将内容传送给修改内容储存器22或传送来自其的内容。为了支持多个同时的代码转换处理,存储接口模块350可以包括多个端口,存储接口模块350可经这多个端口同时接收来自原始内容储存器20和/或修改内容储存器22的多个流/将多个流同时发送给原始内容储存器20和/或修改内容储存器22。 在具体实施例中,原始内容储存器20和修改内容储存器22 二者都远离代码转换器30。因此,在这样的实施例中,存储接口模块350可以部分或全部地表示网络接口模块 340的元件。在可替换实施例中,原始内容储存器20和修改内容储存器22之一或二者可以表示代码转换器30内部的存储组件,诸如存储器320。在这样的实施例中,存储接口模块350可以全部或部分地表示被配置为在代码转换器30的存储组件和其它组件之间传送信息的存储总线和/或其它合适的组件。( 一个或多个)代码转换模块360将源文件80中的内容从源格式修改为适合于向具体客户端70的发送和由客户端70进行的回放的目标格式。在具体实施例中,代码转换器 30可以包括能够基于针对接收到的请求的目标格式对各种不同类型的内容进行变换、代码转换、速率转换和/或其它方式的修改的多个代码转换模块360。在包括多个代码转换模块 360的某些实施例中,代码转换模块360可以能够并发地操作使得多个内容集合可以被同时修改。作为一个具体示例,代码转换器30的具体实施例可以包含多个代码转换模块360, 其中每个代码转换模块360表示或包括数字信号处理器(DSP)。每个DSP可以具有存储器 320的对于那个DSP是本地的部分,其中存储了用于对多个不同编解码进行编码/解码的适当信息。因此,代码转换器30可以提供用于高流量系统中的实时代码转换的强壮的、高效节能的、紧致的平台。一般,主机接口模块330、网络接口模块340、存储接口模块350和(一个或多个) 代码转换模块360中的每一个可以表示适合于提供所描述的功能性的硬件和/或软件的任意适当的组合。另外,主机接口模块330、网络接口模块340、存储接口模块350和(一个或多个)代码转换模块360中的的任意两个或更多个可以表示或包括公共的元件。在具体实施例中,主机接口模块330、网络接口模块340、存储接口模块350和(一个或多个)代码转换模块360部分地表示正被处理器310执行的软件应用程序。图4是图示出在向请求客户端70递送内容时系统10的具体实施例的操作的流程图。图4中所示的步骤可以在适当时被组合、被修改或被删除,并且另外的步骤可以被增加到所示出的那些步骤。另外,在不偏离本发明的范围的情况下,这些步骤可以以任意合适的次序被执行。操作在步骤410处开始,内容服务器50接收来自特定客户端70的内容请求84。 如上所述,内容请求84可以表示适合于请求客户端70从内容服务器50请求内容的任意适当形式的请求。在具体实施例中,内容请求84表示指定与所请求的源文件80相关联的统一资源定位(URL)的HTTP请求。在步骤420,内容服务器50识别与所接收到的内容请求84相关联的媒体内容的源文件80。源文件80具有源格式,源格式与向请求客户端70的发送或由请求客户端70进行的回放不相兼容的或者不适于此。因此,在步骤430,内容服务器50 (或系统10的其他合适的组件)可以开始与所接收到的内容请求84相关联的目标文件82的创建。在具体实施例中,内容服务器50可以通过将内容请求84转发给主机处理器40或直接转发给代码转换器 30来开始目标文件82的创建。主机处理器40随后可以将内容请求84或由主机处理器40 响应于内容请求84创建的工作流转发给合适的代码转换器30。代码转换器30随后可以在对应的目标文件82被完整地创建之前,生成媒体信息90来辅助来自所请求的源文件80的内容向请求客户端70的发送。作为该处理的一部分, 在步骤440,代码转换器30估计目标文件82的一个或多个特征。代码转换器30可以估计目标文件82的任意合适的特征,包括但不限于与目标文件82相关联的文件大小,与将被包括在目标文件82中的一个或多个媒体帧相关联的帧大小、来自这样的媒体帧中的一个或多个的时间戳,和/或这样的媒体帧中的一个或多个的位置。在步骤450,代码转换器30随后基于估计的特征和与有关源文件80其内容和/或请求客户端70相关联的其他合适信息,来生成用于目标文件82的媒体信息。在步骤460 处,代码转换器30、主机处理器40、内容服务器50或系统10的其他合适元件随后将所生成的媒体信息90发送给请求客户端70。例如,代码转换器30可以将所生成的媒体信息90写入对应的目标文件82并且内容服务器50可以从代码转换后的内容存储器22读取有关的媒体信息90并将该媒体信息90发送给请求客户端70。如图4中所示,在具体实施例中,所生成的媒体信息90可以在对应的目标文件82的创建已被完成之前,被发送给请求客户端 70。在所图示的示例中,在步骤470,代码转换器30随后开始修改源文件80中的内容来将其内容转换成与接收到的内容请求84相关联的目标格式。尽管图4图示出其中代码转换器30在修改来自源文件80的任何内容之前估计目标文件82的特征的实施例,但是在可替换实施例中,代码转换器30可以修改源文件80的一部分并将修改后的部分的特征用作估计作为整体的目标文件82的特征的基础。因此,在具体实施例中,代码转换器30可以在估计目标文件82的有关特征和/或生成用于目标文件82的媒体信息90之前,开始修改源文件80中的至少一部分内容。在具体实施例中,代码转换器30可以以使得修改后的内容符合发送给请求客户端70的媒体信息90的方式来修改来自源文件80的内容。例如,在具体实施例中,代码转换器30可以生成目标格式的媒体帧,该媒体帧包含来自所请求的源文件80的内容。如果媒体帧大于针对有关媒体类型的估计帧大小,则代码转换器30可以丢弃修改后的内容的帧和/或以适合的方式修改帧以便符合估计帧大小(例如通过将具有0的帧写入对应的目标文件8 。可替换地,如果媒体帧小于针对有关媒体类型的估计帧大小,则代码转换器30 可以丢弃修改后的内容的帧和/或以适合的方式修改帧以便符合估计帧大小(例如通过在将帧写入对应目标文件82之前,用诸如一串0之类的非数据比特来填充帧)。在步骤480,代码转换器30将修改后的来自源文件80的内容写入对应的目标文件 82。在具体实施例中,代码转换器30可以基于被发送给请求客户端70的媒体信息90来将修改后的内容写入对应目标文件82。例如,代码转换器30可以在用发送给请求客户端70 的媒体信息90指定的有关目标文件82内的位置处,将修改后的媒体内容的帧写入对应目标文件82。当代码转换器30正在将修改后的内容写入目标文件82时,在步骤490,内容服务器50可以将来自对应目标文件82的内容发送给请求客户端70。例如,在具体实施例中,作为渐进下载的一部分,内容服务器50可以将来自有关目标文件82的内容发送给请求客户端70。在这样的实施例中,内容服务器50可以接收来自请求客户端70的一连串请求,这些请求指示有关目标文件82中的、请求客户端70准备好要接收的连续部分。内容服务器50 可以响应于这些请求将来自对应目标文件82的内容发送给请求客户端70。
代码转换器30可以继续将修改后的内容写入对应目标文件82并且内容服务器 50可以继续将来自有关目标文件82的内容发送给请求客户端70。该处理可以被重复直到代码转换器30已经完成对来自被请求的源文件80的内容的修改并将其写入对应目标文件 82并且完成了目标文件82的创建为止和/或直到内容服务器50已经完成了来自对应目标文件82的内容向请求客户端70的发送为止。因此,如图4中的步骤500所示,代码转换器 30、内容服务器50和/或系统10的其他合适的元件可以确定是否还有更多内容要被写入和/或被发送并且重复步骤470、480和/或490。如果没有,则系统10的该示例实施例的有关递送所请求的内容的操作可以结束,如图4中所示。尽管已经利用若干实施例描述了本发明,但是可以向本领域技术人员建议许多更改、改变、变更、变形和修改,并且本发明意欲包括络在所附权利要求的范围内的这样的更改、改变、变更、变形和修改。
权利要求
1.一种用于递送媒体内容的方法,包括 接收来自客户端的针对媒体内容的请求;识别第一媒体文件,所述第一媒体文件包含与所述请求相关联的媒体内容,其中所述第一文件具有第一媒体格式;至少部分地基于所述第一媒体文件来估计第二媒体文件的一个或多个特征,其中所述第二媒体文件具有第二媒体格式;至少部分地基于所述第二媒体文件的估计出的特征来生成用于所述第二媒体文件的媒体信息;开始与所述请求相关联的所述第二媒体文件的创建;以及在所述第二媒体文件的创建已被完成之前,将所述媒体信息发送给所述客户端。
2.根据权利要求1所述的方法,其中,估计所述第二媒体文件的一个或多个特征包括计算与所述媒体内容相关联的多个媒体帧中的每一个媒体帧的帧大小。
3.根据权利要求1所述的方法,其中,估计所述第二媒体文件的一个或多个特征包括计算与所述媒体内容相关联的多个媒体帧中的每一个媒体帧的时间戳。
4.根据权利要求1所述的方法,其中,生成媒体信息包括为所述第一媒体文件中的多个媒体帧中的每一个媒体帧确定在所述第二媒体文件中的位置。
5.根据权利要求1所述的方法,其中,生成媒体信息包括确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量。
6.根据权利要求1所述的方法,其中,生成媒体信息包括确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量;以及基于与所述第二媒体文件相关联的视频帧率和所述时间量来确定每个视频内容块中的视频帧的数量。
7.根据权利要求1所述的方法,其中,生成媒体信息包括确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量;以及基于与所述第二媒体文件相关联的音频采样率、每音频帧的样本数和所述时间量,来确定每个音频内容块中的音频帧的数量。
8.根据权利要求1所述的方法,还包括至少部分地基于所生成的媒体信息来将媒体内容写入所述第二媒体文件。
9.根据权利要求8所述的方法,其中,将媒体内容写入所述第二媒体文件包括 生成所述第二格式的媒体帧;判断生成的媒体帧是否大于估计出的帧大小;以及响应于判断出所述生成的媒体帧大于所述估计出的帧大小,丢弃所述生成的媒体帧。
10.根据权利要求8所述的方法,其中,将媒体内容写入所述媒体文件包括 生成所述第二格式的媒体帧;判断生成的媒体帧是否小于估计出的帧大小;以及响应于判断出所述生成的媒体帧小于所述估计出的帧大小,向所述生成的媒体帧添加哑元比特。
11.根据权利要求1所述的方法,还包括在所述第二媒体文件的创建已被完成之前,将所述第二媒体文件的一部分发送给所述客户端。
12.根据权利要求11所述的方法,其中,将所述第二媒体文件的一部分发送给所述客户端包括将所述部分作为所述第二媒体文件的渐进下载的一部分来发送给所述客户端。
13.根据权利要求11所述的方法,还包括在所述第二媒体文件的创建已被完成之前, 在所述客户端处开始所述第二媒体文件的所述部分的回放。
14.根据权利要求1所述的方法,其中,估计所述第二媒体文件的一个或多个特征包括在任何媒体内容被写入所述第二文件之前,估计所述第二媒体文件的一个或多个特征。
15.根据权利要求1所述的方法,其中,估计所述第二媒体文件的一个或多个特征包括至少部分地基于所述第一媒体文件来生成所述第二媒体格式的一个或多个媒体帧;以及基于所生成的媒体帧来估计所述第二媒体文件的所述一个或多个特征。
16.一种用于处理媒体内容的装置,包括 存储器,所述存储器可操作用于存储处理器指令;处理器,所述处理器可操作用于执行所述处理器指令,并且当执行所述处理器指令时, 可操作用于接收来自客户端的针对媒体内容的请求;识别第一媒体文件,所述第一媒体文件包含与所述请求相关联的媒体内容,其中所述第一文件具有第一媒体格式;至少部分地基于所述第一媒体文件来估计第二媒体文件的一个或多个特征,其中所述第二媒体文件具有第二媒体格式;至少部分地基于所述第二媒体文件的估计出的特征来生成用于所述第二媒体文件的媒体信息;开始与所述请求相关联的所述第二媒体文件的创建;以及在所述第二媒体文件的创建已被完成之前,将所述媒体信息发送给所述客户端。
17.根据权利要求16所述的装置,其中,所述处理器可操作用于通过计算与所述媒体内容相关联的多个媒体帧中的每一个媒体帧的帧大小,来估计所述第二媒体文件的一个或多个特征。
18.根据权利要求16所述的装置,其中,所述处理器可操作用于通过计算与所述媒体内容相关联的多个媒体帧中的每一个媒体帧的时间戳,来估计所述第二媒体文件的一个或多个特征。
19.根据权利要求16所述的装置,其中,所述处理器可操作用于通过为所述第一媒体文件中的多个媒体帧中的每一个媒体帧确定在所述第二媒体文件中的位置,来估计所述第二媒体文件的一个或多个特征。
20.根据权利要求16所述的装置,其中,所述处理器可操作用于通过确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量来生成所述媒体信息。
21.根据权利要求16所述的装置,其中,所述处理器可操作用于通过以下处理来生成媒体信息确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量;以及基于与所述第二媒体文件相关联的视频帧率和所述时间量来确定每个视频内容块中的视频帧的数量。
22.根据权利要求16所述的装置,其中,所述处理器可操作用于通过以下处理来生成媒体信息确定与要被写入所述第二媒体文件中的每个内容块相关联的时间量;以及基于与所述第二媒体文件相关联的音频采样率、每音频帧的样本数和所述时间量,来确定每个音频内容块中的音频帧的数量。
23.根据权利要求16所述的装置,其中,所述处理器还可操作用于至少部分地基于所生成的媒体信息来将媒体内容写入所述第二媒体文件。
24.根据权利要求23所述的装置,其中,所述处理器可操作用于通过以下处理来将媒体内容写入所述第二媒体文件生成所述第二格式的媒体帧;判断生成的媒体帧是否大于估计出的帧大小;以及响应于判断出所述生成的媒体帧大于所述估计出的帧大小,丢弃所述生成的媒体帧。
25.根据权利要求23所述的装置,其中,所述处理器可操作用于通过以下处理来将媒体内容写入所述第二媒体文件生成所述第二格式的媒体帧;判断生成的媒体帧是否小于估计出的帧大小;以及响应于判断出所述生成的媒体帧小于所述估计出的帧大小,向所述生成的媒体帧添加哑元比特。
26.根据权利要求16所述的装置,其中,所述处理器还可操作用于在所述第二媒体文件的创建已被完成之前,将所述第二媒体文件的一部分发送给所述客户端。
27.根据权利要求沈所述的装置,其中,所述处理器可操作用于通过将所述第二媒体文件的一部分作为所述第二媒体文件的渐进下载的一部分来发送给所述客户端,来将所述部分发送给所述客户端。
28.根据权利要求16所述的装置,其中,所述处理器可操作用于通过在任何媒体内容被写入所述第二文件之前估计所述第二媒体文件的一个或多个特征,来估计所述第二媒体文件的一个或多个特征。
29.根据权利要求16所述的装置,其中,所述处理器可操作用于通过以下处理来估计所述第二媒体文件的一个或多个特征至少部分地基于所述第一媒体文件来生成所述第二媒体格式的一个或多个媒体帧;以及基于所生成的媒体帧来估计所述第二媒体文件的所述一个或多个特征。
30.一种用于递送媒体内容的系统,包括代码转换器,所述代码转换器包括存储器,所述存储器可操作用于存储用于所述代码转换器的处理器指令;以及处理器,所述处理器在执行用于所述代码转换器的处理器指令时,可操作用于接收来自客户端的针对媒体内容的请求;识别第一媒体文件,所述第一媒体文件包含与所述请求相关联的媒体内容,其中所述第一文件具有第一媒体格式;至少部分地基于所述第一媒体文件来估计第二媒体文件的一个或多个特征,其中所述第二媒体文件具有第二媒体格式;至少部分地基于所述第二媒体文件的估计出的特征来生成用于所述第二媒体文件的媒体信息;开始与所述请求相关联的所述第二媒体文件的创建;以及在所述第二媒体文件的创建已被完成之前,将所述媒体信息发送给所述客户端;以及所述客户端可操作用于 接收所述媒体信息;从所述代码转换器请求所述第二媒体文件的至少一部分;以及基于接收到的媒体信息来播放所述第二媒体文件的所述部分。
全文摘要
一种用于递送媒体内容的方法,包括接收来自客户端(70a、70b、70c)的针对媒体内容的请求(84),以及识别包含与该请求相关联的媒体内容的第一媒体文件(80)。第一文件(80)具有第一媒体格式。该方法还包括开始与该请求相关联的第二媒体文件(82)的创建以及估计第二媒体文件(82)的一个或多个特征。第二媒体文件具有第二媒体格式。另外,该方法还包括基于第二媒体文件的估计出的特征来生成用于第二媒体文件的媒体信息(90)并且在第二媒体文件的创建已被完成之前将媒体信息发送给客户端。
文档编号H04N21/262GK102246533SQ200980150268
公开日2011年11月16日 申请日期2009年10月14日 优先权日2008年10月14日
发明者乔纳森·R·布莱崎, 普拉胡德威·I·霍苏尔, 聪·T·恩古因 申请人:Rgb网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1