Adobe Flash Video File Format Specification
Version 10.1
Introduction
Flash®是Web上动态媒体的事实标准,支持多种媒体格式,包括两种用于提供同步音频和视频流的核心容器格式:
F4V, for H.264/AAC–based content, and
FLV, for other supported codecs such as Sorensen Spark and On2 VP6.
本文档提供Adobe®产品支持的F4V和FLV视频文件格式的技术格式信息。
Adobe认真考虑所有对视频文件格式规范的反馈。 通过flashformat@adobe.com将规范中任何不清楚或可能错误的信息通过电子邮件发送给Adobe。 所有此类电子邮件提交均应遵守使用条款中的提交材料指南,网址为www.adobe.com/misc/copyright.html。
The F4V Video File Format
F4V视频文件格式的开放规范建立在标准IEC 14496-12(MPEG-4 Part 12)ISO基础媒体文件格式之上。 它具有灵活的结构,并定义了特定支持的编解码器和扩展。 因此,F4V视频文件格式简化了动态媒体软件的实现,促进了工具,服务和客户端之间的互操作性。
从Flash Player 9 Update 3(9,0,115,0)开始,Flash Player可以播放F4V文件。 有关F4V视频文件格式的详细信息,请参阅第1节.F4V文件格式
有关在F4V文件中使用元数据的信息,请参阅第3节.F4V元数据。
New in the F4V Video File Format
Flash Player 10,1,53,64的发布增加了Flash F4V视频文件格式中以下功能和框的支持。 斜体框由Adobe Systems定义。
新功能提示点,加密,提示,HTTP流媒体
New Boxes
abst adaf adkm aeib afra afrt ahdr akey amhp amto aprm aps |
The FLV Video File Format
FLV文件对同步的音频和视频流进行编码。 FLV文件中的音频和视频数据的编码方式与SWF文件中的音频和视频相同。本文档描述了FLV版本1.参见附录E. FLV文件格式
注: |
1. F4V文件格式
1.1. Overview
Flash Player 9 Update 3(9,0,115,0)及更高版本可以播放F4V文件。 F4V格式基于ISO / IEC 14496-12:2008 ISO基础媒体文件格式。
将F4V格式与ISO基础媒体文件格式区分开来的很大一部分涉及F4V可以存储的元数据格式。 本章讨论除元数据之外的F4V格式的所有方面,第3节F4V元数据对此进行了介绍。
1.2. 简单数据类型
This following data types are used in F4V files.
Type Definition |
与SWF相比,多字节整数应以big-endian字节顺序存储,SWF使用little-endian字节顺序。 例如,作为SWF文件格式的UI16,表示数字300(0x12C)的字节序列是0x2C 0x01; 作为F4V文件格式的UI16,表示数字300的字节序列是0x01 0x2C。
1.3. F4V box format
F4V文件的基本构建块是具有以下BOX格式的框:F4V框
Field Type Comment |
每个框结构以一个BoxHeader结构开头:BoxHeader
Field Type Comment |
许多盒子的长度都小于4GB,可以将它们的大小存储在totalSize字段中。通过将32位totalSize字段设置为1并以extendedSize存储64位大小,该格式还支持非常大的框。每个框都用32位类型标识。对于大多数框,此32位类型可兼作人可读的四字符ASCII代码或4cc,例如“moov”(0x6d6f6f76)和“mdat”(0x6d646174)。
箱有效载荷紧跟箱头。有效负载的字节大小等于框的总大小减去8字节或16字节,具体取决于头的大小。
有关更多信息,请参见ISO/IEC 14496-12:2008第4.2节。
1.4. f4v框层次
Table 1. The F4V Box Hierarchy
Box Type Required? Short Description |
1.5. 示例描述框层次结构
Table 2 shows the hierarchy within the Sample Description box.
Box Name Required? Short Description |
1.6. 处理不支持的boxes
ISO规范ISO/IEC 14496-12:2008和Apple QuickTime规范定义了本规范中未包含的其他盒子类型。这些框类型不是f4v文件格式的一部分,f4v播放器不需要支持它们。F4V播放器应忽略不支持的盒子及其内容,并继续播放文件。
1.7. 排序
为了获得最佳的播放器性能,F4V文件中所需的顶级框应按以下顺序排列:
File Type (ftyp),
Movie (moov),
. Media Data (mdat).
FTYP箱应位于MOOV和MDAT箱以及任何其他“重要”可变尺寸箱之前。ftyp框应该是文件中的第一个框,或者尽可能早地位于文件中。
虽然Flash播放器可以同时播放MOOV和MDAT盒的订单,但MOOV盒应始终位于MDAT盒之前,因为这样可以更快地启动和进行流式处理。
许多f4v文件创建工具以次优的顺序放置方框以便播放,在这种情况下,应应用后处理步骤以推荐的顺序放置方框。
有关HTTP流支持所需的框和框顺序,请参阅附录C.HTTP流:文件结构。
1.8. Supported Media Types
下表描述了可以封装在F4V文件中的媒体类型。
1.8.1. Supported audio types
Media type Comments |
当音频编解码器为AAC时,示例表的STSD框中会出现一个ESDS框。此框包含AAC解码器解码流所需的初始化数据。有关此框结构的更多信息,请参见ISO/IEC 14496-3。
1.8.2. Supported video types
Media type Comments |
1.8.3. Supported data types>
Media type Comments
Text 文本(0x74657874)或tx3g(0x74783367)
的媒体类型表示曲目包含通过ActionScript提供的文本数据。
AMF0 媒体类型amf0(0x616d6630)表示该曲目包含与操作脚本消息格式
(amf)的原始版本相对应的数据。
AMF3 媒体类型amf3(0x616d6633)表示该曲目包含与操作脚本消息格式(amf)版本3对应的数据。
2. F4V Box Definitions
Media type Comments |
定义了f4v文件格式支持的框。
2.1. File Type box
Box type: ‘ftyp’
Container: File
Mandatory: Yes
Quantity: One
f4v格式基于iso mpeg4格式,而iso mpeg4格式又基于Apple QuickTime容器格式。格式的子集支持不同的功能。文件类型(ftyp)框有助于识别程序播放特定文件所需支持的功能。
FTYP箱应尽早放置,并应位于任何可变长度箱之前。
flash player对ftyp框没有任何限制。如果文件包含Flash播放器可以解码的数据,Flash播放器会尝试播放。
ftyp box
Field Type Comments |
For more information, see section 4.3 of ISO/IEC 14496-12:2008.
2.2. 渐进式下载信息框
Box type: ‘pdin’
Container: File
Mandatory: No
Quantity: One
渐进式下载信息(PDIN)框定义有关渐进式下载的信息。pdin框的有效负载提供了一些提示,提示玩家在安全开始播放之前要下载多少数据。
pdin框应尽可能早地放置在文件中,位于文件类型(ftyp)框之后,以获得最大的实用性。
pdin box
Field Type Comment |
For more information, see section 8.1.3 of ISO/IEC 14496-12:2008.
2.3. Movie box
Box type: ‘moov’
Container: File
Mandatory: Yes
Quantity: One
Movie(moov)框实际上是一个f4v文件的“头”。MOOV框本身包含一个或多个其他框,而其他框又包含定义F4V数据结构的其他框。
moov box
Field Type Comment |
For more information, see section 8.2.1 of ISO/IEC 14496-12:2008.
2.4. Movie Header box
Box type: ‘mvhd’
Container: Movie box (‘moov’)
Mandatory: Yes
Quantity: One
Movie标题(MVHD)框定义应用于整个F4V文件的播放信息。MVHD箱应首先放置在其容器中。
mvhd box
Field Type Comment |
For more information, see section 8.2.2 of ISO/IEC 14496-12:2008.
2.5. Track box
Box type: ‘trak’
Container: Movie box (‘moov’)
Mandatory: Yes
Quantity: One or more
每个trak框对应于f4v文件中的单个媒体曲目,并包含进一步定义媒体曲目属性的框。
trak box
Field Type Comment |
For more information, see section 8.3.1 of ISO/IEC 14496-12:2008.
2.5.1. Track Header box
Box type: ‘tkhd’
Container: Movie box (‘trak’)
Mandatory: Yes
Quantity: One
The Track Header (TKHD)框描述磁道的主要属性。TKHD箱应首先放在其容器中。
tkhd box
Field Type Comment |
For more information, see section 8.6.5 of ISO/IEC 14496-12:2008.
2.5.2. Edit box
Box type: ‘edts’
Container: Track box (‘trak’)
Mandatory: No
Quantity: One
编辑(EDTS)框将演示时间线映射到媒体时间线,因为它存储在F4V文件中。EDTS框是编辑列表的容器。
如果文件不包含EDTS框,则会隐式地对这些时间线进行一对一映射。EDTS框应位于媒体(MDIA)框之前。
edit box
Field Type Comment |
For more information, see section 8.6.5 of ISO/IEC 14496-12:2008.
2.5.2.1. Edit List box
Box type: ‘elst’
Container: Edit box (‘edts’)
Mandatory: No
Quantity: One
tkhd box
编辑列表(ELST)框以编辑列表条目的形式包含显式时间线图。ELST框中的每个条目通过以下方式之一定义了演示时间线的一部分:
-通过映射媒体时间表的一部分
-通过指示空时间(即间隙)
-通过定义停留时间(即一个时间点停留一段时间的位置)
编辑列表框中的空编辑表示间隙。若要指定轨迹的起始偏移,请在轨迹的起始处插入空的编辑。
空编辑不应是曲目中的最后一个编辑。如果在“影片标题”框中指定的持续时间与曲目的实际持续时间不同,则会在曲目末尾放置一个隐式空编辑。
媒体应该在间隙后立即有一个关键帧。另外,flash播放器可以使用同步采样框中的数据在间隙后查找关键帧。
elst box
Field Type Comment |
For more information, see section 8.6.6 of ISO/IEC 14496-12:2008.
2.6. Media box
Box type: ‘mdia’
Container: Track box (‘trak’)
Mandatory: Yes
Quantity: One
tkhd box
媒体(MDIA)框包含定义媒体曲目属性的框
mdia box
Field Type Comment |
For more information, see section 8.4 of ISO/IEC 14496-12:2008.
2.6.1. Media Header box
Box type: ‘mdhd’
Container: Media box (‘mdia’)
Mandatory: Yes
Quantity: One
媒体标题(MDHD)框描述媒体曲目的属性。MDHD箱应首先放在其容器中。
mdhd box
Field Type Comment |
For more information, see section 8.4.2 of ISO/IEC 14496-12:2008.
2.6.2. Handler Reference box
Box type: ‘hdlr’
Container: Media box (‘mdia’)
Mandatory: Yes
Quantity: One
处理程序引用(HDLR)框声明跟踪中媒体数据的性质。hdlr框应位于媒体信息(minf)框之前。
hdlr box
Field Type Comment |
For more information, see section 8.4.3 of ISO/IEC 14496-12:2008.
2.7. Media Information box
Box type: ‘minf’
Container: Media box (‘mdia’)
Mandatory: Yes
Quantity: One
媒体信息(minf)框包含定义曲目媒体信息的框。
minf框包含一个媒体头框,其类型与曲目的handlerType相对应。
minf box
Field Type Comment |
For more information, see section 8.4.3 of ISO/IEC 14496-12:2008.
2.7.1. Video Media Header box
Box type: ‘vmhd’
Container: Media Information box (‘minf’)
Mandatory: Yes for a video track, otherwise no.
Quantity: One for a video track, otherwise zero.
视频媒体标题(vmhd)框包含视频媒体的一般信息,与所使用的编码无关。vmhd箱应首先放在其容器中。
vmhd box
Field Type Comment |
For more information, see section 8.4.5.2 of ISO/IEC 14496-12:2008.
2.7.2. Sound Media Header box
Box type: ‘smhd’
Container:Media Information box (‘minf’)
Mandatory: Yes for an audio track, otherwise no.
Quantity: One for an audio track, otherwise zero.
声音媒体标题框包含音频媒体的一般信息,与所使用的编码无关。SMHD盒应首先放在其容器中。
smhd box
Field Type Comment |
For more information, see section 8.4.5.3 of ISO/IEC 14496-12:2008.
2.7.3. Hint Media Header box
Box type: ‘hmhd’
Container: Media Information box (‘minf’)
Mandatory: Yes for a hint track, otherwise no.
Quantity: One for a hint track, otherwise zero.
提示媒体头(hmhd)框包含提示跟踪的一般信息,与所使用的协议无关。HMHD箱应首先放在其容器中。
hmhd box
Field Type Comment |
For more information, see section 8.4.5.4 of ISO/IEC 14496-12.
2.7.4. Null Media Header box
Box type: ‘nmhd’
Container:Media Information box (‘minf’)
Mandatory: Yes for metadata track, otherwise no.
Quantity: Zero for video, audio, and hint tracks, otherwise, one.
空媒体标题(NMHD)框包含视频和音频以外的曲目的常规信息。NMHD箱应首先放置在其容器中。
nmhd box
Field Type Comment |
For more information, see section 8.4.5.5 of ISO/IEC 14496-12.
2.7.5. Data Information box
Box type: ‘dinf’
Container: Media Information box (‘minf’)
Mandatory: Yes
Quantity: One
数据信息(DINF)框包含一个数据引用(DREF)框,用于声明媒体数据在某个磁道中的位置。DINF框应位于示例表(STBL)框之前。
dinf box
Field Type Comment |
For more information, see section 8.7.1 of ISO/IEC 14496-12.
2.7.6. Sample Table box
Box type: ‘stbl’
Container:Media Information box (‘minf’)
Mandatory: Yes
Quantity: One
“示例表”(STBL)框包含一些框,用于定义组成轨迹的示例的属性。
STBL框中的框应按以下顺序排列:样本描述(STSD)、解码时间到样本(STTS)、样本到块(STSC)、样本大小(STSZ)、块偏移(STCO或CO64)。
样本描述(STSD)框及其包含的框在第2.8节样本描述框结构中进行了规定。
stbl box
Field Type Comment |
For more information, see section 8.5 of ISO/IEC 14496-12:2008.
2.7.6.1. Decoding Time to Sample box
Box type: ‘stts’
Container:Sample Table box (‘stbl’)
Mandatory: Yes
Quantity: One
解码采样时间(STTS)框定义采样表的采样映射时间
stts box
Field Type Comment |
For more information, see section 8.6.1.2 of ISO/IEC 14496-12:2008.
2.7.6.2. Composition Time to Sample box
Box type: ‘ctts’
Container:Sample Table box (‘stbl’)
Mandatory: No
Quantity: One
合成时间到样本(CTTS)框定义了样本表的合成时间到样本映射
ctts box
Field Type Comment |
For more information, see section 8.6.1.3 of ISO/IEC 14496-12:2008.
2.7.6.3. Sample to Chunk box
Box type: ‘stsc’
Container: Sample Table box (‘stbl’)
Mandatory: Yes
Quantity: One
“采样到块(STSC)”框定义媒体轨采样表中的采样到块映射。
stsc box
Field Type Comment |
For more information, see section 8.7.4 of ISO/IEC 14496-12:2008.
2.7.6.4. Sample Size box
Box type: ‘stsz’
Container:Sample Table box (‘stbl’)
Mandatory: No
Quantity: One
“样本大小”(STSZ)框指定样本表中每个样本的大小。
tkhd box
Field Type Comment |
For more information, see section 8.7.3.2 of ISO/IEC 14496-12:2008.
2.7.6.5. Chunk Offset box
Box type: ‘stco’ or ‘co64’
Container:Sample Table box (‘stbl’)
Mandatory: Yes
Quantity: One
每个样本表框应包含一个STCO或CO64类型的区块偏移框。STCO和CO64框为示例表中的每个块定义块偏移量。
stco and co64 boxes
Field Type Comment |
For more information, see section 8.7.5 of ISO/IEC 14496-12:2008.
2.7.6.6. Sync Sample box
Box type: ‘stss’
Container:Sample Table box (‘stbl’)
Mandatory: No
Quantity: One
同步样本(STSS)框指定样本表中的哪些样本是同步样本。同步样本是可以安全查找的样本。如果轨迹是视频轨迹,则同步采样是不依赖任何其他帧的任何数据的关键帧或帧内帧。
如果样本表(STBL)框不包含STSS框,则轨道中的所有样本均应视为同步样本。
stss box
Field Type Comment |
For more information, see section 8.6.2 of ISO/IEC 14496-12:2008.
2.7.6.7. Independent and Disposable Samples box
Box type: ‘sdtp’
Container: Sample Table box (‘stbl’) or Track Fragment ‘traf
Mandatory: No
Quantity: One in each of the stbl and traf boxes
一个STBL或TRAF盒可分别包含一个独立的一次性样品盒(SDTP)。SDTP盒有助于实现诸如快进和随机访问等功能。sdtp框说明样本是否为i-picture,并提供有关样本中存在的帧依赖性和冗余编码的信息。表中的条目数与“样本大小”框中的sampleCount值相同。
stss box
Field Type Comment |
当存在冗余编码时,“sampleDependson”的值仅对应于主编码。参数“sampleisdependedon”独立于冗余编码的存在。
For more information, see section 8.6.4 of ISO/IEC 14496-12:2008.
2.8. Sample Description Box Structure
2.8.1. Sample Description box
Box type: ‘stsd’
Container:Sample Table box (‘stbl’)
Mandatory: Yes
Quantity: One
“示例说明”(STSD)框定义示例表的示例说明。STSD框可以包含一个曲目的多个描述,每个媒体类型包含一个描述。示例描述表提供了有关所用编码类型的详细信息,以及该编码所需的任何初始化信息。
表2显示了示例描述框中的层次结构。有关更多信息,请参见ISO/IEC 14496-12第8.5.2节。
stsd box
Field Type Comment |
Each DESCRIPTIONRECORD shall be one of the following boxes:
VisualSampleEntry, for HandlerType == ‘vide’ [video track],
AudioSampleEntry, for HandlerType == ‘soun’ [audio track],
MetaDataSampleEntry, for HandlerType == ‘meta’ [timed metadata track],
SampleEntry, for HandlerType == ‘data’ [data track],
HintSampleEntry, for HandlerType == ‘hint’ [hint track], or
AdobeMuxHintSampleEntry, for HandlerType == ‘hint’ [Adobe Multiplexed Hint Track]
2.8.2. VisualSampleEntry box
Box type: one of the video media types specified in Section 1.8.2 Supported video types
Container:Sample Table box (‘stsd’)
Mandatory: Yes for video tracks
Quantity: One for each video track
VisualSampleEntry框包含有关所用视频编码类型的详细信息,以及该编码所需的任何初始化信息。有关更多信息,请参见ISO/IEC 14496-12:2008第8.5.2节。
VisualSampleEntry box
Field Type Comment |
2.8.3. AudioSampleEntry box
Box type: one of the audio media types specified in Section 1.8.1 Supported audio types
Container:Sample Table box (‘stsd’)
Mandatory: Yes for audio tracks
Quantity: One
audioSampleEntry框包含有关所用音频编码类型的详细信息,以及该编码所需的任何初始化信息。有关更多信息,请参见ISO/IEC 14496-12:2008第8.5.2节。
AudioSampleEntry box
Field Type Comment |
2.8.4. MetaDataSampleEntry box
Box type: depends on protocol used
Container:Sample Table box (‘stsd’)
Mandatory: Yes for metadata tracks
Quantity: One for each metadata track
MetadataSampleEntry框包含有关所用元数据编码类型的详细信息,以及该编码所需的任何初始化信息。有关更多信息,请参见ISO/IEC 14496-12:2008第8.5.2节。
MetaDataSampleEntry box
Field Type Comment |
2.8.5. SampleEntry box
Box type: one of the data media types specified in Section1.8.3 Supported data types
Container:Sample Table box (‘stsd’)
Mandatory: Yes for data tracks
Quantity: One for each data track
sampleEntry框包含有关所用编码类型的详细信息,以及该编码所需的任何初始化信息。有关更多信息,请参见ISO/IEC 14496-12:2008第8.5.2节。
SampleEntry box
Field Type Comment |
For more information, see section 8.aaaaaaaaaaaaaaaaaaaaaaaaaaa of ISO/IEC 14496-12:2008.
2.8.6. HintSampleEntry box
Box type: ‘hint’
Container:Sample Table box (‘stsd’
Mandatory: Yes for hint tracks
Quantity: One for each hint track
hintsampleEntry(提示)框包含正在使用的流协议的适当声明性数据以及提示轨的格式。有关更多信息,请参见ISO/IEC 14496-12:2008第8.5.2节。
HintSampleEntry box
Field Type Comment |
2.8.7. Sample Descriptions for HTTP Streaming with Fragments
2.8.7.1. Adobe Mux Hint Sample Entry box
Box type: ‘rtmp’
Container:Sample Table box (‘stsd’)
Mandatory: Yes for HTTP streaming support with F4V fragments
Quantity: One for the hint track for HTTP streaming support with F4V fragments
Adobemux提示示例条目(rtmp)框描述了使用f4v片段的HTTP流中使用的提示轨。见附录C.HTTP流:文件结构。提示轨包含ADobemuxhintsamples。
rtmp box
Field Type Comment |
2.8.7.2. Adobe Mux Hint Process box
Box type: ‘amhp’
Container:Adobe Mux Hint Sample Entry (‘rtmp’)
Mandatory: Yes
Quantity: One
Adobe mux提示进程(amhp)框包含此曲目中使用的提示模式的描述
amhp box
Field Type Comment |
对于FLV兼容模式,trailerLengthField、lengthField、modeField、constructorCountField和packetCountField应为0。在这种情况下,使用即时节点提升提示模式。
2.8.7.3. Adobe Mux Time Offset box
Box type: ‘amto’
Container:Adobe Mux Hint Sample Entry (‘rtmp’)
Mandatory: No
Quantity: One
Adobe mux time offset(amto)框存储此文件中第一个提示示例的时间戳
amto box
Field Type Comment |
2.8.8. Sample Descriptions for Protected Contents
2.8.8.1. Encrypted Video box
Box type: ‘encv’
Container:Sample Table box (‘stsd’)
Mandatory: Yes for encrypted video tracks
Quantity: One for each encrypted video track
如附件D.2所述,加密视频(Encv)盒应为原始视觉样本,并附上“sinf”盒。有关更多信息,请参见ISO/IEC 14496-12:2008第8.12节。
2.8.8.2. Encrypted Audio box
Box type: ‘enca’
Container: Sample Table box (‘stsd’)
Mandatory: Yes for encrypted audio tracks
Quantity: One for each encrypted audio track
如附录D.2所述,加密音频(ENCA)盒应为原始音频采样中心,并附上“sinf”盒。有关更多信息,请参见ISO/IEC 14496-12:2008第8.12节。
2.8.8.3. Encrypted Data box
Box type: ‘encr’
<
Container:Sample Table box (‘stsd’)
Mandatory: Yes for encrypted video tracks
Quantity: One for each encrypted video track
如附录D.2所述,加密数据(encr)箱应为原始样品中心,并附上“sinf”箱。有关更多信息,请参见ISO/IEC 14496-12:2008第8.12节。
2.8.8.4. Protection Scheme Information box
Box type: ‘sinf’
Container:’encv’ or ‘enca’ Sample Description Entry for the protected track in ‘stsd’ box
Mandatory: Yes
Quantity: One
保护方案信息(sinf)框是一个容器框,其中包含了解所应用的加密转换及其参数以及查找密钥管理系统类型和位置等其他信息所需的所有信息。它还记录了媒体的原始(未加密)格式。它应附加到具有四个字符代码(“encv”、“enca”或“encr”)的任何示例条目中,以指示受保护的流。
sinf box
Field Type Comment |
For more information, see section 8.12 of ISO/IEC 14496-12:2008.
2.8.8.5. Original Format box
Box type: ‘frma’
Container:Protection Scheme Information box (‘sinf’)
Mandatory: Yes
Quantity: One
“原始格式”(FRMA)框指定原始样本的格式,例如,如果流包含受保护的MPEG-4视觉材料,“MP4V”。
frma box
Field Type Comment |
For more information, see section 8.12.2 of ISO/IEC 14496-12:2008.
2.8.8.6. Scheme Type box
Box type: ‘schm’
Container: Protection Scheme Information box (‘sinf’)
Mandatory: Yes
Quantity: One
方案类型(schm)框指定用于管理密钥和内容解密的DRM系统。由于媒体文件格式可能支持除Adobe的DRM以外的其他密钥管理系统,因此使用中的密钥管理系统应在schemetype字段中以四字符代码(4cc)表示。
schm box
Field Type Comment |
For more information, see section 8.12.5 of ISO/IEC 14496-12:2008.
2.8.8.7. Scheme Information box
Box type: ‘schi’
Container:Protection Scheme Information box (‘sinf’)
Mandatory: Yes
Quantity: One
方案信息(Schi)框是一个包含DRM密钥/权限管理系统特定信息的容器框。对于Adobe的DRM,此框应包括一个Adobe DRM密钥管理系统框。可能还有其他盒子。为了与其他DRM的互操作性,Adobe DRM密钥管理系统框可以位于方案信息框中的任何位置。
schi box
Field Type Comment |
For more information, see section 8.12.6 of ISO/IEC 14496-12:2008.
2.8.8.8. Boxes for Adobe's Protection Scheme
以下框由Adobe定义,未在ISO 14496-12:2008中记录。
2.8.8.8.1. Adobe DRM Key Management System box
Box type: ‘adkm’
Container:Scheme Information box (‘schi’)
Mandatory: Yes
Quantity: One
AdobeDRM密钥管理系统(ADKM)框指定加密和示例格式。
tkhd box
Field Type Comment |
2.8.8.8.2. Adobe DRM Header box
Box type: ‘ahdr’
Container:Adobe DRM Key Management System box (‘adkm’)
Mandatory: Yes
Quantity: One
AdobeDRM头(ahdr)框指定加密格式和方法的版本。
ahdr box
Field Type Comment |
2.8.8.8.3. Standard Encryption Params box
Box type: ‘aprm’
Container: Adobe DRM Header box (‘ahdr’)
Mandatory: Yes
Quantity: One
标准加密参数(APRM)框包含加密方法“标准”的参数。
tkhd box
Field Type Comment |
2.8.8.8.4. Encryption Information box
Box type: ‘aeib’
Container:标准加密参数框(‘aprm’)
Mandatory: Yes
Quantity: One
加密信息(AEIB)框指定用于加密样本的加密算法。
aeib box
Field Type Comment |
2.8.8.8.5. Key Information box
Box type: ‘akey’
Container:Standard Encryption Params box (‘aprm’)
Mandatory: Yes
Quantity: One
密钥信息(akey)框包含用于检索用于解密样本的密钥的信息。
这些框中包含的条目的详细信息以及DRM客户机用于检索密钥的机制超出了本规范的范围。
akey box
Field Type Comment |
2.8.8.8.6. Flash Access Params box
Box type: ‘flxs’
Container:Key Info box (‘akey’)
Mandatory: Yes, if AdobeDRMHeaderBox.Version == 2, else No
Quantity: One, if AdobeDRMHeaderBox.Version == 2, else Zero
flash access params(flxs)框包含用于检索用于解密样本的密钥的信息。
flxs box
Field Type Comment |
2.8.8.8.7. Adobe DRM Access Unit Format box
Box type: ‘adaf’
Container:Key Info box (‘adkm’)
Mandatory: Yes
Quantity: One
访问单元格式(ADAF)框指定放置在样本上的头的格式。
tkhd box
Field Type Comment |
2.9. Movie Extends box
Box type: ‘mvex’
Container:Movie box (‘moov’)
Mandatory: No
Quantity: One
如果f4v文件包含片段,则电影(moov)框包含一个电影扩展(mvex)框,否则没有mvex框。对于碎片,一个F4V文件应包含一个且仅一个MVEX盒。mvex框告诉读者此文件可能包含电影片段(moof)框。
mvex box
Field Type Comment |
For more information, see section 8.8.1 of ISO/IEC 14496-12:2008.
2.9.1. Movie Extends Header box
Box type: ‘mehd’
Container:Movie Extends box (‘mvex’)
Mandatory: No
Quantity: One
Movie扩展头(mehd)框提供碎片Movie的持续时间。如果Movie扩展(mvex)框不包含mehd框,则通过检查所有片段来计算总持续时间。
mehd box
Field Type Comment |
For more information, see section 8.8.2 of ISO/IEC 14496-12:2008.
2.9.2. Track Extends box
Box type: ‘trex’
Container:Movie Extends box (‘mvex’)
Mandatory: Yes
Quantity: One for each track in the Movie box
轨迹延伸”(Trex)框定义电影片段的默认值。
trex box
Field Type Comment |
For more information, see section 8.8.3 of ISO/IEC 14496-12:2008.
2.10. User Data box
Box type: ‘udta’
Container:Movie box (‘moov’) or Track box (‘trak’)
Mandatory: No
Quantity: One at each movie level or track level
用户数据(udta)框包含在电影(moov)框或曲目(trak)框中。最多,每个电影级别或曲目级别可能会出现一个UDTA框。UDTA框应最后放置在其包含框中。
UDTA框声明有关包含框及其数据(表示或跟踪)的自由格式用户信息。Flash播放器忽略UDTA框的内容。
udta box
Field Type Comment |
For more information, see section 8.10.1 of ISO/IEC 14496-12:2008.
2.11. F4V Boxes for HTTP Streaming
2.11.2. Fragment Random Access box
Box type: ‘afra’
Container:File
Mandatory: Yes for HTTP streaming support with F4V fragments, otherwise no.
Quantity: One per fragment for HTTP streaming support with F4V fragments, otherwise zero.
片段随机访问(AFRA)框为一个或多个片段提供随机访问信息。
对于带有F4V片段的HTTP流支持,F4V文件可以为每个片段包含一个AFRA框。AFRA盒应位于片段的媒体数据(MDAT)和电影片段(MOOF)盒之前。AFRA框可用于查找包含给定时间内最近随机访问样本的F4V文件中的确切点。
AFRA框与给定片段关联(这里称为“关联片段”)。AFRA框还提供对同一段或不同段中其他片段中信息的随机访问。
AFRA框包含条目数组。每个条目包含随机访问样本的位置和表示时间。如果随机访问样本不在相关片段中,则条目还提供以下信息:
-段识别信息
-片段识别信息
-从包含段的开始到与此随机数关联的“afra”框的字节偏移量
接入点
-从关联的“afra”框到示例的字节偏移量
片段中的每个随机访问样本不一定都有数组条目。AFRA盒的缺失并不意味着所有样本都是同步样本。“trun”、“traf”和“trex”中的随机访问信息设置适当,而不考虑此框的存在。
afra box
Field Type Comment |
2.11.2. Bootstrap Info box
Box type: ‘abst’
Container:File
Mandatory: Yes for HTTP streaming support with F4V fragments, otherwise no.
Quantity: One or more for HTTP streaming support with F4V fragments, otherwise zero.
引导信息(abst)框包含引导媒体演示URL从媒体客户端向HTTP服务器请求RFC1630所需的信息。媒体演示可以是现场演示,也可以是视频点播。此框包含有关服务器、电影和段信息的基本信息。它还包含一个或多个段运行表和段运行表。
在HTTP流段中,abt框是可选的,位于电影(moov)框之前。在HTTP流片段中,ABT框是必需的。有关HTTP流所需的框和结构的描述,请参阅附录C.HTTP流:文件结构。
abst box
Field Type Comment |
2.11.2.1. Segment Run Table box
Box type: ‘asrt’
Container:Bootstrap Info box (‘abst’)
Mandatory: Yes
Quantity: One or more
段运行表(ASRT)框可用于定位包含特定片段的段。可能有几个ASRT箱,每个箱的质量等级不同。
ASRT框使用压缩编码:
-段运行表可以表示几个质量级别的段运行。
-段运行表是紧凑编码的。每个条目给出一段运行的第一个段号
同样数量的碎片。具有相同片段计数的片段的计数可以通过从下一个条目中的第一个片段号减去此条目中的第一个片段号来计算。
asrt box
ASRT框使用压缩编码:
-段运行表可以表示几个质量级别的段运行。
-段运行表是紧凑编码的。每个条目给出一段运行的第一个段号
同样数量的碎片。具有相同片段计数的片段的计数可以通过从下一个条目中的第一个片段号减去此条目中的第一个片段号来计算。
Field Type Comment |
2.11.2.2. Fragment Run Table box
Box type: ‘afrt’
Container:Bootstrap Info box (‘abst’)
Mandatory: Yes
Quantity: One or more
片段运行表(AFRT)框可用于查找包含与给定时间对应的样本的片段。
片段由URL方案单独标识。碎片的持续时间和样本数量都可能不同。碎片的持续时间储存在AFRT箱中。
AFRT盒使用压缩编码:
-片段运行表可以表示多个质量级别的片段。
-片段运行表是紧凑编码的,因为每个条目都给出了运行的第一个片段号。
具有相同持续时间的片段。可以通过从下一个条目中的第一个片段号减去此条目中的第一个片段号来计算具有相同持续时间的片段数。
一个引导信息框中可能有几个片段运行表框,每个框用于不同的质量级别。
asrt box
Field Type Comment |
2.12. Movie Fragment box
Box type: ‘moof’
Container: File
Mandatory: Yes for HTTP streaming support with F4V fragments, otherwise no
Quantity: One per fragment for HTTP streaming support with F4V fragments, otherwise zero.
Movie片段(MOOF)框提供特定于片段的信息,否则这些信息将出现在媒体(MOOV)框中。MOOF箱应按顺序排列。
moof box
Field Type Comment |
For more information, see section 8.8.4 of ISO/IEC 14496-12:2008.
2.12.1. Movie Fragment Header box
Box type: ‘mfhd’
Container: Movie Fragment box (‘moof’)
Mandatory: Yes
Quantity: One
Movie片段头(mfhd)框包含序列号,用于验证文件的完整性。
mfhd box
Field Type Comment |
For more information, see section 8.8.5 of ISO/IEC 14496-12:2008.
2.12.2. Track Fragment box
Box type: ‘traf’
Container: Movie Fragment box
Mandatory: No
Quantity: Zero or more
轨迹片段(traf)框对应于f4v文件中的轨迹。每个交通箱包含零个或多个轨道运行,其中包括该轨道的连续运行。
traf box
Field Type Comment |
For more information, see section 8.8.6 of ISO/IEC 14496-12:2008.
2.12.2.1. Track Fragment Header box
Box type: ‘tfhd’
Container: Track Fragment box
Mandatory: Yes
Quantity: One
“轨迹片段头”(tfhd)框设置用于影片片段中样本运行的信息和默认值。每个电影片段可以向每个曲目添加零个或多个片段,而一个曲目片段可以添加零个或多个连续运行的示例。
tfhd box
Field Type Comment |
basedataoffset:如果此处未提供值,则电影片段中第一个曲目的默认值是封闭电影片段框的第一个字节的位置。对于后续的跟踪片段,默认值是由前面的片段定义的数据的结尾。以这种方式“继承”其偏移量的片段都应使用相同的数据引用,即,这些轨迹的数据应在同一个文件中。
0x010000持续时间为空:如果一个F4V文档在MOOV框中有编辑列表,并且具有空的持续时间片段,则认为该文档格式不正确。
For more information, see section 8.8.7 of ISO/IEC 14496-12:2008.
2.12.2.2. Track Fragment Run box
Box type: ‘trun’
Container: Track Fragment box (‘traf’)
Mandatory: No
Quantity: Zero or more
跟踪片段运行(trun)框定义跟踪的连续样本集。如果在“轨迹碎片框”(traf)框中设置了“持续时间为空”标志,则没有“躯干框”。
trun box
Field Type Comment |
data offset:如果不存在数据偏移量,则此运行的数据从两个位置之一开始。如果此运行是跟踪片段中的第一个,则它从由跟踪片段头定义的基础数据偏移量开始。否则,它会在上一次运行的数据之后立即启动。
FirstSampleFlags:仅覆盖第一个示例的默认标志。这使得记录一组帧成为可能,其中第一个帧是键,其余的帧是不同的帧,而不为每个样本提供显式标志。设置此标志时,不应出现示例标志。
For more information, see section 8.8.8 of ISO/IEC 14496-12:2008.
2.13. Media Data box
Box type: ‘mdat’
Container: File
Mandatory: Yes
Quantity: One
媒体数据(mdat)框包含f4v文件的媒体数据负载。所有视频示例、音频示例、数据示例以及提示轨和示例都包含在mdat框中。请参见1.8支持的媒体类型。
mdat框与media(moov)框一起出现在f4v文件的顶层。
无法单独理解mdat框,这也是文件中必须存在moov框的原因。
mdat box
Field Type Comment |
For more information, see section 8.2.2 of ISO/IEC 14496-12:2008.
2.13.1. Hint Track Samples for HTTP Streaming
mdat框包含用于包含f4v片段的HTTP流的提示轨。提示轨包含ADobemuxhintsamples。Adobemux提示示例输入框(rtmp)描述了提示轨迹。
2.13.1.1. AdobeMuxHintSample
一组adobemuxhintsamples组成了一个提示跟踪,它采用Adobe多路提示跟踪格式。Adobemuxhintsample具有以下布局:
AdobeMuxHintSample
Field Type Comment |
2.13.1.2. AdobeMuxPacket
AdobEmuxPacket具有以下布局。EncryptionHeader及其之前的部分与E.4.1节中定义的flvtag中的相应部分相同。
AdobeMuxPacket
Field Type Comment |
2.13.1.3. AdobeMuxHintConstructor
AdobEmuxHintConstructor具有以下布局:
AdobeMuxHintConstructor
Field Type Comment |
2.13.1.4. AdobeMuxHintImmediateConstructor
Adobmuxhintimmediteconstructor应在即时和即时节点提升模式中使用。这些模式以Adobe多路提示跟踪格式描述。
AdobEmuxHintimmediateConstructor具有以下布局:
AdobeMuxHintImmediateConstructor
Field Type Comment |
For more information, see section 8.aaaaaaaaaaaaaaaaaaaaaaaaaaa of ISO/IEC 14496-12:2008.
2.13.1.5. AdobeMuxHintSampleConstructor
示例模式中应使用Adobemuxhintsampleconstructor。示例模式以Adobe多路提示跟踪格式描述。
AdobEmuxHintSampleConstructor具有以下布局:
AdobeMuxHintSampleConstructor
Field Type Comment |
2.14. Meta box
Box type: ‘meta’
Container: File, Movie box (‘moov’), or Track box (‘trak’)
Mandatory: No
Quantity: Zero or one at each file level, movie level, or track level
元(meta)框的容器是一个f4v文件、一个电影(moov)框或一个轨道(trak)框。meta-box可以包含其他各种包含元数据的框。
meta box
Field Type Comment |
For more information, see section 8.11.1 of ISO/IEC 14496-12:2008.
2.15. Free Space boxes
Box type: ‘free’ or ‘skip’
Container: File or any box
Mandatory: No
Quantity: Any
自由(free)和跳过(skip)框的内容是自由文件空间,播放机应忽略它们的内容。在允许使用盒子的地方可以使用盒子。这些框可以为将来扩展容器框中的数据保留空间。
mfra框应该是文件中的最后一个。mfra框中的最后一个框提供了mfra框中长度字段的副本。
free space box
Field Type Comment |
For more information, see section 8.aaaaaaaaaaaaaaaaaaaaaaaaaaa of ISO/IEC 14496-12:2008.
2.16. Movie Fragment Random Access box
Box type: ‘mfra’
Container: File
Mandatory: No
Quantity: One
电影片段随机访问(mfra)框通过为轨迹(不一定是所有轨迹)提供轨迹片段随机访问(tfra)框,帮助在碎片化的f4v文件中查找随机访问点。此框中的信息不确定,只提供随机接入点的提示。
mfra box
Field Type Comment |
For more information, see section 8.8.9 of ISO/IEC 14496-12:2008.
2.16.1. Track Fragment Random Access box
Box type: ‘tfra’
Container: Movie Fragment Random Access box (‘mfra’)
Mandatory: No
Quantity: Zero or more
每个跟踪片段随机访问(TFRA)框条目提供随机可访问样本的位置和表示时间。tfra框不需要包含跟踪中每个随机可访问样本的条目。此框的缺失并不意味着所有样本都是同步样本。
tfra box
Field Type Comment |
For more information, see section 8.8.10 of ISO/IEC 14496-12:2008.
2.16.2. Movie Fragment Random Access Offset box
Box type: ‘mfro’
Container: Movie Fragment Random Access box (‘mfra’)
Mandatory: Yes
Quantity: One
Movie片段随机访问偏移量(mfro)框提供Movie片段随机访问(mfra)框的长度字段的副本,并帮助查找mfra框。mfro箱应最后放置在mfra箱中。
mfro box
Field Type Comment |
For more information, see section 8.8.11 of ISO/IEC 14496-12:2008.
3. F4V Metadata
本节介绍f4v文件格式支持的元数据。
3.1. Tag box
Box type: ‘auth’, ‘titl’, ‘dscp’ and ‘cprt’
Container: Movie box (‘moov’)
Mandatory: No
Quantity: Zero or one of each type.
f4v文件格式支持包含在电影(moov)框中的四个可选标记框。一个f4v文件最多可以包含256个标记(包括这些框中的标记和在ILST框中定义的标记)。
Tag box
Field Type Comment |
3.2. XMP Metadata box
Box type: ‘uuid’
Container: File
Mandatory: No
Quantity: One
从第10版开始,Flash播放器可以加载嵌入到F4V文件中的XMP数据。XMP是Adobe的可扩展元数据平台。有关详细信息,请参阅www.adobe.com/go/xmp。
XMP元数据框应立即跟随电影(MOOV)框,无中间框。xmp元数据框的大小不得超过64兆字节。
通过XMP元数据框,该文件可以通过actionscript将XMP元数据与SWF电影通信。xmpmetadata通过名为dat a的字符串属性向actionscript公开。
XMP Metadata box
Field Type Comment |
3.3. ilst box
Box type: ‘ilst’
Container: Meta box (‘meta’)
Mandatory: No
Quantity: One
ILST框出现在元(meta)框中,包含任意数量的元数据标记。f4v文件最多可包含256个标记(包括此框和“auth”、“titl”、“dscp”和“cprt”框中的标记)
ilst box
Field Type Comment |
3.4. Text Track Metadata
Box type: See below
Container: Text samples (‘text’ or ‘tx3g’) in Media Data box (‘mdat’)
Mandatory: No
Quantity: Any
文本示例(“text”或“tx3g”)可以包含以下元数据框。它们的内容通过ontextdata属性暴露给正在运行的actionscript程序。
3.4.1. Style box
样式(Styl)框包含文本样式规范。此信息通过st yl e属性公开给actionscript。
styl box
Field Type Comment |
3.4.2. Highlight box
突出显示(HLIT)框指定要突出显示的文本范围。此信息通过highlight属性公开给actionscript。
hlit box
Field Type Comment |
3.4.3. Highlight Color box
突出显示颜色(HCLR)框指定文本的突出显示颜色。此信息通过hi ghl i ght col或属性公开给actionscript。
hclr box
Field Type Comment |
3.4.4. Karaoke box
Karaoke(krok)框指定Karaoke元数据。此信息通过karaoke属性公开给actionscript。时间以轨道定义的时间刻度单位表示。
krok box
Field Type Comment |
3.4.5. Scroll Delay box
滚动延迟(dlay)框指定滚动延迟。此信息通过scr ol l del ay属性向actionscript公开,该属性以与跟踪相关的时间刻度单位表示。
dlay box
Field Type Comment |
3.4.6. Drop Shadow Offset box
放置阴影(DRPO)框指定文本的放置阴影偏移坐标。
drpo box
Field Type Comment |
3.4.7. Drop Shadow Alpha box
放置阴影alpha(drpt)框指定放置阴影alpha值。
drpt box
Field Type Comment |
For more information, see section 8.aaaaaaaaaaaaaaaaaaaaaaaaaaa of ISO/IEC 14496-12:2008.
3.4.8. Hypertext box
超文本框(href)指定在文本范围内具有alt文本的超文本链接。此信息通过hyper t ext属性公开给actionscript。
href box
Field Type Comment |
3.4.9. Text Box box
文本框(tbox)框定义文本框的坐标。此信息通过t ex t box属性公开给actionscript。
tbox box
Field Type Comment |
3.4.10. Blinking box
Blinking(BLNK)框指定要设置闪烁的文本范围。此信息通过blink属性公开给actionscript。
blnk box
Field Type Comment |
3.4.11. Text Wrap box
文本换行(twrp)框为文本设置换行标志。
twrp box
Field Type Comment |
附件A.嵌入提示点
A.1.Overview
使用Flash构建媒体应用程序的一个关键好处是能够混合媒体播放和丰富的交互式数据。f4v应用程序可以支持以amf样本的形式嵌入时间数据(提示点)。这些示例与音频和视频示例一起传输到Flash运行时,在那里它们被发送到应用程序脚本。
A.2.AMF样本格式
AMF示例是包含类型化AMF值列表的AMF对象。
根据为数据轨指定的类型,AMF对象应为AMF0对象或AMF3对象。amf0和amf3的规范可以在以下网址找到:http://opensource.adobe.com/wiki/display/blazeds/developer+documentation
第一个值应为表示AMF样本名称的字符串。AMF值将被调度到具有此名称的方法。例如,如果第一个字段是名为“onfoo”的字符串,则在播放AMF示例时调用方法“onfoo”。
表3列出了为运行时保留且未调度到脚本的名称:
Table 3. Reserved names |
A.3.AMF数据跟踪结构
AMF样本可以存储在数据跟踪中。数据轨配置如下:
处理程序参考(HDLR)框中的处理程序类型应为“数据”,媒体头框类型应为“NMHD”。
样品描述(STSD)框应包含一份描述AMF样品的描述记录。
说明条目格式应为sampleEntry类型。
说明条目的框类型应为“amf0”或“amf3”,与样本的“amf”格式相对应。以下数据轨框应包含每个AMF样本的条目:
-解码时间采样(STTS)框,用于AMF样本的解码时间。
-样本大小(STSZ)框,用于AMF样本的大小。
-chunk offset(STCO或CO64)框,用于AMF样本的偏移。
-合成时间采样(CTTS)框,用于将AMF样本传递到ActionScript的时间
程序。
在媒体数据(mdat)框中,数据轨中的样本应与音频和视频样本交错。
A.3.1.解码数据轨
播放一个f4v文件时,mdat框中的amf示例将传递给amf解码器。在STTS框中指定的时间,AMF解码器对样本进行解码。
在CTTS框中指定的时间,AMF解码器将解码后的AMF样本传递给actionscript程序。
A.4.渐进式下载
通过适当的交织,该方法适用于渐进式下载。
AMF内容应与音频和视频内容在正确的时间交错,以确保在下载文件时数据在正确的时间可用。
AMF数据不应存储在文件的末尾,因为在这种情况下,在发送第一个AMF样本之前,必须下载整个文件,即使该样本在内容的时间非常早。
A.5.多个数据轨
只有一个数据轨。
附件B.Flash播放器元数据
B.1.流属性
当flash player加载一个f4v文件时,可以通过net st r eam为正在运行的actionscript程序提供各种流属性。Onmet Adat a Property公司。可用属性因用于创建文件的软件而异。典型特性为:
-audi ocodeci d:一个包含四个字符的字符串,定义使用的音频编解码器(如果存在音频并且
使用Flash播放器可以解码的编解码器编码
-avcl-level:表示视频符合的avc级别的双精度符号,如果存在视频并对其进行编码。
采用AVC/H.264
-ile的avcpr:一个双精度符号,表示视频符合的avc配置文件(如果存在视频且
用AVC/H.264编码
-打开时的持续时间:以秒为单位表示电影总长度的两倍
-高度:表示视频高度的双精度符号,如果视频存在并使用编解码器编码
Flash播放器可以解码
-moovposition:一个双精度符号,表示f4v文件中moov框的绝对偏移量。此属性
用于确定文件是否将逐步加载
-videocodecid:一个包含四个字符的字符串,定义所使用的视频编解码器(如果存在视频且
使用Flash播放器可以解码的编解码器编码
-如果存在视频,则显示视频的平均视频帧速率。
使用Flash播放器可以解码的编解码器编码
-width:一个双精度符号,表示视频的宽度,如果视频存在,并用闪烁的编解码器编码。
玩家可以解码
B.2.影像元数据
如果f4v示例是图像类型(gif、png或jpeg),则通过oni magedat a属性将数据提供给正在运行的actionscript程序。存在以下属性:
-数据:包含压缩图像数据(即原始jpeg、png或gif文件数据)的字节数组。
-trackID:指示此示例所属的轨道的双精度符号。
附件C.HTTP流:文件结构
C.1.概述
Flash播放器支持带有F4V片段的HTTP流。HTTP流表示由HTTP流清单文件(F4M)和HTTP流段(分段的F4V文件或F4F)组成。
表示沿时间线划分为HTTP流段,进一步划分为HTTP流段。演示文稿可以在多个质量级别上并行提供。可以通过片段(完全或部分)和质量级别缓存和交付演示文稿。
演示文稿的引导信息框指定演示文稿的数据结构和对其的访问。清单文件(fdm)在http://opensource.adobe.com/wiki/display/osmf/flash+media+manifest+file+format+specification中有进一步的描述。
C.2.HTTP流段
HTTP流段是包含片段的完整F4V文件。该段只能属于一个质量级别。该段应包括一组方框,后跟一组HTTP流片段。
成套盒子应包括以下盒子,最好按此顺序排列(可选盒子用括号[]表示):
ftyp
[afra]
[abst]
moov
rtmp
[mdat]
一套盒子可能包括AFRA和MDAT盒子。如果包含,AFRA盒应位于MDAT盒和ABT盒之前。
HTTP流段中HTTP流段外部的MOOF盒不得用于HTTP流。
C.2.HTTP流片段
HTTP流片段应包括以下每个框中的一个,最好按此顺序:
afra
abst
moof
mdat
AFRA箱应位于所有其他箱之前。
片段不是完整的f4v文件。HTTP流片段中不允许使用框ftyp、pdin和moov。
C.4.URL构造
每个HTTP流段都是一个单独的URL资源(文件)。URL方案可以唯一地寻址每个HTTP流片段。HTTP流片段的URL构造如下:
http://serverbaseurl>/<*movieidentifier><*qualityssegmenturlmodifier>seg<*segment number>-frag<*fragmentnumber>
其中,f4v规范定义了括号中的字段,数字没有前导零。如果serverEntryCount==0,<*serverBaseURL>和尾随斜杠应省略。
如果QualityEntryCount==0,<*QualitySegmenturModifier>应省略。
示例:http://adobe。com/mymovie/highseg1-frag210
C.5.Adobe多路提示跟踪格式
用于HTTP流的F4V文件需要包含提示跟踪。提示跟踪提供了使流服务器能够创建传输数据包的信息。有关流的信息,请参阅ISO规范第7节。
Adobe支持Adobe多路提示跟踪格式。Adobe多路复用提示跟踪格式足够灵活,可以支持RTMP数据包以及类似FLV的格式,其中样本作为一个整体按时间顺序交错。FLV兼容模式是为提示样本和FLV格式之间的有效映射而定义的。可以对格式进行配置,以确保由一系列提示样本组成的mdat与对应于这些样本的flv的一部分相同。
Adobemux提示示例输入框(rtmp)描述了提示轨迹。提示轨包含一个AdobEmuxhintsamples集合,并位于媒体数据框中。
定义了三种提示模式:
-立即模式(模式=0)
在这种模式下,为了提高效率,多路复用轨道的有效载荷直接在提示样本本身中可用。但是,必须小心使用此模式,因为它可能会导致某些数据重复。
-立即节点提升模式(模式=1)
立即节点提升模式的定义是为了避免立即模式下的数据复制。在此配置中,原始(音频/视频)曲目的采样表中的偏移量被调整为物理指向包含媒体数据的(立即模式)提示样本(本地位于mdat位置)。因为块偏移量被更改为指向每个样本的提示样本(在头之后和样本开始的位置),所以所有块只包含一个样本。
因此,媒体框“mdat”只包含提示示例(没有音频或视频示例)。提示示例将在其即时数据字段中嵌入媒体数据。只有在Adobe多路复用数据包中使用完整样本(而不是在分块RTMP模式下)时,这才是可能的。此外,这也会增加区块偏移表的副作用,但与获得的效率相比,这是最小的。
-采样模式(模式=2)
在这种模式下,包头和尾部被定义为提示样本的一部分。多路复用磁道的有效负载通过引用具有长度和偏移量的媒体磁道中的特定样本从提示样本“指向”媒体磁道。
附录D.F4V加密D.1概述
D.1.加密过程
本节概述了如何使用Adobe的DRM密钥/权限管理系统来保护F4V内的媒体。保护仅适用于F4V的音频/视频曲目。其他曲目类型(如AMF曲目)的加密格式不在本规范的范围内。
本节应与ISO 14496-12:2008第8.12节(对受保护流的支持)一起阅读。在阅读下一节之前,读者必须理解上述文件格式。
D.2.加密过程
加密过程将样本格式从纯文本更改为密码文本。在每个示例数据之前插入一个Adobe DRM访问单元头。由于将纯文本转换为密码文本,因此如果不使用适当的密钥,则无法使用应用程序访问基础媒体。
将转换描述加密样本的样本描述表中的样本描述条目。转换结构遵循ISO 14496-12:2008第8.12节。转换示例描述条目的目的是双重的:示例描述条目防止意外处理加密数据,就像它是未加密的一样,并记录应用的转换。
执行以下示例描述转换:
-样本描述条目的4cc替换为4cc,表示加密:
o“encv”表示加密视频流(而不是“mp4v”、“avc1”),o“enca”表示加密音频流(而不是“mp4a”、“samr”),o“encr”表示加密数据流。
-保护方案信息(sinf)框附加到示例描述条目后,保留所有其他框。
未修改的sinf框包含理解应用的加密转换及其参数以及查找其他信息(如密钥管理系统的类型和位置)所需的所有信息。它还记录了媒体的原始(未加密)格式。
-样本描述条目的原始格式4cc存储在原始格式(frma)框中,即
sinf框的子框。
-方案类型(schm)框也是sinf框的子框,并将加密方案指定为4cc和
它的版本。在f4v文件中,该方案4cc应为“adkm”,即Adobe的DRM密钥管理。
-在sinf框中,有一个“黑框”(方案信息(schi)框)空间,用于描述
控制对加密媒体内容的访问的密钥管理。schi框是一个容器框,仅由正在使用的方案解释。在F4V文件中,此框应为Adobe DRM密钥管理系统框。
图1–在f4v中存储保护信息的示例
图1说明了保护信息如何存储在F4V中。在示例中,将保护方案信息(sinf)框放入每个曲目的示例描述条目中,并将Adobe的DRM标识符指定为密钥/权限管理系统,以保护音频和视频曲目。
sinf框是每个示例描述框中的示例条目。虽然在一个样本描述框中可以有多个样本条目(每个曲目只能有一个样本描述框),但这并不常见。因此,上面的图表只显示每个轨道一个sinf框。但是,由于每个磁道可能有多个磁道,因此DRM Packager和DRM解码器都应该能够处理这种情况。
D.3.样本加密
本节介绍在将DRM应用于F4V中的音频或视频轨时如何转换每个样本。
D.3.1.接入单元头
表4中定义的访问单元头指定了由Adobe的DRM保护的每个样本单元的格式。媒体文件格式将媒体数据的布局指定为示例,但加密/解密过程需要在每个示例中包含其他信息。附加信息取决于所使用的DRM密钥管理。Adobe的DRM指定了自己的访问单元报头,该报头应位于每个编解码器特定的示例数据之前。f4v访问单元头与flv选择性加密过滤器参数相同。
Table 4. Access Unit Header |
上述指定的访问单元头应添加到样本描述条目打开DRM(即存在保护方案信息(sinf)框)的每个样本中,即使特定样本未加密。报头是解码器知道特定样本是否加密的唯一方法(在selectiveencryption为1的情况下)。当只加密关键帧时,样本的选择性加密可以提高性能。
D.3.2.加密样本的填充
所有加密样本应填充到块密码块长度的倍数。填料方案应如RFC 2630中所述,复制如下:
块密码期望输入数据是k个八位字节的倍数(对于aes 128,要求输入数据是16个八位字节的倍数),其中k大于1。对于此类算法,输入应在尾端填充k-(length mod k)八位字节,所有八位字节的值均为k-(length mod k),其中length是输入的长度。
因此,输入用下面的一个k字节序列填充在尾端,如表5所示。
Table 5. Padding the cipher block |
由于所有输入都被填充,包括已经是块大小的倍数的输入值,并且没有填充序列是另一个的后缀,因此可以从填充块明确地确定填充的大小。最后一个八位字节表示要修剪多少个八位字节。
附录E.FLV文件格式
E.1.概述
flv文件中的每个标记类型构成一个单独的流。在一个FLV文件中,同步在一起的音频和视频流不得超过一个。FLV文件不应定义单个类型的多个独立流。FLV中使用的简单数据类型在SWF格式规范中定义。flv文件使用一个没有为swf文件定义的附加类型:ui24表示无符号的24位整数。
与SWF文件不同,FLV文件应以大端字节顺序存储多字节数。例如,作为SWF文件格式中的ui16,表示数字300(0x12c)的字节序列为0x2c 0x01;作为FLV文件格式中的ui16,表示数字300的字节序列为0x01 0x2c。
另请参见SWF文件格式规范,网址为http://www.adobe.com/go/swf_file_format。
E.2.FLV报头
FLV文件应以FLV头开始:
FLV header
Signature UI8 Signature byte always 'F' (0x46) |
对于FLV版本1,dataoffset字段的值通常为9。此字段用于在将来的版本中容纳较大的标题。
E.3.FLV文件体
在flv头段之后,flv文件的其余部分应包含交替的反向指针和标签。它们交错排列,如下表所示:
FLV File Body
Field Type Comment |
E.4.FLV标签定义
E.4.1FLV标签
flv标记包含音频、视频或脚本的元数据、可选加密元数据和有效负载。FLVTAG
Field Type Comment |
在回放中,flv标记的时间顺序仅取决于flv时间戳。应忽略有效载荷数据格式中内置的任何定时机制。
E.4.2音频标签
音频标签类似于SWF文件格式中的definesound标签。对于SWF中也支持的格式,FLV和SWF中的有效载荷数据是相同的。
E.4.2.1音频数据
audioTagHeader包含音频特定的元数据
AudioTagHeader
Field Type Comment |
格式3,线性PCM,存储原始PCM样本。如果数据为8位,则样本为无符号字节。如果数据是16位的,那么样本将存储为有符号的小尾数。如果数据是立体声的,则左右样本是交错存储的:左-右-左-右-等等。
格式0 pcm与格式3 pcm相同,只是格式0按照文件创建平台的尾数顺序存储16位pcm样本。因此,不应使用格式0。
8 kHz和16 kHz是特殊情况,因为声速场不能代表8或16 kHz的采样率。当在SoundFormat中指定Nellymser 8 kHz或Nellymser 16 kHz时,Flash播放器将忽略SoundRate和SoundType字段。对于其他Nellymser采样率,请指定正常的Nellymser SoundFormat,并像往常一样使用SoundRate和SoundType字段。
如果SoundFormat指示AAC,则SoundType应为1(立体声),SoundRate应为3(44 kHz)。但是,这并不意味着FLV中的AAC音频总是立体声的,44 kHz的数据。相反,flash播放器忽略这些值并提取通道,采样率数据编码在AAC比特流中。
如果SoundFormat指示为speex,则音频以16kHz的频率进行单采样压缩,声音速率应为0,声音大小应为1,声音类型应为0。有关存储在swf文件中的speex功能和限制的信息,请参阅http://www.adobe.com/go/swf_file_format上的swf文件格式规范。
音频数据段包含音频有效载荷。
AUDIODATA
Field Type Comment |
AudioTagBody保存音频有效负载。
AudioTagBody
Field Type Comment |
E.4.2.2 AACAUDIODATA
Flash Player 9、0115、0及更高版本支持AAC格式。
AACAUDIODATA
Field Type Comment |
E.4.3视频标签
视频标签类似于SWF文件格式的视频帧标签,其有效载荷数据相同。另请参见SWF文件格式规范,网址为http://www.adobe.com/go/swf_file_format。E.4.3.1视频数据
VideoTagHeader包含特定于视频的元数据
VideoTagHeader
Field Type Comment |
视频数据段包含视频元数据、可选加密元数据和视频有效负载。
VIDEODATA
Field Type Comment |
VideoTagBody
VideoTagBody包含视频帧有效负载。
VideoTagBody
Field Type Comment |
E.4.3.2 AVCVIDEOPACKET
AVC视频包携带AVC视频数据的有效载荷。
AVCVIDEOPACKET
Field Type Comment |
AVCDecoderConfigurationRecord的说明见ISO 14496-15,5.2.4.1。它包含的信息与存储在MP4/FLV文件中的AVCC框中的信息相同。
E.4.4数据标签
数据标记封装了单个方法调用,通常在Flash播放器的Netstream对象上调用。数据标记由一个方法名和一组参数组成。
E.4.4.1脚本数据
脚本数据段包含可选的加密元数据和脚本有效负载。
SCRIPTDATA
Field Type Comment |
ScriptTagBody包含以操作消息格式(AMF)编码的脚本数据,该格式是用于序列化ActionScript对象图的压缩二进制格式。AMF0的规范可从以下网址获得:http://opensource.adobe.com/wiki/display/blazeds/developer+documentation
ScriptTagBody
Field Type Comment |
E.4.4.2 SCRIPTDATAVALUE
ScriptDataValue记录包含类型化的ActionScript值。
SCRIPTDATAVALUE
Field Type Comment |
E.4.4.3 SCRIPTDATADATE
脚本数据日期记录存储日期和时间。
SCRIPTDATADATE
Field Type Comment |
E.4.4.4 SCRIPTDATAECMAARRAY
A SCRIPTDATAECMAARRAY记录存储一个ecma数组。ECMA数组是一个关联数组,当actionscript数组包含非顺序索引时应使用该数组。所有的索引,无论是序数还是其他,都是字符串而不是整数。为了进行序列化,此类型与匿名ActionScript对象非常相似。该列表包含大约ecmaarrayllength个项目。ScriptDataObjectEnd记录在项目列表之后。
SCRIPTDATAECMAARRAY
Field Type Comment |
E.4.4.5 SCRIPTDATALONGSTRING
scriptDataString和scriptDataLongstring记录存储字符串
SCRIPTDATALONGSTRING
Field Type Comment |
E.4.4.6 SCRIPTDATAOBJECT
ScriptDataObject记录对匿名ActionScript对象的属性进行编码。ScriptDataObjectEnd记录跟随属性列表。
SCRIPTDATAOBJECT
Field Type Comment |
E.4.4.7 SCRIPTDATAOBJECTEND
scriptDataObjectEnd记录终止scriptDataObjectProperty记录的列表。ScriptDataObjectEnd记录是一个带零长度字符串和对象结束标记的ScriptDataObjectProperty记录。
SCRIPTDATAOBJECTEND
Field Type Comment |
E.4.4.8 SCRIPTDATAOBJECTPROPERTY
ScriptDataObjectProperty记录定义ActionScript对象的对象属性或关联数组的变量。
SCRIPTDATAOBJECTPROPERTY
Field Type Comment |
E.4.4.9 SCRIPTDATASTRICTARRAY
脚本数据严格数组记录存储严格数组。严格数组只包含顺序索引,而不存储在记录中。指数可以是密集的或稀疏的。索引之间稀疏区域中未定义的条目应序列化为未定义。该列表应包含严格的数组长度值。列表后面没有终止记录。
SCRIPTDATASTRICTARRAY
Field Type Comment |
E.4.4.10 SCRIPTDATASTRING
scriptDataString和scriptDataLongstring记录存储字符串。
脚本数据字符串记录可用于长度不超过65535个字符的字符串。
SCRIPTDATASTRING
Field Type Comment |
E.5 onMetaData
flv元数据对象应包含在名为onmet adat a的scriptdata标记中。运行中的actionscript程序可通过net st r eam使用各种属性。Onmet Adat a Property公司。可用属性因创建FLV文件的软件而异。典型特性包括:
onMetadata properties
Property Name Type Comment |
E.6 flv中的xmp元数据
xmp元数据对象应包含在名为onxmpdat a的scriptData标记中。标记应及时放置。
0。标签应该在所有时间0之后,在所有时间0之前,在所有时间0之前,音频或视频标签,但读者不应该要求这样的排序。
XMPMetadata object
Property Name Type Comment |
For further details, see www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart3.pdf
附件F.FLV加密
F.1概述
1.加密头,包含解密flv所需的加密元数据,如加密
算法、密钥长度和内容加密密钥检索协议标识符在任何加密内容之前,在FLV头之后立即存储为脚本数据。
2.内容携带标签加密。
a.为了提高效率,可以选择只加密标签的子集,例如I帧。
b.如果标签被加密,那么包中的过滤器标志被打开。筛选标志指示
解码前需要对数据包进行预处理。加密筛选器在数据包中指定。不合规的玩家将忽略设置了筛选标志的标签,因为他们实际上有一个新的标签类型。
c.大多数元数据(例如,无论是音频或视频帧、关键帧还是I帧、编解码器类型)都是
保持清晰,以便服务器和客户端播放器可以处理元数据而无需解密内容。
d.根据加密算法和加密要求对内容进行加密。
关键。加密数据存储在包中。
此规范定义了头元数据和加密数据包的格式。
F.2标题信息
F.2.1 AdditionalHeader对象
在加密的FLV文件中,应存在额外的头对象,并且应包括加密头对象。
AdditionalHeader对象应包含在名为Additional Header的scriptData标记中。(注意名称中的竖线(“”))对象应该出现在flv的开头,时间戳为0,紧跟在onmet adat的scriptdata标记之后。这使FLV解码器能够在遇到任何加密标签之前访问加密元数据。
AdditionalHeader object
Property Name Type Comment |
F.2.2加密头对象
encryption header对象包含解密flv所需的加密元数据。加密头对象
Encryption Header object
Property Name Type Comment |
F.2.3标准编码参数对象
此结构包含特定于“标准”加密方法的参数。
Standard Encoding Parameters object
Property Name Type Comment |
F.2.4 AES-CBC加密参数对象
这个结构包含特定于加密算法的参数,在本例中是aes-cbc_128。
AES-CBC Encryption Parameters object
Property Name Type Comment |
F.2.5关键信息对象
密钥信息框包含用于检索用于解密示例的密钥的信息。这些框中包含的条目的详细信息以及DRM客户机用于检索密钥的机制不在本规范的范围内。
Key Information object
Property Name Type Comment |
F.2.6 FlashAccessv2对象
闪存访问服务器使用联机密钥检索协议提供解密密钥。
FlashAccessv2对象包含FlashAccessv2模块执行联机密钥检索所需的以下高级元素(这些元素的详细信息不在文档范围内)。
FlashAccessv2 object
Property Name Type Comment |
F.3内容加密
本节介绍如何加密FLV标记。
在加密的FLV文件中,每个FLV标记都可以指示其加密状态:
-筛选器标志可能指示在呈现数据包之前需要对其进行预处理。
-在版本2中,当设置过滤器标志时,选择性加密指示器可能进一步指示
数据包已加密。
无论文件是完全加密还是部分加密,在版本2中(encryptionheader.version==2),每个音频和视频包都应该设置flvtag.filter位。对于未加密的脚本数据,不应设置过滤位,使播放器能够定位onmetadata信息。
一小部分指定的字节保持清晰,以便在不解密其余内容的情况下启用智能客户端处理。
F.3.1加密标记头
如果在flv标签中设置了filter标志,则在呈现前应对包内容进行预处理。加密标记头指定要应用的筛选器。过滤器指定加密类型并指示是否应用加密。
EncryptionTagHeader
Field Type Comments |
F.3.2滤波器参数
filterparams包含特定于解密方法的参数。
FilterParams
Field Type Comments |
非选择性)加密的筛选器参数在encryptionfilterparams中定义。带有此字段的所有数据包都应加密。
EncryptionFilterParams
Field Type Comment |
选择加密的筛选参数在SelectiveEncryptionFilterParams中定义。
SelectiveEncryptionFilterParams
Field Type Comment |
F.3.3加密正文
如果包是加密的,那么主体应包含本节所述的加密主体,否则主体应包含纯文本数据。
EncryptedBody
Field Type Comment |
3.3.1填充
所有加密样本应填充到块密码块长度的倍数。填料方案应如RFC 2630中所述,复制如下:
块密码期望输入数据是k八位字节的倍数(对于aes 128,是16个八位字节的倍数),其中k大于1。对于此类算法,输入应在尾端填充k-(length mod k)八位字节,所有八位字节的值均为k-(length mod k),其中length是输入的长度。
填充使块大小达到块密码块长度的下一整数倍。即使纯文本可以被块长度平均整除,也会出现填充。
示例:如果k为16字节,长度为32字节,填充长度为16字节,包含0x10,块大小为48字节。
F.4加密和元数据
当FLV加密时,OnMetadata脚本数据应始终保持清晰。
不同的flv解析器需要这一点来成功地传输flv,媒体播放器也需要这一点来为使用提供一些上下文信息。