著录项信息
专利名称 | 在浏览器中对视频播放进行复用和解复用 |
申请号 | CN201380054728.6 | 申请日期 | 2013-09-04 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-06-24 | 公开/公告号 | CN104737121A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F7/00 | IPC分类号 | G;0;6;F;7;/;0;0查看分类表>
|
申请人 | 谷歌公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 谷歌有限责任公司 | 当前权利人 | 谷歌有限责任公司 |
发明人 | 马蒂亚斯·库迪克 |
代理机构 | 中原信达知识产权代理有限责任公司 | 代理人 | 周亚荣;安翔 |
摘要
公开了用于将内容文件从第一格式转换成第二格式的系统和方法。该系统包括解析器、表生成器、确定模块和封装模块。解析器对第一格式的内容文件中的数据解析一个或多个文件头。表生成器至少部分地基于一个或多个文件头来生成一个或多个内容表。确定模块至少部分地基于一个或多个内容表来确定第一格式的内容文件中的一个或多个样本。封装模块至少部分地基于一个或多个样本来生成一个或多个标签,并且至少部分地基于一个或多个标签将内容文件从第一格式转换成第二格式。
1.一种用于将内容文件从源格式转换成目标格式的方法,所述方法包括:
响应于查看与所述目标格式相关联的媒体播放器中的所述内容文件的内容的请求,获得所述源格式的所述内容文件,其中所述源格式的所述内容文件包括多个样本,所述多个样本中的每个样本与所述内容文件的所述内容内的多个帧中的一个帧相对应;
对所述源格式的所述内容文件进行解析,以识别一个或多个文件头;
由处理设备至少部分地基于所述一个或多个文件头来生成一个或多个内容表,所生成的内容表包括所述源格式的所述内容文件的所述内容中的所述多个样本的条目,其中,所述源格式的所述内容文件的所述内容内的所述多个帧中的每个帧具有所述多个样本中的相应样本在所生成的内容表中的对应条目,以及其中,所生成的内容表中的每个条目包括所述内容文件的所述内容内的对应帧的位置、所述对应帧的内容类型和所述对应帧的特征;
至少部分地基于在所生成的内容表的所述条目中所识别的位置来定位所述源格式的所述内容文件内的所述多个样本;
至少部分地基于所述多个样本来生成一个或多个标签,其中所生成的标签中的标签包括相应样本、内容类型以及来自与所述一个或多个内容表中的相应样本相对应的条目的特征;以及
至少部分地基于所生成的标签,将所述内容文件从所述源格式转换成所述目标格式,以用于在所述媒体播放器中呈现。
2.如权利要求1所述的方法,其中,所述内容表还包括表标识符、表名、样本标识符、样本名称、长度或者时间偏移量中的一个或多个。
3.如权利要求1所述的方法,进一步包括:
从所述源格式的所述内容文件检索所述多个样本。
4.如权利要求1所述的方法,其中,至少部分地基于所述多个样本来生成一个或多个标签进一步包括:
至少部分地基于所述一个或多个内容表来生成一个或多个标签头;以及将所述一个或多个标签头附加在所述多个样本前。
5.如权利要求4所述的方法,其中,所述一个或多个标签头中的每个标签头包括标签类型、标签长度、时间偏移量或者运动特征中的一个或多个。
6.如权利要求1所述的方法,进一步包括:
从所述源格式的所述内容文件获取所述一个或多个文件头。
7.如权利要求1所述的方法,其中,所述源格式包括MPEG-4文件格式以及所述目标格式包括Flash视频文件格式。
8.一种用于将内容文件从源格式转换成目标格式的系统,所述系统包括:
存储器;
耦接到所述存储器的处理设备;
由所述处理设备从所述存储器执行的通信接口,用于接收查看与所述目标格式相关联的媒体播放器中的所述内容文件的内容的请求,并获得所述源格式的所述内容文件,其中所述源格式的所述内容文件包括多个样本,所述多个样本中的每个样本与所述内容文件的所述内容内的多个帧中的一个帧相对应;
由所述处理设备从所述存储器执行的解析器,用于对所述源格式的所述内容文件进行解析,以识别一个或多个文件头;
由所述处理设备从所述存储器执行的表生成器,用于接收所述一个或多个文件头,并且至少部分地基于所述一个或多个文件头来生成 一个或多个内容表,所生成的内容表包括所述源格式的所述内容文件的所述内容中的所述多个样本的条目,其中,所述源格式的所述内容文件的所述内容内的所述多个帧中的每个帧具有所述多个样本中的相应样本在所生成的内容表中的对应条目,以及其中,所生成的内容表中的每个条目包括所述内容文件的所述内容内的对应帧的位置、所述对应帧的内容类型和所述对应帧的特征;
由所述处理设备从所述存储器执行的确定模块,用于从所述表生成器接收所生成的内容表,并且至少部分地基于在所生成的内容表的所述条目中所识别的位置来定位所述源格式的所述内容文件内的所述多个样本;以及
由所述处理设备从所述存储器执行的封装模块,用于接收所述源格式的所述内容文件中的所述一个或多个样本,并且至少部分地基于所述多个样本来生成一个或多个标签,其中所生成的标签中的标签包括相应样本、内容类型以及来自与所生成的内容表中的相应样本相对应的条目的特征,所述封装模块至少部分地基于所生成的标签将所述内容文件从所述源格式转换成所述目标格式,以用于在所述媒体播放器中呈现。
9.如权利要求8所述的系统,其中,所述内容表还包括表标识符、表名、样本标识符、样本名称、长度或者时间偏移量中的一个或多个。
10.如权利要求8所述的系统,其中,所述确定模块进一步从所述源格式的所述内容文件检索所述多个样本。
11.如权利要求8所述的系统,其中,为了至少部分地基于所述多个样本来生成一个或多个标签,所述封装模块进一步用于:
至少部分地基于所述一个或多个内容表来生成一个或多个标签头;以及将所述一个或多个标签头附加在所述多个样本前。
12.如权利要求11所述的系统,其中,所述一个或多个标签头中的每个标签头包括标签类型、标签长度、时间偏移量或者运动特征中的一个或多个。
13.如权利要求8所述的系统,进一步包括:
由所述处理设备从所述存储器执行的获取模块,用于从所述源格式的所述内容文件获取所述一个或多个文件头。
14.如权利要求8所述的系统,其中,所述源格式包括MPEG-4文件格式以及所述目标格式包括Flash视频文件格式。
15.一种包括编码指令的非瞬时计算机可读介质,所述指令响应于由计算设备执行而使所述计算设备执行操作,所述操作包括:
响应于查看与目标格式相关联的媒体播放器中的内容文件的请求,获得源格式的内容文件,其中所述源格式的所述内容文件包括多个样本,所述多个样本中的每个样本与所述内容文件的所述内容内的多个帧中的一个帧相对应;
对所述源格式的所述内容文件进行解析,以识别一个或多个文件头;
由处理设备至少部分地基于所述一个或多个文件头来生成一个或多个内容表,所生成的内容表包括所述源格式的所述内容文件的所述内容中的所述多个样本的条目,其中,所述源格式的所述内容文件的所述内容内的所述多个帧中的每个帧具有所述多个样本中的相应样本在所生成的内容表中的对应条目,以及其中,所生成的内容表中的每个条目包括所述内容文件的所述内容内的对应帧的位置、所述对应帧的内容类型和所述对应帧的特征;
至少部分地基于在所生成的内容表的所述条目中所识别的位置来定位所述源格式的所述内容文件内的多个样本;
至少部分地基于所述多个样本来生成一个或多个标签,其中所生成的标签中的标签包括相应样本、内容类型以及来自与所述一个或多 个内容表中的相应样本相对应的条目的特征;以及
至少部分地基于所生成的标签,将所述内容文件从所述源格式转换成所述目标格式,以用于在所述媒体播放器中呈现。
16.如权利要求15所述的非瞬时计算机可读介质,其中,所述内容表还包括表标识符、表名、样本标识符、样本名称、长度或者时间偏移量或运动特征中的一个或多个。
17.如权利要求15所述的非瞬时计算机可读介质,所述指令响应于由计算设备执行而使所述计算设备执行操作,所述操作进一步包括:
从所述源格式的所述内容文件检索所述多个样本。
18.如权利要求15所述的非瞬时计算机可读介质,其中,至少部分地基于所述多个样本来生成一个或多个标签进一步包括:
至少部分地基于所述一个或多个内容表来生成一个或多个标签头;以及将所述一个或多个标签头附加在所述多个样本前。
19.如权利要求18所述的非瞬时计算机可读介质,其中,所述一个或多个标签头中的每个标签头包括标签类型、标签长度、时间偏移量或者运动特征中的一个或多个。
20.如权利要求15所述的非瞬时计算机可读介质,所述指令响应于由计算设备执行而使所述计算设备执行操作,所述操作进一步包括:
从所述源格式的所述内容文件获取所述一个或多个文件头。
21.如权利要求15所述的非瞬时计算机可读介质,其中,所述源格式包括MPEG-4文件格式以及所述目标格式包括Flash视频文件格式。
在浏览器中对视频播放进行复用和解复用\n技术领域\n[0001] 本说明书涉及用于转换诸如视频文件格式的内容文件格式的系统。\n背景技术\n[0002] 许多网站托管视频,用于由用户浏览。视频托管站点管理由客户端访问的视频。发布者将视频内容上传到视频托管站点。视频托管站点将由发布者上传的视频推送给客户端。有时,由发布者上传的视频作为具有特定视频文件格式的视频文件存储在视频托管站点上。例如,发布者将具有运动图像专家组-4(MPGE-4)视频文件格式的视频上传到视频托管站点。所上传的视频作为MPEG-4视频文件存储在视频托管站点上。访问视频托管站点的用户可能希望在诸如智能电话的用户设备上的Flash播放器中浏览视频。因此,由于flash播放器不能播放MPEG-4文件格式的视频文件,但能播放FLV文件格式的视频文件,因此要求将MPEG-4视频文件转换成Flash视频(FLV)文件。另一要求可能是只要用户请求以不同格式浏览视频,则实时地转换视频文件格式。\n发明内容\n[0003] 在此公开的实施例提供用于将内容文件从第一格式转换成第二格式的系统和方法。浏览器包括flash播放器。flash播放器包括格式模块。格式模块包括解析器、表生成器、确定模块和封装模块。解析器对具有第一格式的内容文件中的数据解析一个或多个文件头。表生成器可通信地耦接到解析器,用于接收一个或多个文件头并且至少部分地基于一个或多个文件头来生成一个或多个内容表。在一个实施例中,内容表包括表标识符、表名、样本标识符、样本名、类型、字节偏移量、长度、时间偏移量和运动特征中的一个或多个。\n[0004] 确定模块可通信地耦接到表生成器,用于从表生成器接收一个或多个内容表,并且至少部分地基于一个或多个内容表来确定具有第一格式的内容文件中的一个或多个样本。封装模块可通信地耦接到确定模块,用于接收具有第一格式的内容文件中的一个或多个样本,并且至少部分地基于一个或多个样本来生成一个或多个标签。封装模块至少部分地基于一个或多个标签来将内容文件从第一格式转换成第二格式。\n[0005] 在此所述的特征和优点不是穷举,以及鉴于图和说明书,对本领域的普通技术人员来说,许多另外的特征和优点将是显而易见的。此外,应注意到主要为易读和指导目的,选择用在说明书中的语言,而不限制在此公开的主题的范围。\n附图说明\n[0006] 通过举例示例说明书,而不受附图限制,其中,相同的参考数字用来指代类似的元件。\n[0007] 图1是图示用于转换内容文件格式的系统的一个实施例的高级框图。\n[0008] 图2是图示其中详细地图示格式模块的客户端设备的一个实施例的框图。\n[0009] 图3是图示存储设备的一个实施例的框图。\n[0010] 图4示出根据实施例的内容表的示例。\n[0011] 图5是用于将内容文件从第一格式转换成第二格式的方法的一个实施例的流程图。\n[0012] 图6是用于将内容文件从第一格式转换成第二格式的另一方法的一个实施例的流程图。\n具体实施方式\n[0013] 下面描述了用于将内容文件从第一格式转换成第二格式的系统和方法。在下述描述中,为说明目的,阐述多个具体细节以便提供说明书的全面理解。然而,对本领域的技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践实施例。在其他实例中,以框图的形式示出结构和设备,以避免混淆说明书。例如,在下文中参考用户接口和特定硬件,在一个实施例中描述说明书。然而,该描述适用于能接收数据和命令的任何类型的计算设备,以及提供服务的任何外围设备。\n[0014] 在说明书中参考“一个实施例”或“实施例”是指结合该实施例描述的特定特征、结构或特性包括在至少一个实施例中。在说明书的各个地方出现的短语“在一个实施例中”不一定均参考相同的实施例。\n[0015] 在对计算机存储器内的数据位的操作的算法和符号表示方面给出下述的详细描述的一些部分。这些算法描述和表示是由数据处理领域的技术人员用来将他们的工作的实质最有效地传达给该领域的其他技术人员的手段。算法在此并且通常预期为导致期望结果的步骤的自一致序列。步骤是要求物理量的物理操作的步骤。通常,尽管不一定必要,这些量采用能存储、传送、组合、比较或者另外操作的电或磁信号的形式。已经证明有时,主要由于惯用,将这些信号称为位、值、元素、符号、字符、项、数字等等很方便。\n[0016] 然而,应当记住所有这些和类似的术语应当与适当的物理量相关联并且仅是应用于这些量的方便的标记。除非具体说明,否则如从下述论述可以看出,应理解在整个说明书中利用诸如“处理”或“计算”或“运算”或“确定”或“显示”等等的术语的讨论是指将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操作和变换成类似地表示为计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内的物理量的其他数据的计算机系统或类似的电子计算设备的动作或过程。\n[0017] 说明书还涉及用于执行在此的操作的装置。可以为所需目的专门构造该装置,或其可以包括由存储在计算机中的计算机程序有选择地激活或重新配置的通用计算机。这样的计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光学卡、具有非易失存储器的包括USB密钥的闪存、或适用于存储电子指令的任何类型的介质,每一个耦合到计算机系统总线。\n[0018] 一些实施例可以采用完全硬件实施例、完全软件实施例或包含硬件和软件两者的实施例的形式。可以用软件实现优选实施例,包括但不限于固件、驻留软件、微码等等。\n[0019] 此外,一些实施例能采用可从提供用于由计算机或任何指令执行系统或结合计算机或任何指令执行系统使用的程序代码的计算机可用或计算机可读存储介质访问的计算机程序产品的形式。为该描述目的,计算机可用或计算机可读介质能是能包含、存储、传送、传播或传输用于由指令执行系统、装置或设备或结合指令执行系统、装置或设备使用的程序的任何装置。\n[0020] 适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦接到存储器元件的至少一个处理器。存储器元件能包括在实际执行程序代码期间采用的本地存储器、大容量存储器和提供至少一些程序代码的临时存储的高速缓存以便减小在执行期间必须从大容量存储器检索代码的次数。\n[0021] 能将输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等等)直接或通过中间I/O控制器耦接到系统。\n[0022] 网络适配器也可以耦接到系统来使数据处理系统能够变为通过中间专用或公用网耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是一些当前可用类型的网络适配器。\n[0023] 在此呈现的算法和显示不是固有地与任何特定计算机或其他装置有关。根据在此的教导,可以通过程序使用各种通用系统,或证实构造更专用的装置来执行所需方法步骤很方便。用于各种这些系统的所需结构从下述描述将是显而易见的。此外,没有参考任何特定编程语言来描述说明书。将意识到可以使用各种编程语言来实现如在此所述的各个实施例的教导。\n[0024] 最后,在此所述的实施例包括采集描述用户和/或用户活动的数据。在一些例子中,仅在用户提供同意该数据的采集后,才采集这样的数据。在一些实现中,提示用户明确地允许数据采集。此外,用户可以决定参加或决定退出参与这样的数据采集活动。在一个例子中,在执行任何分析前,匿名所采集的数据来获得任何统计模式,以便不会从所采集的数据确定用户的身份。\n[0025] 系统概述\n[0026] 图1图上用于转换内容文件格式的系统130的框图。所示的系统130的实施例包括由用户125a、125n(也统称为或单独地称为用户125)访问的客户端设备115a、115n(也统称为或单独地称为客户端设备115)、内容提供者118和资产托管站点站点100。在所示的实施例中,这些实体经由网络105通信地耦接。例如,资产托管站点100、内容提供者118和客户端设备115经由网络105相互通信地耦接以便于在客户端设备115的用户125之间共享信息(例如视频内容文件)。\n[0027] 尽管在图1中图示了一个内容提供者118、两个客户端设备115和一个资产托管站点100,但本领域的普通技术人员将意识到能将任意数量的内容提供者118、客户端设备115和资产托管站点100通信地耦接到网络105。此外,尽管一个网络105耦接到客户端设备115、内容提供者118和资产托管站点100,但本领域的普通技术人员将意识到任意数量的网络\n105能连接到客户端设备115、内容提供者118和资产托管站点100。\n[0028] 网络1005是常规类型的有线或无线,并且可以具有任何数量的配置,诸如星形配置、令牌环配置或本领域的技术人员公知的其他配置。此外,网络105可以包括局域网(LAN)、广域网(WAN)(例如互联网)和/或多个设备能在其上通信的任何其他互连的数据路径。在另一实施例中,网络105可以是对等网络。网络105还可以耦接到或包括用于以各种不同通信协议发送数据的电信网络的一部分。例如,网络105是3G网络或4G网络。在另一实施例中,网络105包括蓝牙通信网络或蜂窝通信网络,用于诸如经由短消息服务(SMS)、多媒体消息服务(MMS)、超文本传输协议(HTTP)、直接数据连接、WAP、电子邮件等等发送和接收数据。在另一实施例中,使用常规加密技术,诸如安全套接字层(SSL)、安全HTTP和/或虚拟专用网(VPN),加密网络105中的所有或一些链路。\n[0029] 在所示的实施例中,内容提供者118经由信号线路181通信地耦接到网络105。客户端设备115a经由信号线路183耦接到网络105。用户125a与客户端设备115a交互,如由信号线路197所示。客户端设备115n和用户125n以类似的方式耦接和交互。资产托管站点站点\n100经由信号线路113通信地耦接到网络105。\n[0030] 资产托管站点100是允许用户经由搜索和/或浏览界面来访问视频内容的任何系统。资产托管站点100的示例是在www.youtube.com找到的YOUTUBETM网站。其他视频托管站点也非常公知,并且适合于根据在此公开的教导操作。将理解术语“网站”表示适合于使用任何互联网工作协议派发内容的任何计算机系统,并且不旨在限制到经互联网或HTTP协议上传或下载的内容。\n[0031] 在一个实施例中,资产托管站点100上的视频内容源来自用户上传的视频、其他网站或视频数据库的搜索或爬取等等或其任意组合。例如,在一个实施例中,资产托管站点\n100被配置成允许用户125和/或内容提供者118上传视频内容。在另一实施例中,资产托管站点100被配置成通过实时爬取这样的源或搜索这样的源来从其他源获得视频。\n[0032] 为了简化说明书和使本说明书清楚,由资产托管站点100接收和共享的视频内容文件将称为视频、视频文件或视频项目。本领域的普通技术人员将意识到资产托管站点100能接收和共享任何媒体类型和文件类型的内容。例如,资产托管站点100共享诸如视频、音频、视频音频的组合、诸如JGEP或GIF文件的图像和/或文本文件等等的内容文件。\n[0033] 资产托管站点100可经由信号线路113通信地耦接到网络105。在所示的实施例中,资产托管站点100包括:前端接口102、视频派发模块104、视频搜索模块106、上传服务器\n108、缩略图生成器112、GUI模块126、用户数据库114、视频数据库116和图形数据存储194。\n资产托管站点100的组件通信地相互耦接。未示出其他常规部件,诸如防火墙、负载平衡器、认证服务器、应用服务器、故障服务器、站点管理工具等等以便不混淆该系统的特征。\n[0034] 在一个实施例中,资产托管站点100的所示组件被实现为单个软件或硬件或多个软件或硬件。通常,在一个实施例中描述为由一个组件执行的功能也能由其他实施例中的其他组件、或组件的组合执行。此外,在一个实施例中,描述为由资产托管站点100的组件执行的功能在适当的情况下在其他实施例中由一个或多个客户端设备115和/或内容提供者\n118执行。在一个实施例中,归因于特定组件的功能由不同或一起操作的多个组件执行。\n[0035] 资产托管站点100上的各种服务器或模块中的每一个被实现为在包括一个或多个中央处理单元(一个或多个“CPU”)、存储器、网络接口、外围接口和其他非常公知的组件的服务器类计算机上执行的服务器程序。在一个实施例中,计算机本身运行开源操作系统,诸如LINUX;具有一个或多个CPU、1千兆字节或更大的存储器,以及100千兆字节或更大的盘存储。在一个实施例中,使用其他类型的计算机,并且预期随着未来开发更强大的计算机,能根据在此公开的教导配置它们。在另一实施例中,从存储在一个或多个有形、非瞬时计算机可读存储介质(例如随机存取存储器(“RAM”)、闪存、固态驱动(“SSD”)、硬盘驱动、光学/磁介质等等)中的计算机程序产品提供由任一元件实现的功能。\n[0036] 前端接口102是处理经由网络105与内容提供者118和客户端设备115通信的接口。\n例如,前端接口102接收从内容提供者118和/或客户端设备115的用户125上传的视频文件并且将视频文件传递到上传服务器108。在一个实施例中,前端接口102从客户端设备115的用户125接收请求,并且将请求传递到资产托管站点100的其他组件(例如视频搜索模块\n106、视频派发模块104等等)。例如,前端接口102从用户125接收视频搜索查询并且将视频搜索查询发送到视频搜索模块106。\n[0037] 在另一例子中,前端接口102从客户端设备115接收对诸如具有MPEG-4(“MP4”)文件格式的视频文件的内容文件中的数据的请求。前端接口102将该请求传递到视频派发模块104。在一个实施例中,所请求的数据包括一个或多个文件头。例如,文件头包括在视频文件的诸如MP4视频文件的前半兆字节的前部存储的补充数据。在一个实施例中,文件头中包括的补充数据描述一个或多个样本在MP4视频文件中的位置。在下文中将参考图2进一步详细地描述文件头。\n[0038] 在另一例子中,前端接口102从客户端设备115接收对内容文件中的一个或多个样本的请求。例如,内容文件是MP4视频文件并且MP4视频文件中的样本包括音频样本和视频样本中的一个或多个。在一个实施例中,音频样本对应于MP4视频文件中的音频帧并且视频样本对应于MP4视频文件中的视频帧。在下文中将参考图2进一步描述内容文件中的样本。\n在一个实施例中,前端接口102从客户端设备115接收对诸如视频文件的内容文件的请求。\n[0039] 在一个实施例中,前端接口102从视频派发模块104接收所检索的数据和/或视频文件中的一个或多个样本。前端接口102通过网络105将所检索的数据和/或视频内容文件中的一个或多个样本传递到客户端设备115。例如,前端接口102接收包括MP4视频文件的文件头的数据并且将该数据发送到客户端设备115。\n[0040] 上传服务器108经由前端接口102从内容提供者118和/或在客户端设备115上操作的用户125接收视频文件。在一个实施例中,视频文件具有MP4文件格式。在一个实施例中,上传服务器108处理视频文件并且将视频文件存储在视频数据库116中。例如,上传服务器\n108向视频分配视频标识符(视频ID)并且将视频和视频ID存储在视频数据库116中。由上传服务器108处理视频文件的另外的示例包括执行下述中的一个或多个:格式化、压缩、元数据标记和内容分析等等。\n[0041] 视频数据库116是存储由资产托管站点100与用户125共享的视频文件的存储系统。在一个实施例中,视频数据库116存储由上传服务器108接收和/或处理的视频文件。例如,视频数据库116存储具有MP4文件格式的视频文件。在另一实施例中,视频数据库116存储视频文件的元数据。例如,视频数据库116存储下述中的一个或多个:视频标题、视频ID、描述、一个或多个关键字、标签信息和视频文件的管理权限。视频文件的管理权限包括下述中的一个或多个:删除视频文件的权限、编辑有关视频文件的信息的权限以及将视频文件与广告相关联的权限等等。\n[0042] 视频搜索模块106包括当由处理器(未示出)执行时处理由前端接口105从使用客户端设备115的用户125接收的任何搜索查询的代码和例程。来自用户125的搜索查询包括例如识别用户125感兴趣浏览的视频的搜索标准,诸如关键字。在一个实施例中,视频搜索模块106使用搜索标准来查询在视频数据库116中存储的视频文件的元数据。视频搜索模块\n106经由前端接口102将搜索结果返回给客户端设备115。例如,如果用户125经由前端接口\n102将关键字搜索查询提供给视频搜索模块106,视频搜索模块106识别与关键字匹配的存储在视频数据库116中的视频并且将搜索结果(例如视频ID、标题、描述、所识别的视频的缩略图)返回给用户125。\n[0043] 视频派发模块104包括当由处理器(未示出)执行时处理对视频的请求并且将视频派发给客户端设备115的代码和例程。例如,视频派发模块104从客户端设备115的用户125接收查看视频的请求,至少部分地基于该请求从视频数据库116检索视频,并且经由前端接口102将该视频传送给客户端设备115。\n[0044] 在一个实施例中,当用户125点击指向视频的链接时,视频派发模块104从客户端设备115接收访问视频的请求。从客户端设备115接收的请求包括视频的视频ID。在一个实施例中,一旦用户点击用于该视频的链接,视频ID自动地包括在请求中。视频派发模块104使用视频ID来搜索和定位视频数据库116中的视频。一旦定位了所请求的视频,视频派发模块104经由前端接口102将该视频发送到客户端设备115。\n[0045] 在一个实施例中,将视频呈现给客户端设备115的用户125。还将诸如视频的标题和描述的与视频相关联的元数据呈现给用户125。在一个实施例中,视频派发模块104在将视频发送到客户端设备115后将视频的视频ID存储在用户数据库114中,使得用户125的视频查看历史存储在用户数据库114中。\n[0046] 在一个实施例中,视频派发模块104从客户端设备115接收对视频文件中的数据的请求。该请求包括视频的元数据,诸如视频ID、视频标题和视频的一个或多个关键字中的一个或多个。视频派发模块104至少部分地基于包括在请求中的元数据来搜索和定位视频文件。在一个实施例中,请求还包括描述视频文件中的数据的位置和/或长度的信息。视频派发模块104至少部分地基于描述视频文件中的数据的位置和/或长度的信息从视频文件搜索数据。然后,视频派发模块104经由前端接口102将该数据传送到客户端设备115。\n[0047] 在另一实施例中,视频派发模块104从客户端设备115接收对视频文件中的一个或多个样本的请求。类似地,该请求包括视频的元数据。视频派发模块104至少部分地基于请求中的元数据来定位视频文件。该请求还指示视频文件中的一个或多个样本的位置和/或长度。视频派发模块104至少部分地基于该请求从视频文件检索一个或多个样本。然后,视频派发模块104将视频文件中的一个或多个样本发送到客户端设备115。\n[0048] 用户数据库114是存储与任何用户相关联的数据和/或信息的存储系统。例如,用户数据库114存储由用户125上传的视频文件的视频ID,使得在用户数据库114中保存用户\n125的视频上传历史。用户数据库114还存储用户已经从视频数据库116访问以便查看的视频文件的视频ID,使得将用户125的视频查看历史存储在用户数据库114中。在一个实施例中,通过使用唯一用户名和密码和/或通过使用用户125n的互联网协议地址,识别用户125。\n[0049] 缩略图生成器112包括当由处理器(未示出)执行时生成视频的缩略图的代码和例程。缩略图是表示资产托管站点100上的视频的图像。例如,缩略图生成器112分析视频并且从视频选择帧作为缩略图。在一个实施例中,缩略图生成器112提供视频的一个或多个图像并且允许发布者(例如内容提供者118或使用客户端设备115上传视频的用户125)选择一个图像作为缩略图。\n[0050] 图形数据存储194是存储用于生成图形用户界面(“GUI”)以显示给客户端设备115的用户125的图形代码的存储系统。\n[0051] GUI模块126包括当由处理器(未示出)执行时生成用户界面的代码或例程,所述用户界面向用户显示信息和/或允许用户经用户界面输入信息。在一个实施例中,GUI模块126提供下述功能,用于从用户125接收输入和/或向用户125显示信息。GUI模块126通信地耦接到前端接口102。GUI模块126从图形数据存储194检索图形数据并且将图形数据传送到前端接口102。前端接口102与网络105通信来将图形数据传送到通信地耦接到网络105的基于处理器的计算设备。\n[0052] 例如,前端接口102将图形数据传送到内容提供者118和客户端设备115中的一个或多个。内容提供者118和客户端设备115中的一个或多个接收图形数据并且生成在通信地耦接到内容提供者118和/或客户端设备115的显示设备(例如监视器)上显示的GUI。该GUI显示在显示设备上并且由人工用户(例如诸如用户125的用户)查看。GUI包括一个或多个字段、下拉框或由人工用户使用的其他常规图形来提供输入,该输入然后被经由网络105传送到资产托管站点100。输入到GUI中的数据由前端接口102接收并且存储在视频数据库116和用户数据库114中的一个或多个。\n[0053] 客户端设备115是任何计算设备。例如,客户端设备115是个人计算机(“PC”)、智能电话、平板电脑(或平板PC)等等。本领域的普通技术人员将意识到其他类型的客户端设备\n115是可能的。在一个实施例中,系统130包括不同类型的客户端设备115的组合。例如,多个其他客户端设备115是个人计算机、智能电话和平板电脑的任意组合。\n[0054] 在一个实施例中,客户端设备115包括浏览器198。浏览器198包括在客户端设备\n115的存储器(未示出)中存储并且由客户端设备115的处理器(未示出)执行的代码和例程。\n例如,浏览器198生成诸如Google Chrome的浏览器应用。在一个实施例中,浏览器198包括flash播放器188以及fash播放器188包括格式模块150。\n[0055] 尽管格式模块150被图示为flash播放器188的一部分,但本领域的普通技术人员将意识到格式模块150能驻留在浏览器198或资产托管站点100上。尽管参考客户端设备\n115a示出浏览器198、flash播放器188和格式模块150,但本领域的普通技术人员将意识到任何客户端设备115可以包括这些元件。尽管参考客户端设备115示出一个浏览器198、一个flash播放器188和一个格式模块150,本领域的普通技术人员将意识到任意数量的浏览器\n198、flash播放器188和格式模块150能包括在客户端设备115中。\n[0056] 在一个实施例中,flash播放器188包括当由客户端设备115的处理器(未示出)执行时生成嵌入在诸如播放诸如视频的内容文件的Google Chrome的浏览器应用程序中的flash播放器界面。例如,响应用户125请求查看flash播放器界面中的视频,flash播放器\n188生成播放FLV文件格式的视频的flash播放器界面。\n[0057] 在一个实施例中,格式模块150包括当由客户端设备115中的处理器(未示出)执行时将诸如视频文件的内容文件从第一格式转换成第二格式的代码和例程。例如,格式模块\n150将视频文件从MP4文件格式转换成FLV文件格式。\n[0058] 在一个实施例中,当用户125点击以查看第二格式的视频文件时,如果第二格式的视频文件不可用,格式模块150生成对第一格式的诸如视频文件的内容文件中的数据的请求。例如,当用户请求查看要求FLV文件格式的flash播放器界面中的视频文件时,如果在资产托管站点100中没有可用的FLV格式的视频文件,格式模块150生成对在资产托管站点100中存储的MP4格式的视频文件的数据的请求。在一个实施例中,请求包括视频ID、视频标题和视频文件的一个或多个关键字中的一个或多个。在另一实施例中,请求还包括描述视频文件中的数据的位置和/或长度的信息。格式模块150经由前端接口102将请求传送到资产托管站点100中的视频派发模块104。在一个实施例中,格式模块150从视频派发模块104接收视频文件中的数据并且处理该数据。例如,格式模块150解析数据并且将视频文件从MP4文件格式转换成FLV文件格式。然后,格式模块150将FLV文件发送到flash播放器188的其他组件来在用于用户125的客户端设备115上呈现该视频。\n[0059] 格式模块150\n[0060] 现在参考图2,描述更详细地示出格式模块150的客户端设备115的实施例。具体地,图2描述处理器235、存储器237、存储设备280和包括格式模块150的flash播放器188。\n[0061] 在一个实施例中,处理器235是客户端设备115的计算机处理器,并且能用来执行代码和例程。处理器235包括算术逻辑单元、微处理器、通用控制器或一些其他处理器阵列来执行计算及执行代码和例程。处理器235耦接到总线220,用于与客户端设备115的其他组件通信。处理器235处理数据信号并且可以包括包含复杂指令集计算机(CISC)体系结构、精简指令集计算机(RSIC)体系结构或实现指令集的组合的体系结构的各种计算体系结构。尽管在图2中仅示出单个处理器,可以包括多个处理器。处理能力可以限于支持图像的显示及捕捉和传输图像。处理能力可以足以执行更复杂任务,包括各种类型的特征抽取和采样。对本领域的技术人员来说显而易见的是,其他处理器、操作系统、传感器、显示器和物理配置均可能的。处理器235经由信号线路236通信地耦接到总线220。\n[0062] 存储器237是非瞬时存储介质。存储器237存储可以由处理器235执行的指令和/或数据。例如,在一个实施例中,存储器237存储格式模块150。存储器237通信地耦接到总线\n220,用于与客户端设备115的其他组件通信。在一个实施例中,在存储器237上存储的指令和/或数据包括用于执行在此所述的技术中的任何一个和/或全部的代码。存储器237是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存或本领域已知的某个其他存储器设备。在一个实施例中,存储器237还包括非易失存储器或类似的永久存储设备和介质,诸如硬盘驱动、软盘驱动、CD-ROM设备、DVD-ROM设备、DVD-RAM设备、DVD-RW设备、闪存设备、或本领域已知的某个其他非瞬时存储设备。存储器237经由信号线路238通信地耦接到总线220。在一个实施例中,存储器237存储格式模块150和包括在格式模块150中的子模块202、204、206、208、210和212。\n[0063] 存储设备280是存储由格式模块150或其子模块生成和/或接收的数据以及执行下述功能所必要的其他数据的非瞬时存储器。在下文中将参考图3进一步详细地描述存储设备280。\n[0064] 在一个实施例中,格式模块150包括通信接口202、获取模块204、解析器206、表生成器208、确定模块210和封装模块212。\n[0065] 通信接口202包括用于处理获取模块204、解析器206、表生成器208、确定模块210、封装模块212、客户端设备115的其他组件(未示出)以及资产托管站点100的组件之间的通信的代码和例程。在一个实施例中,通信接口202是可由处理器235执行的指令集。在另一实施例中,通信端口202存储在存储器237中并且可由处理器235访问和执行。在另一实施例中,通信接口202适合于经由信号线路222与客户端设备115的处理器235和其他组件协作和通信。通信接口202经由信号线路222通信地耦接到总线220。\n[0066] 在一个实施例中,当用户125请求查看嵌入在诸如Google Chrome的浏览器中的flash播放器界面中的视频文件时,通信接口202从客户端设备115的其他组件(未示出)接收消息。通信接口202将指示用户125的请求的消息传递到获取模块204。在另一实施例中,通信接口202从获取模块204接收对诸如视频文件的内容文件中的数据的请求,并且经由前端接口102将请求传送到包括在资产托管站点100中的视频派发模块104。在另一实施例中,通信接口202从确定模块210接收对内容文件中的一个或多个样本的请求。通信接口202经由前端接口102将该请求发送到资产托管站点100中的视频派发模块104。\n[0067] 在一个实施例中,通信接口202经由前端接口102从视频派发模块104接收内容文件中的数据。例如,数据包括用于诸如视频文件的内容文件的一个或多个文件头。通信接口\n202将所接收的数据发送到用于解析数据的解析器206。在另一实施例中,通信接口202经由前端接口102从视频派发模块104接收内容文件中的一个或多个样本。通信接口202将所接收的一个或多个样本传递到确定模块210来解析一个或多个样本。\n[0068] 在一个实施例中,通信接口202还与客户端设备115的封装模块212和其他组件(未示出)通信来将封装模块212的输出(具有转换的文件格式的内容文件,诸如FLV文件)传递给客户端设备115的其他组件(未示出),诸如flash播放器188的一些相关组件。这样,能在flash播放器界面中播放内容文件。\n[0069] 在一个实施例中,通信接口202还处理格式模块150中的其他子模块204、206、208、\n210和212之间的通信。例如,通信接口202与表生成器208和确定模块210通信来将表生成器\n208的输出(一个或多个内容表)传递到确定模块210。然而,为清楚和方便起见,该描述可能有时省略提及通信接口202。例如,为清楚和方便目的,上述情形可以被描述为表生成器208将一个或多个内容表传递给确定模块210。\n[0070] 获取模块204包括用于从资产托管站点100获取内容文件中的数据的代码和例程。\n在一个实施例中,获取模块204是可由处理器235执行来提供如下所述的用于从资产托管站点100获取内容文件中的数据的功能的指令集。在另一实施例中,获取模块204存储在存储器237中并且可由处理器235存取和执行。在另一实施例中,获取模块204适合于经由信号线路224与客户端设备115的处理器235和其他组件协作和通信。获取模块204经由信号线路\n224通信地耦接到总线220。\n[0071] 在一个实施例中,获取模块204响应于接收指示用户125请求查看第二格式的内容文件的消息,生成对第一格式的内容文件的数据的请求。例如,当用户125点击包括在flash播放器界面中的播放列表中的指向FLV格式视频的链接时,获取模块204从通信接口202接收指示用户125请求查看flash播放器界面中的视频的消息。至少部分地基于所接收的消息,如果在资产托管站点100中没有可用的FLV格式的这样的视频文件,获取模块204生成对在资产托管站点100中存储的MP4格式的视频文件的数据的请求。例如,获取模块204从所接收的消息检索视频文件的元数据(诸如视频ID、视频标题和关键字)并且生成包括元数据的请求。\n[0072] 在另一实施例中,获取模块204定期地、诸如每预定时间间隔(例如每天、每周、每月)地生成对第一格式的内容文件的数据的请求。在另一实施例中,一旦由客户端设备115的用户125或由内容提供者118上传MP4视频文件,获取模块204生成对诸如MP4视频文件的具有第一格式的内容文件中的数据的请求。\n[0073] 在一个实施例中,请求包括视频的视频ID、视频标题和关键字中的一个或多个。在另一实施例中,请求还包括描述数据的位置和长度中的一个或多个的信息。例如,请求包括开始字节、结束字节、开始时间和结束时间中的一个或多个来指示所请求的数据的位置。在另一示例中,请求包括所请求的数据的字节长度(诸如2兆字节)和时间长度(诸如3秒)中的一个或多个。\n[0074] 在一个实施例中,获取模块204将对第一格式的内容文件中的数据的请求传送到通信接口202,以及通信接口202经由网络105将请求传递到资产托管站点100中的视频派发模块104。\n[0075] 解析器206包括用于解析用于一个或多个文件头的内容文件中的数据的代码和指令。在一个实施例中,解析器206是可由处理器235执行来提供下述的用于对内容文件中的数据解析一个或多个文件头的功能的指令集。在另一实施例中,解析器206存储在存储器\n237中并且可由处理器235访问和执行。在任一实施例中,解析器206适合于经由信号线路\n226与客户端设备115的处理器235和其他组件协作和通信。解析器206经由信号线路226通信地耦接到总线220。\n[0076] 在一个实施例中,解析器206通过通信接口202从资产托管站点100接收第一格式的内容文件中的数据。解析器206以字节级对数据解析一个或多个文件头。例如,内容文件是MP4视频文件。解析器206以字节级对数据解析用于MP4视频文件的文件头。在一个实施例中,文件头包括描述MP4视频文件中的一个或多个样本(诸如视频样本、音频样本)的位置的补充数据(诸如字节数目)。例如,文件头包括指示MP4视频文件中的一个或多个样本的字节偏移量和时间偏移量中的一个或多个的1兆字节。在另一实施例中,文件头还包括指示在样本是视频样本的情况下样本的字节、样本的长度、样本的运动特征以及有关样本的任何其他特征中的一个或多个的多个字节。\n[0077] 在一个实施例中,解析器206将所解析的数据发送到表生成器208。例如,解析器\n206将包括补充数据的一个或多个文件头发送到表生成器208来基于一个或多个文件头生成一个或多个内容表。在一个实施例中,解析器206将一个或多个文件头发送到存储设备\n280以存储。\n[0078] 在一个实施例中,解析器206接收内容文件的一个或多个样本并且基于包含样本的描述的一个或多个内容表来解析样本。在下文中将参考表生成器208和确定模块210来进一步详细地描述内容表和样本。\n[0079] 表生成器208包括用于至少部分地基于一个或多个文件头来生成一个或多个内容表的代码和指令。在一个实施例中,表生成器208是可由处理器235执行来提供下述的用于至少部分地基于一个或多个文件头来生成一个或多个内容表的功能的指令集。在另一实施例中,表生成器208存储在存储器237中并且可由处理器235访问和执行。在任一实施例中,表生成器208适合于经由信号线路228与客户端设备115的处理器235和其他组件协作和通信。表生成器208经由信号线路228通信地耦接到总线220。\n[0080] 在一个实施例中,表生成器208从解析器206接收包括一个或多个文件头的解析数据。在另一实施例中,表生成器208从存储设备280检索一个或多个文件头。在任一实施例中,表生成器208至少部分地基于一个或多个文件头来生成一个或多个内容表。\n[0081] 例如,表生成器208生成包含一个或多个条目的内容表。内容表中的每一条目对应于内容文件中的一个样本。表生成器208使用包括在文件头中的补充数据来扩增内容表中的一个或多个条目。例如,内容表中的条目包括样本类型(诸如视频和音频)、字节偏移量(例如内容文件中的样本的开始字节)、字节长度、时间偏移量(例如样本对应的视频或音频帧的开始时间)和运动特征(例如样本对应的视频帖的特征,诸如关键帧和中间帧)中的一个或多个。在下文中将参考图3和4进一步详细地描述内容表。\n[0082] 在一个实施例中,表生成器208对样本分配样本标识符(“样本ID”)。例如,表生成器208为视频文件中的样本分配指示视频文件中的样本的索引的样本ID。表生成器208利用样本ID扩增对应于视频文件中的样本的内容表中的条目。在另一实施例中,表生成器208生成内容表的表标识符(“表ID”)。表生成器208在索引前附加表ID来形成用于该样本的样本ID。例如,表生成器208生成用于视频文件的内容表并且对该内容表分配表ID。表生成器208使用表ID和样本的索引来生成用于视频文件中的样本的样本ID。在另一示例中,表生成器\n208对一个内容文件生成多于一个内容表。表生成器208对内容表分配表ID并且相应地生成用于样本的样本ID。\n[0083] 在一个实施例中,表生成器208还生成内容表的一个或多个表。例如,内容的表指示一个或多个内容表与一个或多个内容文件之间的关系。在内容表的一个条目中,例如,列出内容表ID来对应于引用诸如视频文件的内容文件的内容ID,诸如视频ID。\n[0084] 在一个实施例中,表生成器208将一个或多个内容表和/或内容的一个或多个表传送到确定模块210。在另一实施例中,表生成器208将一个或多个内容表和/或内容的一个或多个表发送到存储设备280以存储。在另一实施例中,表生成器208还将一个或多个内容表和/或内容的一个或多个表传送到封装模块212。\n[0085] 确定模块210包括至少部分地基于一个或多个内容表来确定内容文件中的一个或多个样本的代码和例程。在一个实施例中,确定模块210是可由处理器235执行来提供下述的用于确定内容文件中的一个或多个样本的功能的指令集。在另一实施例中,确定模块210存储在存储器237中并且可由处理器235访问和执行。在任一实施例中,确定模块210适合于经由信号线路230与客户端设备115的处理器235和/或其他组件的协作和通信。\n[0086] 在一个实施例中,确定模块210从表生成器208接收一个或多个内容表。在另一实施例中,确定模块210从存储设备280检索一个或多个内容表。在任一实施例中,确定模块\n210至少部分地基于一个或多个内容表来确定内容文件中的一个或多个样本。\n[0087] 视频内容文件中的样本对应于视频的帧,诸如视频帧和音频帧。对应于视频帧或音频帧的样本分别称为视频样本或音频样本。诸如MP4视频文件的内容文件中的样本包括多个字节。例如,MP4视频文件中的视频样本包括1,500-3,000个字节并且MP4视频文件中的音频样本包括150-300个字节。关键帧样本指示该样本表示的视频帧是关键帧。关键帧定义视频中的运动的转变的开始点或结束点。\n[0088] 在一个实施例中,确定模块210分析一个或多个内容表中的一个或多个条目并且确定内容文件中的一个或多个样本的位置。例如,确定模块210从内容表中的条目检索用于具有样本ID“1”的样本的字节偏移量(诸如200,000字节)和长度(诸如1,800字节)。然后,确定模块210分析所检索的信息和确定样本“1”在内容文件中的第200,000字节开始并且在第\n200,000字节后的1,800字节(例如第201,800字节)结束。\n[0089] 在一个实施例中,确定模块210还基于该确定从内容文件检索一个或多个样本。例如,确定模块210生成对诸如MP4格式的视频文件的内容文件中的一个或多个样本的请求并且经由通信接口202将该请求传送到资产托管站点100。在一个实施例中,对一个或多个样本的请求包括描述内容文件中的一个或多个样本的位置的信息。\n[0090] 在一个实施例中,确定模块210按由内容表中样本ID指示的顺序来检索一个或多个样本。在另一实施例中,确定模块210从内容文件检索预定数目的字节。预定数目的字节包括一个或多个样本。\n[0091] 在一个实施例中,确定模块210包括至少部分地基于一个或多个内容表来以字节级解析所检索的一个或多个样本的解析器(未示出)。在另一实施例中,确定模块210将所检索的一个或多个样本传送到解析器206。解析器206至少部分地基于一个或多个内容表来以字节级解析一个或多个样本。例如,在任一实施例中,根据字节偏移量、字节长度和一个或多个内容表中的其他特征,解析一个或多个样本。\n[0092] 封装模块212包括用于至少部分地基于来自内容文件的一个或多个样本生成一个或多个标签并且至少部分地基于标签来转换内容文件格式的代码和例程。在一个实施例中,封装模块212是可由处理器235执行来提供下述的用于至少部分地基于来自内容文件的一个或多个样本生成一个或多个标签并且至少部分地基于标签来转换内容文件格式的功能的指令集。在另一实施例中,封装模块212存储在存储器237中,并且可由处理器235访问和执行。在任一实施例中,封装模块212适合于经由信号线路232与客户端设备115的处理器\n235和其他组件协作和通信。封装模块210经由信号线路232通信地耦接到总线220。\n[0093] 在一个实施例中,封装模块212从确定模块210接收一个或多个解析的样本。在另一实施例中,封装模块212从解析器206接收一个或多个解析的样本。在任一实施例中,封装模块212至少部分地基于一个或多个所解析的样本来生成一个或多个标签。\n[0094] 标签包括一个或多个标签头和一个或多个样本。标签头包括描述一个或多个样本的数据。例如,标签包括标签头和样本。标签头包括标签类型、标签长度、时间偏移量和运动特征中的一个或多个。标签类型对应于样本的类型。例如,样本的类型包括音频和视频。标签长度对应于样本的长度以及时间偏移量是样本的时间偏移量。运动特征指示样本所对应的帧是关键帧还是中间帧。在一个实施例中,用于视频样本的标签头包括16字节。在另一实施例中,用于音频样本的标签头包括描述音频样本的特征的13个字节。\n[0095] 在一个实施例中,封装模块212至少部分地基于一个或多个内容表来生成一个或多个标签头。例如,封装模块212从存储设备280检索一个或多个内容表。在另一示例中,封装模块212从表生成器208接收一个或多个内容表。封装模块212使用内容表中的一个或多个条目来生成具有描述用于视频样本的特征的16个字节的标签头。标签头包括标签类型(例如样本的类型,诸如视频)、标签长度(例如样本的长度)、时间偏移量和运动特征。\n[0096] 在一个实施例中,封装模块212将一个或多个标签头附加在一个或多个样本前来形成标签。例如,封装模块212将用于视频样本的标签头附加在视频样本前来形成视频标签(例如具有视频类型的标签)。\n[0097] 在一个实施例中,封装模块212按顺序将一个或多个标签传送到flash播放器188的其他组件来在包括在诸如Google Chrome的浏览器应用中的flash播放器界面中播放视频文件。在另一实施例中,封装模块212将一个或多个标签发送到存储设备280以存储。\n[0098] 在一个实施例中,可选地,封装模块212生成脚本标签并且将脚本标签插入在一系列视频和音频标签中。脚本标签允许flash播放器188来增加当脚本标签被解码时将执行的回调函数。\n[0099] 存储设备280\n[0100] 图3是图示存储设备280的一个实施例的框图300。在所述的实施例中,存储设备\n280包括文件头数据302、内容表304和标签306。本领域的普通技术人员将意识到存储设备\n280能存储在图3中未示出的另外的数据,诸如视频文件中的样本。\n[0101] 文件头数据302是由获取模块204从资产托管站点100获取并且由解析器206解析的诸如视频文件的内容文件中的数据。在一个实施例中,文件头数据302包括用于在资产托管站点100中存储的诸如MP4视频文件的一个或多个内容文件的一个或多个文件头。在一个实施例中,文件头包括描述用于诸如MP4视频文件的内容文件中的一个或多个样本的一个或多个特征的补充数据。特征包括一个或多个样本的位置(例如一个或多个样本的字节偏移量)、一个或多个样本的类型(例如视频、音频)、一个或多个样本的长度、在一个或多个样本是视频样本的情况下一个或多个样本的运动特征以及有关一个或多个样本的任何其他特征中的一个或多个。\n[0102] 内容表304包括由表生成器208生成的一个或多个内容表。例如,表生成器208至少部分地基于从解析器206接收的一个或多个文件头来生成一个或多个内容表。在一个实施例中,表生成器208分析一个或多个文件头并且基于该分析来确定用于诸如MP4视频文件的内容文件中的一个或多个样本的一个或多个特征。表生成器208至少部分地基于用于诸如MP4视频文件的内容文件中的样本的所确定的一个或多个特征来生成一个或多个内容表。\n例如,内容表中的一个条目包括样本ID、样本类型、字节偏移量、长度、时间偏移量和样本的运动特征中的一个或多个。在下文中将参考图4描述内容表的一个示例。\n[0103] 在一个实施例中,内容表304还包括内容表中的一个或多个表。例如,内容表304包括存储一个或多个内容表与诸如MP4视频文件的一个或多个内容文件之间的一个或多个对应关系的内容的表。\n[0104] 标签306包括由封装模块212生成的标签。例如,封装模块212至少部分地基于一个或多个内容表来生成标签头。封装模块212将标签头加在相应的样本前来形成标签。因此,标签包括标签头和样本。在一个实施例中,标签头包括标签类型、标签长度、时间偏移量和运动特征中的一个或多个。\n[0105] 示例性内容表\n[0106] 使用从资产托管站点100检索的数据,格式模块150生成描述内容文件中的一个或多个样本的位置和/或其他特征的一个或多个内容表。例如,图4图示由格式模块150的表生成器208生成的内容表400的一个实施例。内容表400包括表ID 401。表ID识别内容表400。在一个实施例中,表ID包括在内容的表中来指示内容表400对应于内容文件,诸如视频文件。\n[0107] 内容表400还包括样本ID 402和样本特征404、406、408、410、412。例如,内容表400包括识别样本所对应的帧的类型的类型404。内容表400包括指示内容文件中的样本的起始字节的字节偏移量406。内容表400还包括识别样本的字节长度的长度408。在一个实施例中,内容表400包括指示样本对应的帧的起始时间的时间偏移量410。内容表400还包括运动特征412。如果用于样本的类型404是视频,其意味着样本对应于视频帧,用于该样本的运动特征412是分别指示视频帧是关键帧还是中间帧的“关键”或“中间”的。\n[0108] 本领域的普通技术人员将意识到内容表400可以包括与上面识别和图4中图示的不同的和/或附加的数据。\n[0109] 方法\n[0110] 图5-6描述由参考图1-4所述的系统执行的各种方法500和600。\n[0111] 图5是描述用于将内容文件从第一格式转换成第二格式的方法500的一个实施例的流程图。格式模块150检索502第一格式的内容文件。例如,内容文件是MP4视频文件格式的视频文件。在一个实施例中,格式模块150从资产托管站点100检索包括一个或多个文件头的MP4视频文件中的数据。\n[0112] 在步骤504,格式模块150解包(或解复用)第一格式的内容文件。在一个实施例中,格式模块150以字节级对诸如MP4视频文件的内容文件中的所检索的数据解析一个或多个文件头。格式模块150至少部分地基于一个或多个文件头来生成一个或多个内容表。然后,格式模块150至少部分地基于一个或多个内容表来检索和解析每个都包括一个或多个字节的内容文件中的一个或多个样本。以这种方式,格式模块150将诸如MP4视频文件的内容文件解包(或解复用)成一个或多个样本。\n[0113] 在步骤506,格式模块150将内容文件从第一格式转换成第二格式。例如,格式模块\n150通过封装(或复用)一个或多个样本将内容文件从MP4视频文件格式转换成FLV文件格式。在一个实施例中,格式模块150至少部分地基于一个或多个样本通过将标签头附加在每一样本前来生成一个或多个标签。通过基于MP4视频文件中的一个或多个样本的位置按顺序排列一个或多个标签,格式模块150将MP4视频文件转换成FLV文件。\n[0114] 图6是描述用于将内容文件从第一格式转换成第二格式的另一方法600的一个实施例的流程图。获取模块204从第一格式的内容文件获取602数据。在一个实施例中,响应于用户125请求查看第二格式的内容文件的请求,如果第二格式的内容文件不可获得,获取模块204生成对第一格式的内容文件中的数据的请求。获取模块204通过通信接口202将该请求发送到资产托管站点100来从资产托管站点100中存储的第一格式的内容文件获取数据。\n[0115] 在步骤604,解析器206解析从第一格式的内容文件获取的数据。例如,解析器206经由通信接口202从资产托管站点100接收诸如MP4视频文件的第一格式的内容文件中的数据。解析器206以字节级对数据解析一个或多个文件头。在一个实施例中,MP4视频文件头包括描述MP4视频文件中一个或多个样本的位置的补充数据。在另一实施例中,MP4视频文件头还包括指示一个或多个样本的类型、一个或多个样本的长度、在一个或多个样本是视频样本的情况下一个或多个样本的运动特征和有关一个或多个样本的任何其他特征中的一个或多个的补充数据。\n[0116] 在步骤606,表生成器208生成一个或多个内容表。在一个实施例中,表生成器208至少部分地基于一个或多个文件头来生成内容表。例如,表生成器208生成包括样本类型、样本的字节偏移量、样本的长度、样本的时间偏移量和在样本对应于视频文件中的视频帧的情况下样本的运动特征中的一个或多个的内容表。\n[0117] 在步骤608,确定模块210至少部分地基于一个或多个内容表来确定内容文件中的一个或多个样本。例如,根据在一个或多个内容表中指示的一个或多个样本的位置,确定模块210确定诸如MP4视频文件的内容文件中的一个或多个样本。\n[0118] 在步骤610,确定模块210从内容文件检索一个或多个样本。例如,确定模块210至少部分地基于MP4视频文件中一个或多个样本的位置的确定来从资产托管站点100检索MP4视频文件中的一个或多个样本。\n[0119] 在步骤612,确定模块210至少部分地基于一个或多个内容表来解析一个或多个样本。在一个实施例中,确定模块210包括至少部分地基于一个或多个内容表来解析一个或多个样本的解析器。在另一实施例中,确定模块210将所检索的一个或多个样本发送到解析器\n206,以至少部分地基于一个或多个内容表来解析一个或多个样本。在任一实施例中,至少部分地基于字节偏移量、字节长度和包括在一个或多个内容表中的其他特征中的一个或多个,以字节级解析一个或多个样本。\n[0120] 在步骤614,封装模块212生成用于一个或多个样本的一个或多个标签头。例如,封装模块212将13或16个字节生成为分别描述用于音频样本或视频样本的特征的标签头。\n[0121] 在步骤616,封装模块212至少部分地基于一个或多个样本和一个或多个标签头来生成一个或多个标签。例如,封装模块212将标签头附加在相应的样本前来形成标签。\n[0122] 在步骤618,封装模块212至少部分地基于一个或多个标签将内容文件从第一格式转换成第二格式。例如,通过基于诸如MP4视频文件的第一格式的内容文件中一个或多个样本的位置,按顺序排列一个或多个标签,封装模块212将内容文件从诸如MP4格式的第一格式转换成诸如FLV格式的第二格式。\n[0123] 为图示和描述目的呈现了说明书的实施例的上述描述。不旨在穷举或将说明书限于所公开的准确形式。鉴于上述教导,许多改进和变形是可能的。旨在本公开内容的范围不受该详细描述限定,而是由本申请的权利要求限定。熟悉本领域的技术人员将理解到可以以其他特定形式体现本说明书,而不背离其精神或实质特征。同样地,模块、例程、特征、属性、方法和其他方面的具体命名和划分不是强制或重要的,以及实现本说明书或其特征的机制可以具有不同名称、划分和/或格式。此外,对相关领域的普通技术人员来说显而易见的是,本公开的模块、例程、特征、属性、方法和其他方面能实现为软件、硬件、固件或三个的任意组合。而且,在将本说明书的组件(其示例是模块)实现为软件的情况下,组件能实现为独立的程序、更大程序的一部分、多个分立的程序、静态或动态链接库、内核可加载模块、设备驱动器和/或计算机编程领域中的技术人员现在或将来所已知的每一个和任何其它方式。此外,本公开绝不限于以任何具体编程语言、或用于任何特定操作系统或环境的实现。\n因此,本公开旨在是说明性的而不是限制说明书的范围,其范围在所附权限要求书中阐述。
法律信息
- 2018-06-22
- 2018-02-16
著录事项变更
申请人由谷歌公司变更为谷歌有限责任公司
地址由美国加利福尼亚州变更为美国加利福尼亚州
- 2015-09-09
实质审查的生效
IPC(主分类): G06F 7/00
专利申请号: 201380054728.6
申请日: 2013.09.04
- 2015-06-24
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2010-02-10
|
2008-08-08
| | |
2
| |
2007-04-18
|
2006-11-21
| | |
3
| |
2010-02-24
|
2008-08-18
| | |
4
| |
2011-06-01
|
2009-05-05
| | |
5
| |
2004-07-28
|
2003-01-10
| | |
6
| |
2012-04-04
|
2010-09-14
| | |
7
| |
2007-02-21
|
2004-12-08
| | |
8
| |
2010-08-11
|
2009-02-09
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |