CN102783147B - 预算编码 - Google Patents

预算编码 Download PDF

Info

Publication number
CN102783147B
CN102783147B CN201080057336.1A CN201080057336A CN102783147B CN 102783147 B CN102783147 B CN 102783147B CN 201080057336 A CN201080057336 A CN 201080057336A CN 102783147 B CN102783147 B CN 102783147B
Authority
CN
China
Prior art keywords
frame
media
budget
output
media frame
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
Application number
CN201080057336.1A
Other languages
English (en)
Other versions
CN102783147A (zh
Inventor
M.梅尔尼克
R.基德
J.塞斯特里奇
J.泰德曼
K.阿亚
F.库普曼
A.彭纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102783147A publication Critical patent/CN102783147A/zh
Application granted granted Critical
Publication of CN102783147B publication Critical patent/CN102783147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Abstract

一种方法包括:接收流式传输媒体数据,流式传输媒体数据具有媒体帧和引用媒体帧的帧索引;通过基于帧索引估计输出媒体帧的帧大小来分配用于输出媒体帧的帧预算;通过基于第一处理参数处理媒体帧并且如果分配的帧预算大于处理的媒体帧的帧大小则填充处理的媒体帧来实时生成输出媒体帧;并且提供输出媒体帧。

Description

预算编码
背景技术
本申请要求对于2009年10月15日提交的美国专利申请号12/580,212的优先权,通过引用将其结合于此。
MP4(称为“MPEG-4Part14”或者“ISO/IEC14496-14:2003”)是作为MPEG-4的一部分而指定的多媒体容器文件格式标准。它用来存储数字音频和视频流以及其他数据,诸如字幕和静止图像。主要为视频存储而设计的MP4也由因特网视频web站点用来以伪流传输方式传送视频内容。这样,视频播放器下载剪辑并且在视频内容变得可用时播放它。
例如图1A中的MP4文件100由称为框(包括但不限于框110和120)的对象的层级组成。每个框是文件内的邻接字节范围。每个框由文件内的四字符框类型标识。在层级顶部的两个框在这里最相关,即电影框(类型moov110)和媒体数据框(类型mdat120)。moov框110包括描述MP4文件100的所有文件信息112。mdat框120包括所有编码音频和视频帧,例如帧122、124和126。moov段110是用于文件的内容表并且包括媒体帧索引,该索引引用MP4文件100中的每帧并且指定用于每帧的帧大小和字节偏移。例如moov段110可以包括条目114、116和118,这些条目具有用于MP4文件100内的每个编码帧的帧大小和字节偏移。在图1A中示出了moov段110为单个表,但是该moov段110在以MP4文件格式编码时可以跨若干结构分布。在mdat框120内的数据可以未成帧(unframe)。在mdat框120内,无一帧在何处结束以及下一帧在何处开始的指示。用于区分采样的仅有方式是使用moov框110中的文件信息112。
一般未限定moov和mdat框的顺序。对于不同的MP4使用情况,框必须以具体顺序出现。MP4播放器必须在回放可以开始之前读取整个moov段110。当通过HTTP流式传输时,希望播放器在视频完全下载之前开始播放。为了支持这一情况,moov框110应当出现于mdat框120之前。
生成可以向MP4播放器流式传输的MP4文件通常为两步骤过程。在第一步骤中,编码器可以生成帧并且在单独表中记录它们的大小。可以向临时文件或者缓冲器中的mdat框写入生成的帧。在已经对所有帧编码之后,编码器然后可以写moov框。在第二步骤中,编码器可以按照用于流式传输的正确顺序来布置moov和mdat框。这一传统两步骤MP4编码过程的问题之一在于它不能提供实时转码、压缩、优化或者任何其他实时运行中(on-the-fly)修改过程。
附图说明
图1A图示了MP4文件的内部布局。
图1B图示了示例性预算编码过程。
图2图示了示例性系统的框图。
图3是图示了图2的示例性系统中的示例性代理服务器的预算视频处理器的一个实施例的框图。
图4是图示了图3的实施例中的示例性处理流程的功能图。
图5是代表示例性预算编码方法的流程图。
图6是具有示例性处理流程的框图,该流程图示了图3的示例性预算视频处理器的示例性编码器的一个实施例。
图7是具有示例性处理流程的框图,该流程图示了图3和图4的示例性预算视频处理器的另一实施例。
图8是代表用于预测量化参数的示例性方法的流程图。
图9是图示了图2的示例性系统的一个示例性实施例的框图。
图10是图示了图9的实施例中的示例性处理流程的功能图。
图11是代表用于在预算编码的背景中的媒体寻找的示例性方法的流程图。
具体实施方式
现在将详细参照示例性实施例,在附图中图示了这些实施例的例子。只要有可能,相同标号将在所有附图中用来指代相同或者相似部分。
这里公开的示例性实施例涉及用于预算编码的方法和系统。预算编码是一种用于在实时处理模型内以媒体容器格式生成文件的技术,该格式具有指定用于每个媒体帧的字节大小和字节偏移的帧索引。虽然MP4容器格式在示例性实施例中用来举例说明预算编码,但是可以对任何其他媒体容器格式执行预算编码,该格式具有指定用于每个媒体帧的字节大小和字节偏移的帧索引。实时预算编码技术可以允许截获来自媒体服务器的一个或者多个下载、处理它的媒体内容并且生成可以在单遍(singlepass)中向客户端流式传输的媒体文件。
图1B图示了示例性预算编码过程。预算编码是一种允许代理服务器对某些媒体格式执行实时运行中修改过程的技术。修改过程可以例如包括对媒体数据的转码、压缩、优化和/或任何其他实时运行中修改。例如为了运行中和/或实时优化MP4文件,代理服务器可以先通过预测输出(例如优化的)媒体数据中的每个媒体帧的大小来计算输出(例如优化的)帧索引(例如moov段)。随后,代理服务器然后可以通过优化它从媒体服务器下载的每个新媒体帧以满足在输出帧索引中预测的帧大小来坚持它的先前预测。
更具体而言,在第一步骤中,来自原始MP4文件100的moov框110用来生成输出MP4文件130的输出moov框140。输出moov框140可以包括但不限于文件信息142,该信息142可以包括描述输出帧大小的条目,诸如条目144、146和148。根据来自于在原始MP4文件100的moov框110中提供的条目114、116和118的原始帧大小估计输出moov框140中的输出帧大小。估计的输出帧大小被记录并且可以在第二步骤中用作帧预算。在第二步骤中,在对帧编码时使用估计的帧大小作为帧预算。处理模块(例如编码器)使用解码帧和对应帧预算的参数来预测将用于处理(例如,编码)解码帧的处理参数,诸如编码参数,包括一个或者多个量化参数。如果处理模块预测错误并且生成未在对应帧预算内相配的帧,则它确定新处理参数并且重新处理帧。一旦帧在预算以下相配,则填充它(下文进一步描述)以满足预算并且向输出MP4文件的输出mdat框150写入。
在输出moov框140中指示的帧大小可以包括处理的帧和填充(padding)二者。当MP4播放器播放输出MP4文件140时,可以向MP4播放器的解码器发送处理的帧加上填充,例如媒体帧152、154和156。填充序列可以充当向解码器的无操作指示符。用于填充的确切位序列根据编解码器变化。
一旦写入输出moov框140,就可以固定用于输出MP4文件130的总位速率(文件大小)。无论处理模块为每帧生成的字节数量如何,每个帧可以具有固定大小。
图2图示了示例性系统200的框图。示例性系统200可以是通过本地连接或者诸如无线网络、因特网、广播网络等网络提供媒体内容的任何类型的系统。示例性系统200可以除了别的以外包括用户设备202、网关204、一个或者多个网络206和210、代理服务器208和一个或者多个媒体服务器212-214。
用户设备202可以是硬件设备(诸如计算机、PDA、蜂窝电话、膝上型计算机、桌面型计算机或者访问数据网络的任何设备)。用户设备202可以包括软件应用,这些软件应用允许设备与数据网络通信并且从数据网络接收数据分组(诸如流式传输媒体的数据分组)。例如,用户设备202可以向媒体服务器发送用于下载特定流式传输媒体文件的请求数据,并且媒体服务器可以向用户设备202传输流式传输媒体文件。在一些实施例中,可以通过代理服务器208路由流式传输媒体文件。用户设备202可以提供用于向用户设备的用户显示流式传输媒体的显示器和一个或者多个软件应用,诸如媒体播放器。
网关204是一个或者多个如下设备,该设备充当入口或者接入装置并且可以或可以不将在一个类型的网络中提供的格式化数据转换成另一类型的网络所需要的特定格式。网关204例如可以是服务器、路由器。防火墙服务器、主机或者代理服务器。例如网关204可以具有将从用户设备202接收的信号变换成网络206或者210可以理解的信号的能力并且反之亦然。然而这一变换能力在一些数据网络(例如第四代(4G)或者全球微波接入互操作性(WiMAX))中并非必需。网关204可以能够单独或者以任何组合来处理音频、视频和T.120传输并且能够全双工媒体转译。另外,网关204可以包括用于预算编码的代理服务器208。
网络206和210可以包括广域网(WAN)、局域网(LAN)或者适合于分组型通信(诸如因特网通信)的无线网络的或者适合分发媒体内容的广播网络的任何组合。
代理服务器208可以实施为提供预算编码的软件程序和/或硬件设备。代理服务器208是提供在用户设备202与媒体服务器212-214之间的通信的服务器。例如代理服务器208可以包括Bytemobile’sWebFidelity服务。代理服务器208可以对某些媒体格式执行实时运行中修改。修改过程可以例如包括对媒体数据的转码、压缩、优化和/或任何其他实时运行中修改。
例如代理服务器208可以将预算编码技术应用于原始MP4文件。在预算编码技术中,可以将原始MP4文件编码成更低位速率而不明显改变媒体格式。可以在处理期间使用更高压缩。处理可以使给定媒体相配到更小存储空间中或者压缩信息量,使得通过更低带宽信道传输它。预算编码技术也可以用来在从服务器下载原始视频内容时转码视频内容、添加水印、标志或者其他相似的运行中视频处理。作为图2中所示系统200的配置的替代,代理服务器208执行的处理可以由任何媒体服务器212-214或者在用户设备202与媒体服务器212-214之间的任何网络设备执行。
代理服务器208可以包括用于执行预算技术的预算视频处理器(“BVP”)。BVP可以接收原始MP4文件、估计输出帧大小作为帧预算、生成输出moov框并且对原始MP4文件中的媒体帧解码。BVP然后可以预测用于处理(例如编码)解码媒体帧使得处理的帧在帧预算内相配的处理参数(例如编码参数)。BVP也可以填充处理的帧以满足帧预算并且向输出mdat框写入填充的帧。BVP可以向用户设备202提供输出MP4文件。
此外,代理服务器208可以支持在预算编码或者任何其他这样的实时运行中处理的背景中的媒体寻找(即快进或者倒退至媒体数据中的随机位置)。例如代理服务器208可以支持针对MP4媒体数据或者需要访问完整媒体帧索引的任何其他媒体格式的媒体寻找。
媒体服务器212-214可以是如下计算机服务器,这些服务器从用户设备202接收针对媒体内容的请求、处理请求并且在一些实施例中通过代理服务器208向用户设备202提供媒体内容。例如媒体服务器212-214可以是web服务器、企业服务器或任何其他类型的计算机服务器。媒体服务器212-214可以是编程为接受来自用户设备202的请求(例如HTTP、RTSP或者可以发起媒体会话的其他协议)并且向用户设备202供应流式传输媒体的计算机。媒体服务器212-214也可以是PDA、蜂窝电话、膝上型计算机、桌面型计算机或者被配置成在一些实施例中通过一个或者多个网络206和210向用户设备202传送媒体内容的任何设备。另外,媒体服务器212-214可以是用于在一些实施例中通过代理服务器208向用户设备202分发媒体内容的广播设施,诸如free-to-air、有线、卫星和其他广播设施。在一些实施例中,代理服务器208可以是任何媒体服务器212-214的部分。
图3是图示了图2的示例性系统中的代理服务器208的示例性预算视频处理器(“BVP”)的一个实施例的框图。为求简单,图3仅图示了BVP300、作为输入的原始MP4文件(302)和作为输出的输出MP4文件(304)。BVP300可以包括解复用器310、帧预算算法模块320、moov框生成器330、处理器340和复用器350。BVP300的所示配置仅为示例性的并且可以被修改成提供分立元件或者将多个元件组合成单个元件,并且作为硬件与软件的任何组合来提供。
参照图3,解复用器310可以包括MP4读取器312和解码器314。MP4读取器312可以是如下软件程序和/或硬件设备,该软件程序和/或硬件设备可以接收原始MP4文件并且从原始MP4文件提取如下帧索引(例如原始moov框),该索引指定原始MP4文件的原始mdat框中的每个原始帧的帧/字节大小、字节偏移和顺序。另外,MP4读取器31可以从原始mdat框取回原始媒体帧用于进一步处理。
可以提供解码器314为用于对每个取回的媒体帧解码、获得原始编码参数并且向解码帧上注释原始编码参数的软件程序和/或硬件设备。原始编码参数包括但不限于用于量化(有损压缩)取回的媒体帧的一个或者多个原始量化参数、编码器的原始配置信息、一个或者多个原始压缩算法和参数以及用于创建取回的媒体帧的其他原始编码信息。解码器314可以向量化算法模块352供应原始编码参数以预测用于在帧预算内生成编码帧的新编码参数(包括新量化参数)。解码器314可以支持常用音频/视频编码标准(例如H.264和/或MPEG编解码器)。
可以提供帧预算算法模块320为用于基于原始moov框计算用于输出MP4文件(304)中的每个输出帧的字节大小的软件程序和/或硬件设备。可以使用计算的字节大小作为用于输出媒体帧的帧预算,使得可以将对应原始媒体帧压缩成在帧预算内相配。每个输出帧具有对应帧预算。向帧预算算法模块320的主要输入可以是来自原始输入MP4文件(302)的原始moov框。帧预算算法模块320也可以考虑由解码器314和/或编码器354确定的一些参数。这些参数可以在输入文件的初始探测期间被确定并且可以用于该输入中的帧的采样。
帧预算算法模块320可以考虑是否使用附加无损压缩技术(例如gzip内容编码或者其他压缩技术)向客户端发送输出MP4文件。可以通过附加压缩技术消除向输出帧添加的一些或者多数填充。因此,帧预算算法模块320可以增加帧预算以减少可能需要将任何帧编码多于一次以在对应帧预算内相配的机会。可能在每帧中浪费更多字节,但是压缩可以消除这些额外字节,因而可以不通过网络传输它们。
可以提供moov框生成器330为如下软件程序和/或硬件设备,该软件程序和/或硬件设备组合由帧预算算法模块320确定的帧预算与从原始MP4文件提取的原始moov框以生成用于输出MP4文件的输出/处理的moov框。moov框生成器330也可以考虑编码器354的配置以更新输出moov框中的某些字段。
可以提供处理器340为用于作为用于处理的媒体数据的占位符(placeholder)来运转的软件程序和/或硬件设备。处理器340也可以对媒体数据执行附加修改,如诸如向媒体数据添加水印。
复用器350可以包括量化算法模块352、编码器354、帧填充器356和MP4写入器358。复用器350的所示配置仅为示例性的并且可以被修改成提供分立元件或者将多个元件组合成单个元件,并且作为硬件与软件的组合来提供。
可以提供量化算法模块352为如下软件程序和/或硬件设备,该软件程序和/或硬件设备基于由帧预算算法模块320决定的帧预算和解码器314为解码媒体帧而注释的编码参数确定新编码参数。新编码参数可以包括但不限于用于量化取回的媒体帧的一个或者多个量化参数、编码器354的配置信息、压缩算法和参数以及用于对解码媒体帧编码的其他新编码信息。
在帧预算算法模块320已经确定用于输出帧的帧预算之后,编码器354可以对每个原始媒体帧可靠地编码以最接近地满足帧预算而不超过分配的字节。很多方法可以用来在媒体处理中实现字节减少。在这里讨论的示例性实施例中,一个或者多个编码参数(包括量化参数)可以用来在逐帧基础上控制字节减少。
量化算法模块352可以产生一个或者多个新量化(Q)参数,这些参数可以导致在对应帧预算以下的编码帧。编码器354然后可以用一个或者多个新量化参数对帧编码。如果所得帧未满足预算,则量化算法模块352将进一步调整一个或者多个新量化参数并且重新编码直至帧在分配的预算内相配。一旦帧在分配的预算内,就可以在向客户端写入之前填充它以与预算匹配。
量化算法模块352也可以考虑媒体帧的类型以生成量化参数(如诸如I帧或者P帧)。I帧可能是最不可压缩的、但是可以无需其他媒体帧来解码。P帧可以使用来自先前I帧的数据来解压并且可以比I帧更可压缩。虽然原始moov框可能未显式指明哪些帧是I帧或者P帧,但是可以有可能估计图片组(“GOP”)大小(在I帧之间的帧数量),因为I帧通常大于P帧。对于具有固定GOP大小的帧,这可以导致原始moov框中的周期性。可以通过计算媒体帧大小的简单自相关函数的最大值来测量GOP引起的周期性。这一计算是用来获得更好性能(即更少填充)的精化(refinement)。预先知道这一GOP大小可以辅助选择输出编码参数(例如GOP)以与输入媒体帧的编码参数匹配。
提供编码器354为用于对每个解码媒体帧编码以满足对应帧预算而不超过分配的字节的软件程序和/或硬件设备。编码器354也可以取得两个输入(即帧预算算法模块320的输出和量化算法模块352的输出)。如果量化算法模块352预测的编码参数未产生在对应帧预算内相配的帧,则编码器354可以调用量化算法模块352以调整参数、然后对帧重新编码。反馈循环可以存在于编码器354与量化算法模块352之间以在编码器354超过帧预算并且必须对帧重新编码时精化编码参数。下文将进一步详细讨论精化编码参数。预算编码可能需要编码器354支持常用音频/视频编码标准(例如H.264和/或MPEG4编解码器)。
对于给定的帧预算,可以有多个可以按照预算或者在预算之下生成帧的编码器配置和/或量化参数。由于帧预算固定,所以挑选使填充量最小的编码器配置和/或量化参数是有益的。一个或者多个概念可以用来测量这一点。一个这样的概念是文件利用率。示出了用于文件利用率的公式为:
文件利用率=1-
文件利用率可以提供文件的多少用来传送有用帧数据对填充。
如果编码器354在第一次尝试时未满足预算,则可能需要用不同编码参数对帧重新编码直至帧满足预算。这一过程在与传统编码器过程相比时可能引入新开销。可以通过计算每个输出帧的平均编码数量来测量处理开销。
开销1=
也可以其次通过计算每个输出媒体的平均编码数量来比较用于具有不同输出帧速率的两个文件的处理开销:
开销2=
上述等式可以用来测量不同帧预算和量化预测算法的价值(merit)并且帮助预测最优帧预算和最优编码参数。
提供帧填充器356为插入填充字节以使编码帧与对应帧运算匹配的软件程序和/或硬件设备。可以最终向用户设备202上的解码器馈送填充字节,并且这些填充字节是向解码器的无操作指示。
可以提供MP4写入器358为用于生成最终输出MP4文件和/或向用户设备202流式传输MP4文件的软件程序和/或硬件设备。在设置阶段期间,MP4写入器358可以向输出MP4文件写入由moov框生成器330生成的输出moov框。在处理期间,MP4写入器358可以按照输出moov框规定的确切顺序写入编码帧。
在一些实施例中,代理服务器208可以组合预算编码与标准文件压缩。通过预算编码而插入的填充序列高度冗余,因而如这里先前描述的那样,可以通过传统文件压缩方法压缩源自预算编码的输出MP4文件。这可以减少跨越网络发送的字节总数而附加处理开销很小。利用适当压缩方法,可以在跨越数据网络传输MP4文件时实质上从它消除填充字节。传统文件压缩技术与预算编码的这样的组合可以用来减少预算编码所致的处理开销。在一些实施例中,如果已知将对输出MP4文件使用压缩技术,则帧预算算法模块320可以挑选大到足以使得编码器354可以很少必须对帧重新编码的帧大小(帧预算)。所得未压缩MP4文件可以实际上大于原始MP4文件。压缩可以消除所有填充,因而跨越网络传输的字节数量可以与实际用于编码帧的字节数量几乎相同。在效果上,预算编码可以使用在2009年3月31日提交的美国临时专利申请号61/165,224“AFRAMEWORKFORQUALITY-AWAREVIDEOOPTIMIZATION”中描述的压缩技术。
图4是图示了图3的实施例中的示例性处理流程的功能图。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
在从数据网络接收(302)原始MP4文件之后,BVP300可以将MP4文件引向MP4读取器312。MP4读取器312可以从原始MP4文件提取引用每个原始帧的帧索引(例如原始moov框)并且解析原始moov框以取回关于原始媒体帧的信息,例如原始mdat框中的每个原始帧的帧大小、偏移和顺序。MP4读取器312可以向帧预算算法模块320和moov框生成器330传递(402,404)提取的原始moov框和解析的信息。在一些实施例中,帧预算算法模块320和moov框生成器330可以解析帧索引(例如原始moov框)以取回关于原始媒体帧的信息。
基于原始moov框和原始媒体帧的帧索引,帧预算算法模块320可以估计用于无填充的已处理/编码帧的帧预算(即帧大小)。当估计帧预算时,帧预算算法模块320也可以考虑由解码器314和/或编码器354确定的一些参数。如果将使用压缩技术并且可以去除填充,则帧预算算法模块320可以产生更大帧预算以减少将帧编码多于一次以在对应帧预算内相配的机会。帧预算算法模块320可以分别向moov框生成器330和量化算法模块352提供(406,408)估计的帧预算。
在接收(404,406)原始moov框和估计的帧预算之后,moov框生成器330可以生成用于输出MP4文件304的输出帧索引(例如输出moov框)。在一些实施例中,moov框生成器330也可以考虑编码器354的配置以更新输出moov框中的某些字段。输出moov框可以包含用于输出MP4文件内的每个输出帧的字节大小和字节偏移。输出moov框中的信息可以对应于原始moov框中的信息。在输出MP4文件内的每个输出帧的顺序可以保持与在原始MP4文件中相同。moov框生成器330可以向MP4写入器358传送(410)输出moov框以向将向用户设备202流式传输的输出MP4文件写入输出moov框。
除了提取原始moov框之外,MP4读取器312也可以从原始MP4文件的原始mdat框取回原始媒体帧用于进一步处理。MP4读取器312可以基于引用每个原始帧的帧索引(例如原始moov框)逐个取回原始媒体帧。MP4读取器312可以向解码器314传递(412)取回的原始帧。
解码器314可以对原始帧解码、从解码帧提取原始编码参数并且向解码帧上注释编码参数用于由以后部件使用。解码器314可以向处理器340传递(414)解码帧用于进一步处理。此外,解码器314可以向量化算法模块352提供(416)原始编码参数以预测用于在对应帧预算内生成编码帧的新编码参数。
处理器340可以对媒体数据执行附加通用处理。处理器340可以向编码器354传送(418)处理的帧。
编码器354可以基于它与量化算法模块352的通信对处理的帧执行编码。量化算法模块352可以设置用于对当前处理的帧编码的新编码参数(包括新量化参数)。设置新编码参数可以基于由帧预算算法模块320决定的对应帧预算和由解码器314提供的原始编码参数。新编码参数可以用来生成在帧预算内相配的编码帧。量化算法模块352可以向编码器354提供(420)新编码参数。
通过取得(420)新编码参数作为输入,编码器354可以对当前处理的帧编码以生成在对应帧预算内相配的输出帧。如果生成的帧未在对应帧预算内相配,则编码器354可以调用(420)量化算法模块352以调整编码参数(包括新量化参数)、然后对帧重新编码。编码器354可以向帧填充器356提供(422)编码帧用于填充。
编码帧可以小于对应帧预算。帧填充器356可以插入填充以使编码帧与对应帧预算匹配。在一些实施例中,如果在传输填充帧之前使用压缩技术则可以消除填充。帧填充器356可以向MP4写入器358提供(424)填充帧。
在接收(410)输出moov框之后,MP4写入器358可以向输出MP4文件写入输出moov框作为第一步骤。也在接收(424)填充帧之后,MP4写入器358可以按照由输出moov框规定的确切顺序写入填充帧。在MP4写入器358执行任何处理之前,可以向用户设备202提供或者流式传输(304)输出MP4文件。
图5是代表示例性预算编码方法的流程图。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
在接收(502)原始MP4文件之后,预算视频处理器(“BVP”)从文件取回(504)帧索引(例如原始moov框)。帧索引可以引用每个原始帧并且指定关于原始MP4文件中的原始帧的信息,诸如每个原始帧的帧大小和字节偏移。
基于帧索引,BVP通过估计输出帧大小来确定(506)帧预算。每个输出帧具有一个对应帧预算。BVP基于帧预算和引用原始帧的帧索引来生成(508)输出帧索引(例如输出moov框)。BVP使用帧预算作为输出帧索引中的输出帧的帧大小,并且基于帧大小针对每个输出帧计算字节偏移。然后BVP在输出MP4文件中写入(510)输出帧索引(例如输出moov框)。
BVP基于原始MPV4文件中的原始帧的帧索引从原始MP4文件取回(512)原始帧。BVP也对原始帧解码(514)并且获得(514)解码帧的原始编码参数。
基于对应帧预算和原始编码参数,BVP确定(516)用于解码帧的新编码参数(包括量化参数)。使用新编码参数,BVP对解码帧编码(518)。BVP确定(519)编码帧是否在对应帧预算内相配。如果编码帧不能在对应帧预算内相配,则BVP可以回到步骤516以调整(516)新编码参数并且使用调整的编码参数对帧重新编码(518)直至编码帧在对应帧预算内相配。
如果编码帧在对应帧预算内相配,那么如果编码帧未满足帧预算,则BVP可以填充(520)编码帧以满足对应帧预算。填充向编码帧添加额外无操作字节。额外无操作字节可以通过在传输之前使用的压缩技术来消除或者由用户设备上的解码器省略。
BVP在将向用户设备流式传输的输出MP4文件中写入(522)填充帧。在一些实施例中,BVP可以在输出帧索引(例如输出moov框)和媒体帧被生成时向用户设备流式传输它们。
另外,BVP确定(524)是否更多原始帧存在于原始MP4文件中。如果是,则流程回到步骤512。如果不是,则BVP向用户设备提供(526)或者流式传输输出MP4文件。该方法然后结束(528)。
图6是具有示例性处理流程的框图,该处理流程图示了图3的示例性BVP的示例性(简化)编码器354的一个实施例。编码器354的所示配置仅为示例性的并且可以被修改成提供分立元件或者将多个元件组合成单个元件并且可以作为硬件与软件的组合来提供。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
图6提供了对通用视频编码器的描述以图示可以如何在编码过程中使用量化算法模块。参照图6,编码器354可以包括运动估计模块610、DCT模块620、量化模块630和VLC模块640。可以提供运动估计模块610为用于确定如下运动矢量的软件程序和/或硬件设备,这些运动矢量描述从一个2D图像到另一2D图像和从视频序列中的相邻帧的变换。运动估计模块610可以使用基于像素的方法、基于特征的方法和/或其他方法以发现运动矢量。在接收(418)解码媒体帧作为输入之后,运动估计模块610可以发现运动矢量并且向DCT模块620传递(602)结果。
可以提供DCT模块620为用于对DCT模块620处理的媒体帧执行有损数据压缩的软件程序和/或硬件设备。基于由运动估计模块610提供(602)的结果,DCT模块620可以运用离散余弦变换(“DCT”)方法将解码帧中呈现的音频和/或图像信号转换成基频分量。可以在音频和图像的有损数据压缩中使用DCT。DCT模块620可以使用DCT以在不同频率振荡的余弦函数的加权和方面表达有限多个数据点(例如波形或者像素)的序列,其中可以丢弃小的高频分量。DCT模块620可以向量化模块630提供(604)结果用于进一步处理。
可以提供量化模块630为用于量化由DCT模块620生成的频率分量的软件程序和/或硬件设备。量化过程(有损数据压缩技术)涉及到将值范围压缩成单个量子值。通过减少媒体帧中的离散符号数量,帧变得更可压缩。如先前讨论的那样,量化算法模块352可以基于对应帧预算、原始编码参数和/或其他信息生成一个或者多个新量化参数。通过将新的一个或者多个量化参数应用于量化过程,量化模块630可以在帧被编码之后将帧压缩成在对应帧预算内相配。如果编码帧不能在对应帧预算内相配,则量化模块630可以调用量化算法模块352以调整新量化参数。量化模块630可以向VLC模块640提供(606)量化帧用于编码。
可以提供VLC模块640为运用可变长度编码(“VLC”)以将量化帧中呈现的音频和/或视频源符号映射成可变数量的位的软件程序和/或硬件设备。VLC(无损数据压缩技术)可以允许以零误差压缩和解压音频和/或视频源。VLC模块640提供(422)编码帧用于进一步处理。
图7是具有示例性处理流程的框图,该处理流程图示了图3和图4的示例性(简化)BVP300的另一实施例。先前讨论过而这里不讨论图3和图4的相同部件和步骤。简化BVP300的所示配置仅为示例性的并且可以被修改成提供分立元件或者将多个元件组合成单个元件并且作为硬件与软件的任何组合来提供。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
针对编码器354的要求可以是用于编码帧的帧大小SizeOUT[n]小于或者等于用于输入(原始或者原生)帧n的对应预算SizeBudget[n]。编码器354起初可以使用量化参数Q[n]并且如果初始输出帧大于对应预算SizeBudget[n]则可以用更高量化参数仅对帧重新编码。编码媒体帧的最终大小未知直至编码器354完成量化和VLC步骤。出于这一原因,不可以预先已知而仅可以预测在用于给定帧的Q与帧大小之间的关系。
量化预测器710可以用来预测量化参数并且连续表征输入媒体帧412和输出媒体帧422二者的参数。可以提供量化预测器710为软件程序和/或硬件设备并且预测器710可以是量化算法模块352的部分或者BVP300的不同部件。量化预测器710可以由如下信息更新,该信息包括但不限于:
·SizeIN[n]:原始MP4文件中的当前输入媒体帧的帧大小。可以从原始MP4文件的原始moov框取回这一信息。
·QIN[n]:用于当前输入媒体帧的一个或者多个旧量化参数。这一信息可以在处理当前输入媒体帧之前由BVP300提供。
·SizeOUT[n-1]:先前编码的媒体帧的帧大小。可以在存储器或者其他存储设备中存储和从存储器或者其他存储设备取回这一信息。
·QOUT[n-1]:用于先前编码的媒体帧的一个或者多个量化参数。可以在存储器或者其他存储设备中存储和从存储器或者其他存储设备取回这一信息。
量化预测器710在它的状态由上述信息更新之后可以预测一个或者多个量化参数Q[n]以与对应预算SizeBudget[n]最接近地匹配并且向编码器354提供(702)量化参数。这可以是编码过程中的重要步骤并且可以具有若干含义。如果Q太小,则它可能导致超过预算的帧大小。如果是这样,则编码器354可能需要按照更高量化对超过预算的帧重新编码直至达到预算。如果Q太大,则它可能导致不必要的低质量媒体帧并且随后导致大量填充。量化预测器710可以预测用于帧的最优量化参数以最小化或者避免这些问题。
图8是代表预测量化参数的示例性方法的流程图。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
在接收(802)原始MP4文件内的当前原始帧之后,BVP对帧解码(804)并且提供用于帧的原始编码参数。如这里先前讨论的那样,BVP获得(804)用于当前原始帧的帧大小和量化参数。BVP也获得(806)可以存储于存储器或者其他存储设备中的用于先前输出帧的帧大小和量化参数。
在从先前输出的帧获得信息之后,BVP基于用于当前原始帧和先前输出的帧的帧大小和量化参数预测(810)最优量化参数。通过运用预测的最优量化参数,BVP将解码帧编码(812)成在对应帧预算内相配并且提供(814)填充。该方法然后结束(816)。
图9是图示了图2的示例性系统的一个示例性实施例的框图。为了简便,图9仅图示用户设备202、代理服务器208和媒体服务器212。在一些实施例中,代理服务器208除其他之外可以包括请求监视器910、响应监视器920、BVP300和寻找状态高速缓存930。代理服务器208的所示配置仅为示例性的并且可以被修改成提供分立元件或者将多个元件组合成单个元件并且可以作为硬件与软件的任何组合来提供。
代理服务器208可以支持在预算编码或者任何其他这样的运行中优化技术的背景中的媒体寻找(即快进或者退回至媒体数据中的随机位置)。代理服务器208可以支持针对MP4流式传输媒体数据或者需要访问完整媒体帧索引的任何其他媒体格式的媒体寻找。
请求监视器910可以是从用户设备202接收或者截获针对媒体数据的请求(诸如针对具体URL的HTTP请求)的软件程序和/或硬件设备。请求监视器210具有如下能力:用于向媒体服务器212转发针对原始媒体数据的请求、将针对优化的媒体数据的寻找请求转译成针对原始媒体数据的新寻找请求并且向媒体服务器212转发新寻找请求。
响应监视器920可以是从媒体服务器212接收媒体数据的软件程序或者硬件设备。在接收媒体数据之后,在一些实施例中,响应监视器920向BVP300提供媒体数据用于优化。如果接收的媒体数据对应于针对优化的媒体数据的具有字节范围的寻找请求,则响应监视器920可以确认媒体服务器212用媒体数据的被请求部分做出响应,并且然后向BVP300提供媒体用于优化。
BVP300可以通过例如运用如这里先前描述的预算编码对接收的媒体数据执行优化,并且向用户设备202提供优化的媒体数据。BVP300可以位于代理服务器208内、位于代理服务器208本地或者远离代理服务器208。
寻找状态高速缓存930可以是用于执行媒体寻找的与流式传输媒体数据的优化关联的状态信息记录或者数据的结构化汇集。可以将数据库结构组织为队列集、结构化文件、关系数据库、面向对象数据库或者任何其他适当数据库。计算机软件(诸如数据库管理系统)可以用来管理寻找状态高速缓存930并且提供对该高速缓存的访问。寻找状态高速缓存930可以存储和提供原始媒体数据的帧索引(例如原始MP4文件的moov框)。寻找状态高速缓存930也可以存储和提供优化的媒体数据的帧索引(例如优化的MP4文件的moov框)以及用来处理会话的参数。另外,寻找状态高速缓存930可以存储原始流式传输媒体数据的一部分(例如与第一一秒视频对应的媒体数据)。寻找状态高速缓存930可以与代理服务器208的其他部件组合并且可以位于代理服务器208内、位于代理服务器208本地或者远离代理服务器208。
在一些实施例中,在用户设备202的流式传输媒体应用(例如媒体播放器)可以本地执行媒体寻找。例如,如果所需媒体位置已经被下载并且仍然本地可用,则媒体播放器可以将媒体回放跳转至新位置而无需在下载原始媒体数据时的任何改变。否则,媒体播放器可以取消原始下载并且向媒体服务器212发出新媒体下载请求以在具体偏移而不是在开头开始下载。媒体播放器然后可以开始下载始于所需偏移的新媒体段、缓冲几秒媒体流并且然后在所需媒体位置开始回放。
为了在用户设备执行媒体寻找,媒体播放器可以发送针对与原始请求的URL不同的URL的寻找请求。例如媒体播放器可以发送具有字节偏移的寻找请求(例如http://videoserver.com/myvideo?offset=45)代替原始请求(例如http://videoserver.com/myvideo)。寻找请求告诉媒体服务器212在所需位置动态生成和发送新的完整流式传输媒体数据。鉴于使用不同URL并且针对寻找请求而返回如与部分流式传输媒体数据对照的完整流传输媒体数据的事实,代理服务器208可以将针对两个媒体请求(即原始请求和寻找请求)的返回的流式传输媒体数据视为完全独立的流式传输媒体数据。这一方式可以与上文描述的预算编码一起操作而无需任何特殊处置。
在一些实施例中,一种用于媒体播放器的替代方式是使用传送协议(如诸如超文本传送协议(HTTP))以促进寻找请求。具体而言,媒体播放器可以发出对下载媒体数据的所需部分的HTTP范围请求。例如为了直接跳转至媒体数据的第5000001个字节,媒体播放器可以发出针对与原始请求相同的URL的请求并且包括HTTP报头“Range:5000000-”。根据HTTP标准(RFC2616),范围请求可以返回媒体的所需类型。因此,媒体播放器可能需要将用户的指定时间偏移(例如45秒)转换成对应字节偏移(例如5000000),并且发出针对始于第5000001个字节偏移的媒体的部分的范围请求。可以针对媒体格式(诸如MP4文件)实施这种转换,因为MP4文件已经包括媒体数据中的所有媒体帧的完整索引。
然而这一替代方式可能未与实时运行中修改过程(例如预算编码)一起工作,因为媒体播放器请求的字节范围可以对应于处理(例如优化)的媒体数据中的字节范围而不是原始媒体数据中的字节范围。这意味着代理服务器208可能不容易知道用户真正地请求原始媒体数据的什么部分。并且因此,代理服务器208可能不容易知道需要从媒体服务器212下载、处理并且向用户设备202发送原始媒体数据的什么部分。此外,引用媒体数据中的所有媒体帧的帧索引可能未响应于范围请求而可用,因为这样的信息可以仅在媒体数据(诸如MP4文件)的开头可用。代理服务器可能需要重新下载和重新处理(例如重新优化)从开头开始的原始媒体数据直至可以确定用户请求处理(例如优化)的媒体的哪个部分。
然而在一些实施例中,代理服务器208可以通过采用比任一上述方式更高效的方法来处置在预算编码的背景中的寻找请求。代理服务器208可以将针对处理的媒体数据的具有范围请求的寻找请求转换成针对原始媒体数据的具有范围请求的寻找请求,并且向媒体服务器212转发针对原始媒体数据的具有范围请求的寻找请求。在接收原始媒体数据的被请求范围之后,代理服务器208可以处理(例如转码、压缩和/或优化)接收的原始媒体数据并且向用户设备202提供处理的媒体数据。利用存储于寻找状态高速缓存930中的信息,代理服务器208可以设置BVP300以处理范围请求响应。
图10是图示了图9的实施例中的示例性处理流程的功能图。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
在一些实施例中,每当代理服务器208如这里先前描述的那样可以选择将预算编码应用于特定媒体数据时。代理服务器208可以仅在用户设备202以后执行寻找的情况下在寻找状态高速缓存930中保存与媒体数据的处理关联的一些状态信息。保存于寻找状态高速缓存930中的具体状态信息可以包括但不限于原始媒体数据的帧索引(例如原始MP4文件的moov段)、处理/输出的媒体数据的帧索引(例如输出MP4文件的moov段)和原始媒体数据的部分(例如MP4文件的第一个一秒)。在一些实施例中,代理服务器208可以提供用于使寻找状态高速缓存930中的保存的状态信息老化的机制。例如代理服务器208可以在用户登出之后、在用户开始观看另一视频时和/或在某一(例如30)分钟空闲时间之后等删除通信会话(例如cookie)和保存的状态信息。
参照图10,在从用户设备202接收(1002,1012)具有媒体数据字节范围的寻找请求之后,请求监视器910在寻找状态高速缓存930中执行查找(1004)以确定寻找请求是否与来自正在进行的预算编码会话的先前处理的媒体数据匹配。查找可以基于保存的状态信息。如果未检测到匹配,则请求监视器910可以向媒体服务器212转发(1006)寻找请求而无修改。在接收(1008)请求的媒体数据之后,响应监视器920向用户设备202转发(1010)接收的媒体数据而无修改。
如果检测到匹配,则请求监视器910可以使用保存的状态信息以将输出媒体数据的被请求字节范围转译成对应原始媒体数据的字节范围。例如请求监视器910可以使用输出媒体数据的moov段的保存副本中的关于输出帧的帧大小和字节偏移的信息以将请求的字节范围转换成帧范围,例如将字节5000000-6000000转换成数据媒体数据中的帧500-600。请求监视器910可以使用原始媒体数据的moov段的保存副本中的关于原始帧的帧大小和字节偏移的信息以将输出媒体数据的帧范围转换成原始媒体数据中的字节范围,例如将输出媒体数据中的帧500-600转换成原始媒体数据中的字节7000000-9000000。然后请求监视器910可以使用原始媒体数据中的字节范围而不是输出媒体数据中的原始字节范围来满足来自用户设备202的HTTP请求。请求监视器910可以基于原始媒体数据中的字节范围调整寻找请求并且向媒体服务器212转发(1014)调整的寻找请求。
在接收(1016)请求的媒体数据之后,响应监视器920可以确认媒体服务器212用媒体数据的被请求部分做出响应。确认可以基于调整的寻找请求和/或在寻找状态高速缓存930中的保存的状态信息。在确认之后,响应监视器920可以向预算视频处理器(“BVP”)300传送(1018)接收的媒体数据用于进一步处理。
BVP300可以处理接收的媒体数据(例如转码、压缩、优化和/或向接收的媒体数据应用任何其他实时运行中修改过程)。在处理期间,BVP300可以取回(1020)和使用原始媒体数据的保存部分以重新初始化它的视频解码器,就如同已经从开头处理全部媒体数据一样。BVP300然后可以处理在调整的寻找请求中指示的所需位置开始的接收媒体数据。BVP300可以取回(1020)和使用输出媒体数据的moov段的保存副本而不必重复如这里先前描述的预算编码算法的预测步骤。在处理之后,BVP300可以向用户设备202提供(1020)处理的媒体数据。
在一些实施例中,这里描述的技术可以允许寻找状态高速缓存930以分布式方式(诸如与多个代理服务器一起)操作。例如可以向代理服务器X分配来自用户设备的针对媒体数据的原始请求,可以向代理服务器Y分配来自用户设备的针对优化的媒体数据的第一寻找请求,并且可以向代理服务器Z分配来自用户设备的针对优化的媒体数据的第二寻找请求。
在接收原始请求之后,代理服务器X可以向媒体服务器转发请求、从媒体服务器接收原始媒体数据、优化原始媒体数据并且向用户设备提供优化的媒体数据。代理服务器X也可以在寻找状态高速缓存中保存状态信息(例如原始媒体数据的帧索引、优化的媒体数据的帧索引和原始媒体数据的部分)。
在接收针对优化的媒体数据的第一寻找请求时,代理服务器Y可以基于第一寻找请求的URL、会话信息和/或其他信息将第一寻找请求重定向至代理服务器X。代理服务器X然后可以如上文描述的那样基于寻找状态高速缓存中的保存的状态信息处理第一寻找请求。
在接收针对优化的媒体数据的第二寻找请求之后,代理服务器Z可以基于第二寻找请求的URL、会话信息和/或其他信息将第二寻找请求重定向至代理服务器X。代理服务器X然后可以如上文描述的那样基于寻找状态高速缓存中的保存的状态信息来处理第二寻找请求。
图11是代表用于在预算编码的背景中的媒体寻找的示例性方法的流程图。虽然MP4流式传输媒体数据这里用来举例说明在预算编码的背景中的媒体寻找,但是可以对具有如下帧索引的任何其他媒体数据执行媒体寻找,该帧索引指定用于每个媒体帧的字节大小和字节偏移。未脱离示例性实施例,可以变更示例性处理流程以删除步骤、改变步骤顺序或者包括附加步骤。
在从用户设备接收(1102)针对MP4流式传输媒体数据字节范围的寻找请求之后,代理服务器可以基于存储于寻找状态高速缓存中的信息确定(1104)寻找请求是否与先前处理的MP4流式传输数据匹配。寻找状态高速缓存可以存储与处理先前处理的MP4流式传输媒体数据关联的状态信息。状态信息可以包括但不限于先前处理的MP4媒体数据的帧索引(例如处理的moov框)、对应原始MP4流式传输媒体数据的帧索引(例如原始moov框)和原始MP4流式传输媒体数据的部分。确定(1104)可以基于状态信息。
如果未检测到匹配,则代理服务器可以向媒体服务器转发(1106)对下载MP4流式传输媒体数据的被请求范围的寻找请求。该方法然后可以结束(1122)。
如果匹配存在于寻找请求与查找的先前处理的MP4流式传输媒体数据之间,则代理服务器可以将在用户设备的寻找请求转换成在媒体服务器的寻找请求。更具体而言,代理服务器可以将字节范围转换(1108)为先前处理的MP4流式传输媒体数据的帧范围。转换可以基于先前处理的MP4流式传输媒体数据的存储的已处理moov框中的关于先前处理的媒体帧的帧大小和字节偏移的信息。代理服务器然后可以将帧范围转换(1110)成对应原始MP4流式传输媒体数据中的字节范围。转换可以基于对应原始MP4流式传输媒体数据的存储的原始moov框中的关于对应原始媒体帧的帧大小和字节偏移的信息。
基于对应原始MP4流式传输媒体数据中的字节范围,代理服务器可以生成(1112)如下新寻找请求,该请求具有对应原始MP4流式传输媒体数据中的字节范围。代理服务器然后可以向媒体服务器转发(1114)对下载原始MP4流式传输媒体数据的被请求范围的新寻找请求。
在从媒体服务器接收(1116)原始MP4流式传输媒体数据的被请求范围之后,代理服务器可以基于存储的已处理moov框处理(1118)原始MP4流式传输媒体数据的接收范围。处理可以例如包括转码、压缩、优化和/或向接收的流式传输媒体数据应用任何其他实时运行中修改过程。
在处理(1118)之后,代理服务器可以向客户端设备提供(1120)MP4流式传输媒体数据的已处理范围。然后该方法可以结束(1122)。
这里描述的方法可以实施为用于由数据处理装置(例如可编程处理器、一个计算机或者多个计算机)执行或者用于控制数据处理装置的操作的计算机程序产品(即在信息载体中(例如在机器可读存储设备中)有形地包括的计算机程序)。可以用任何形式的编程语言(包括编译或者解译语言)编写计算机程序,并且可以用任何形式部署它(包括作为独立程序或者作为适合在计算环境中使用的模块、部件、子例程或者其他单元)。计算机程序可以被部署成在一个计算机上或者在处于一个地点或者跨多个地点分布的并且由通信网络互连的多个计算机上执行。
这里公开的部分或者所有方法也可以由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、印刷电路板(PCB)、数字信号处理器(DSP)、可编程逻辑部件与可编程互连的组合、单个中央处理单元(CPU)芯片、在母板上组合的CPU芯片、通用计算机或者能够执行这里公开的预算编码的设备或者模块的任何其他组合实现。
在先前说明书中,已经参照具体示例性实施例描述了本发明。然而将清楚可以做出各种修改和改变而不脱离如在所附权利要求书中记载的本发明的更广义精神和范围。说明书和附图因而将视为示例而不是限制。其他实施例可以根据对这里公开的本发明的说明书和实践的考虑而变得为本领域技术人员所清楚。

Claims (21)

1.一种用于预算编码的方法,包括:
接收流式传输媒体数据,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引;
通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算,每个输出媒体帧具有对应帧预算;
通过基于第一处理参数处理所述媒体帧并且如果分配的帧预算大于处理的媒体帧的帧大小则填充所述处理的媒体帧来实时生成所述输出媒体帧;并且
提供所述输出媒体帧。
2.根据权利要求1所述的方法,还包括:
提取帧索引,所述帧索引引用在所述流式传输媒体数据中呈现的媒体帧;并且
在生成所述输出媒体帧之前基于所述帧预算和引用所述媒体帧的所述帧索引来生成引用所述输出媒体帧的输出帧索引。
3.根据权利要求1所述的方法,还包括:
基于所述帧索引从所述流式传输媒体数据取回所述媒体帧;
对所述媒体帧解码;并且
基于解码的媒体帧获得所述第一处理参数。
4.根据权利要求3所述的方法,其中获得所述第一处理参数包括获得用于量化所述媒体帧的一个或者多个第一量化参数。
5.根据权利要求1所述的方法,还包括:
如果所述输出帧未在所述帧预算内相配,则基于所述帧预算和所述第一处理参数确定第二处理参数;并且
通过基于所述第二处理参数重新处理所述媒体帧并且如果分配的帧预算大于处理的媒体帧的帧大小则填充所述处理的媒体帧来生成所述输出媒体帧。
6.根据权利要求5所述的方法,其中确定所述第二处理参数包括确定用于量化所述媒体帧的一个或者多个第二量化参数。
7.根据权利要求1所述的方法,还包括:
在用户设备接收所述输出媒体帧之前通过压缩所述输出媒体帧来去除填充。
8.根据权利要求1所述的方法,还包括:
与标准文件压缩技术耦合以处理所述媒体帧,其中所述标准文件压缩技术在提供所述输出媒体帧之前去除所述填充;并且
基于对所述耦合的认知来分配用于所述输出媒体帧的所述帧预算,使得改进所述处理的媒体帧在所述帧预算内相配的机会。
9.一种用于预算编码的方法,包括:
接收流式传输媒体数据,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引;
通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算,每个输出媒体帧具有对应帧预算;
预测最优量化参数;并且
基于所述最优量化参数处理所述媒体帧,使得处理的媒体帧至少在所述帧预算内相配。
10.一种耦合成接收流式传输媒体数据的设备,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引,所述设备包括:
帧预算算法模块,被配置成通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算,每个输出媒体帧具有对应帧预算;
处理算法模块,被配置成基于所述帧预算和所述媒体帧确定第一处理参数;
处理模块,被配置成基于所述第一处理参数处理所述媒体帧;
帧填充器,被配置成填充所述处理的媒体帧以生成所述输出媒体帧;以及
帧写入器,被配置成提供所述输出媒体帧。
11.根据权利要求10所述的设备,还包括:
媒体读取器,被配置成接收帧索引,所述帧索引引用在所述流式传输媒体数据中呈现的媒体帧。
12.根据权利要求10所述的设备,还包括:
输出帧索引生成器,被配置成在生成所述输出媒体帧之前基于所述帧预算和引用所述媒体帧的所述帧索引生成引用所述输出媒体帧的输出帧索引。
13.根据权利要求12所述的设备,所述输出帧索引生成器还被配置成:
基于编码器的配置信息更新所述输出帧索引。
14.根据权利要求10所述的设备,还包括:
解码器,被配置成对所述媒体帧解码并且从解码的媒体帧获得信息以促进所述处理算法模块确定所述第一处理参数。
15.根据权利要求10所述的设备,所述处理算法模块还被配置成:
确定用于量化所述媒体帧的一个或者多个第一量化参数。
16.根据权利要求10所述的设备,所述处理算法模块还被配置成:
如果输出帧未在所述帧预算内相配,则基于所述帧预算和所述第一处理参数确定第二处理参数。
17.根据权利要求16所述的设备,所述处理算法模块还被配置成:
确定用于量化所述媒体帧的一个或者多个第二量化参数。
18.根据权利要求16所述的设备,所述处理模块还被配置成:
基于所述第二处理参数重新处理所述媒体帧,使得所述处理的媒体帧在所述帧预算内相配。
19.一种耦合成接收流式传输媒体数据的设备,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引,所述设备包括:
帧预算算法模块,被配置成通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算,每个输出媒体帧具有对应帧预算;
量化预测器,被配置成预测最优量化参数;以及
处理模块,被配置成基于所述最优量化参数处理所述媒体帧,使得处理的媒体帧在所述帧预算内接近地相配。
20.一种用于预算编码的设备,所述设备包括:
用于接收流式传输媒体数据的装置,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引;
用于通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算的装置,每个输出媒体帧具有对应帧预算;
用于通过基于第一处理参数处理所述媒体帧并且如果分配的帧预算大于处理的媒体帧的帧大小则填充所述处理的媒体帧来实时生成所述输出媒体帧的装置;并且
用于提供所述输出媒体帧的装置。
21.一种用于预算编码的设备,所述设备包括:
用于接收流式传输媒体数据的装置,所述流式传输媒体数据具有媒体帧和引用所述媒体帧的帧索引;
用于通过基于所述帧索引估计输出媒体帧的帧大小来分配用于所述输出媒体帧的帧预算的装置,每个输出媒体帧具有对应帧预算;
用于预测最优量化参数的装置;并且
用于基于所述最优量化参数处理所述媒体帧使得处理的媒体帧在所述帧预算内接近地相配的装置。
CN201080057336.1A 2009-10-15 2010-10-14 预算编码 Active CN102783147B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/580,212 2009-10-15
US12/580212 2009-10-15
US12/580,212 US9749713B2 (en) 2009-10-15 2009-10-15 Budget encoding
PCT/US2010/002762 WO2011046618A2 (en) 2009-10-15 2010-10-14 Budget encoding

Publications (2)

Publication Number Publication Date
CN102783147A CN102783147A (zh) 2012-11-14
CN102783147B true CN102783147B (zh) 2016-06-01

Family

ID=43309231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080057336.1A Active CN102783147B (zh) 2009-10-15 2010-10-14 预算编码

Country Status (4)

Country Link
US (1) US9749713B2 (zh)
EP (1) EP2489190A2 (zh)
CN (1) CN102783147B (zh)
WO (1) WO2011046618A2 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814221B1 (en) * 2008-06-13 2010-10-12 West Corporation Real-time streaming protocol gateway and proxy for serving and caching static media over a low bandwidth connection
CA2755774C (en) * 2009-03-19 2015-01-06 Azuki Systems, Inc. Method for scalable live streaming delivery for mobile audiences
CA2759880C (en) * 2009-03-23 2013-09-24 Azuki Systems, Inc. Method and system for efficient streaming video dynamic rate adaptation
EP2415269B1 (en) 2009-03-31 2020-03-11 Citrix Systems, Inc. A framework for quality-aware video optimization
KR101777347B1 (ko) * 2009-11-13 2017-09-11 삼성전자주식회사 부분화에 기초한 적응적인 스트리밍 방법 및 장치
KR101656102B1 (ko) * 2010-01-21 2016-09-23 삼성전자주식회사 컨텐츠 파일 생성/제공 장치 및 방법
US9110509B2 (en) * 2010-07-28 2015-08-18 VIZIO Inc. System, method and apparatus for controlling presentation of content
US9665646B1 (en) * 2011-04-13 2017-05-30 Flash Networks, Ltd Method and system for providing bit rate adaptaion to video files having metadata
WO2012168373A1 (en) * 2011-06-07 2012-12-13 Openwave Mobility, Inc Method and apparatus for optimizing media streams
US9621896B2 (en) 2011-06-10 2017-04-11 Citrix Systems Inc. Macroblock-level adaptive quantization in quality-aware video optimization
WO2012170904A2 (en) 2011-06-10 2012-12-13 Bytemobile, Inc. Adaptive bitrate management on progressive download with indexed media files
US9042449B2 (en) * 2011-09-29 2015-05-26 Avvasi Inc. Systems and methods for dynamic transcoding of indexed media file formats
CN102510519A (zh) * 2011-10-11 2012-06-20 成都市华为赛门铁克科技有限公司 流媒体数据的处理方法、播放方法以及装置
US9591098B2 (en) 2012-02-01 2017-03-07 Cisco Technology, Inc. System and method to reduce stream start-up delay for adaptive streaming
CN103369355A (zh) * 2012-04-10 2013-10-23 华为技术有限公司 一种在线媒体数据转换的方法、播放视频方法及相应装置
US20130282868A1 (en) * 2012-04-23 2013-10-24 Jae Chung Integral Controller Based Pacing for HTTP Pseudo-streaming
CN103458268A (zh) * 2012-05-28 2013-12-18 中兴通讯股份有限公司 媒体数据的发送方法及装置
US9794375B2 (en) * 2013-03-14 2017-10-17 Openwave Mobility, Inc. Method, apparatus, and non-transitory computer medium for obtaining a required frame size for a compressed data frame
US9680901B2 (en) * 2013-03-14 2017-06-13 Openwave Mobility, Inc. Method, apparatus and non-transitory computer medium for encoding data of a media file
US20140325023A1 (en) * 2013-04-24 2014-10-30 Cisco Technology, Inc. Size prediction in streaming enviroments
US9923945B2 (en) 2013-10-10 2018-03-20 Cisco Technology, Inc. Virtual assets for on-demand content generation
US20150256600A1 (en) 2014-03-05 2015-09-10 Citrix Systems, Inc. Systems and methods for media format substitution
CN105681823A (zh) * 2014-11-21 2016-06-15 华为技术有限公司 一种对视频文件进行在线转码的方法和装置
CN104506966B (zh) * 2014-12-10 2018-01-30 曙光信息产业(北京)有限公司 音视频数据的解码方法及装置
KR102004970B1 (ko) * 2016-11-17 2019-07-30 에스케이플래닛 주식회사 클라우드 스트리밍 서비스 제공 방법 및 이를 위한 장치
US10531134B2 (en) 2017-11-10 2020-01-07 Akamai Technologies, Inc. Determining a time budget for transcoding of video
CN109640113B (zh) * 2018-12-28 2021-08-27 网宿科技股份有限公司 一种拖拉视频数据的处理方法及代理服务器

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1235428A (zh) * 1998-02-27 1999-11-17 索尼公司 图像信号处理系统及方法,解码器及解码方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000506687A (ja) 1996-03-29 2000-05-30 サーノフ コーポレイション 知覚量を用いて符号化を最適化し自動操作可能な画像圧縮を実行する装置及び方法
US6115420A (en) 1997-03-14 2000-09-05 Microsoft Corporation Digital video signal encoder and encoding method
KR100433516B1 (ko) 2000-12-08 2004-05-31 삼성전자주식회사 트랜스코딩 방법
US7356079B2 (en) 2001-11-21 2008-04-08 Vixs Systems Inc. Method and system for rate control during video transcoding
US20040141732A1 (en) 2003-01-22 2004-07-22 Kenji Sugiyama Moving-picture code amount control method, moving-picture recording method, moving-picture code amount control apparatus and moving-picture recording apparatus
US7675970B2 (en) 2004-01-12 2010-03-09 General Instrument Corporation Method and apparatus for processing a bitstream in a digital video transcoder
US7397855B2 (en) 2004-04-14 2008-07-08 Corel Tw Corp. Rate controlling method and apparatus for use in a transcoder
US7447978B2 (en) * 2004-11-16 2008-11-04 Nokia Corporation Buffering packets of a media stream
EP1727371A1 (en) 2005-05-27 2006-11-29 Thomson Licensing Method for controlling the encoder output bit rate in a block-based video encoder, and corresponding video encoder apparatus
EP2061241A4 (en) 2006-09-05 2010-07-21 Panasonic Corp METHOD AND DEVICE FOR REPRODUCING VIDEO DATA OF A HIGH-BIT RATE FORMAT THROUGH A PLAYBACK DEVICE SUITABLE FOR REPRODUCING VIDEO DATA OF A LOW-BITRATE FORMAT
EP2127230A4 (en) 2007-02-09 2014-12-31 Onmobile Global Ltd METHOD AND APPARATUS FOR ADAPTING MULTIMEDIA CONTENT IN TELECOMMUNICATIONS NETWORKS
WO2009054907A2 (en) 2007-10-19 2009-04-30 Swarmcast, Inc. Media playback point seeking using data range requests
US8542730B2 (en) 2008-02-22 2013-09-24 Qualcomm, Incorporated Fast macroblock delta QP decision
WO2009114111A2 (en) 2008-03-12 2009-09-17 Packetvideo Corp. System and method for reformatting digital broadcast multimedia for a mobile device
EP2321969A4 (en) * 2008-09-09 2012-05-09 Onmobile Global Ltd METHOD AND APPARATUS FOR VIDEO TRANSMISSION
US20100166060A1 (en) 2008-12-31 2010-07-01 Texas Instruments Incorporated Video transcoder rate control
EP2415269B1 (en) 2009-03-31 2020-03-11 Citrix Systems, Inc. A framework for quality-aware video optimization
US9621896B2 (en) 2011-06-10 2017-04-11 Citrix Systems Inc. Macroblock-level adaptive quantization in quality-aware video optimization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1235428A (zh) * 1998-02-27 1999-11-17 索尼公司 图像信号处理系统及方法,解码器及解码方法

Also Published As

Publication number Publication date
CN102783147A (zh) 2012-11-14
EP2489190A2 (en) 2012-08-22
WO2011046618A3 (en) 2011-07-07
WO2011046618A2 (en) 2011-04-21
US20110090953A1 (en) 2011-04-21
US9749713B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
CN102783147B (zh) 预算编码
US9288251B2 (en) Adaptive bitrate management on progressive download with indexed media files
CN105379293B (zh) 基于超文本协议的动态自适应流媒体中的媒体质量信息指示
US6490320B1 (en) Adaptable bitstream video delivery system
US6574279B1 (en) Video transcoding using syntactic and semantic clues
KR100875781B1 (ko) 콘텐츠 공급 장치 및 방법과, 기록 매체
KR101274422B1 (ko) 미디어 컨테이너 파일 관리
CN102450014B (zh) 用于质量感知视频优化的方法和视频优化器
US9609340B2 (en) Just-in-time (JIT) encoding for streaming media content
CN102172020B (zh) 用于发送视频的方法和设备
KR101701182B1 (ko) 청크로 스트리밍된 컨텐츠를 복구하기 위한 방법
KR100848310B1 (ko) 스케일러블 비디오 코딩 기술이 적용된 비트스트림적응변환 장치 및 방법
KR20050007348A (ko) 유틸리티 기능 디스크립터에 기초하는 최적의 비디오트랜스코딩 방법 및 시스템
EP0739138A2 (en) Method and apparatus for matching compressed video signals to a communications channel
US11190813B2 (en) System, device and method for transrating file based assets
CN103583040A (zh) 实时视频检测器
GB2533624A (en) Methods, devices, and computer programs for improving coding of media presentation description data
Devillers et al. Bitstream syntax description-based adaptation in streaming and constrained environments
US20220303544A1 (en) Http streaming apparatus and system with pseudo manifest file and just-in-time encoding
CN101790085A (zh) 一种基于达芬奇技术的家庭视频监控系统的实现方法
CN109922340A (zh) 图像编解码方法、装置、系统及存储介质
CN113382278B (zh) 视频推送方法、装置、电子设备和可读存储介质
US7228535B2 (en) Methods and apparatus for multimedia stream scheduling in resource-constrained environment
WO2022079545A1 (en) Carriage and signaling of neural network representations
KR20130005527A (ko) 메타 데이터와 미디어 데이터가 분리되어 있는 파일 형식의 멀티미디어 컨텐츠를 프로그래시브 다운로드하기 위한 실시간 트랜스코딩 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: CITRIX SYSTEMS INC

Free format text: FORMER OWNER: BYTEMOBILE INC.

Effective date: 20131225

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20131225

Address after: American Florida

Applicant after: Citrix Systems Inc

Address before: American California

Applicant before: Bytemobile Inc.

ASS Succession or assignment of patent right

Owner name: BYTEMOBILE INC.

Free format text: FORMER OWNER: CITRIX SYSTEMS INC

Effective date: 20150811

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150811

Address after: American Florida

Applicant after: Bytemobile Inc.

Address before: American Florida

Applicant before: Citrix Systems Inc

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160229

Address after: American Florida

Applicant after: Citrix Systems Inc

Address before: American Florida

Applicant before: Bytemobile Inc.

C14 Grant of patent or utility model
GR01 Patent grant