譯者注:
這里面的內(nèi)容主要是分析mp4/3gp文件的層級結構,詳細的介紹了各種不同的box的結構等,網(wǎng)上有一些參考資源,他們大多都是結合實際的例子來說明,篇幅較大,而且籠統(tǒng),建議讀者分多次結合網(wǎng)上資源來理解這部分內(nèi)容。
翻譯正文:
Movie Atoms
本章簡單介紹了QuickTime movie atoms,以及這些atoms的布局和用法的具體細節(jié)。本章中討論的每種atom類型都有包含偏移量信息的附圖,以及字段說明。
本章分為以下主要部分:
- Overview of Movie Atoms介紹的是QuickTime movie atoms,它充當裝載描述movie的數(shù)據(jù)的信息的容器。本部分提供了顯示了簡單的單軌QuickTime movie組織結構的概念圖。還介紹了Color table atoms和user data atoms。
- Track Atoms介紹了track atoms,其定義了movie的單個軌道。還介紹了user data atoms的track和hint track。
- Media Atoms介紹了media atoms,其定義了track的movie data,例如media type和media time scale。
- Sample Atoms介紹了sample table atoms,它指定了media sample所在的位置,它們的時長等信息。這部分還包括了如何使用這些atoms的示例。
?? 注:media atoms和sample atoms不包含實際采樣數(shù)據(jù),如視頻幀或音頻采樣。 它們包含用于定位和解釋這些采樣的元數(shù)據(jù)。
- Compressed Movie Resources討論了壓縮的movie資源,其中使用無損壓縮算法來壓縮movie atom的內(nèi)容,包括任何軌道,media或sample atoms。 在解析movie atom之前,必須解壓縮這些。
- Reference Movies討論了包含reference movie atom(對備用movie的引用列表,以及從備選項列表中選擇正確movie的標準)的movie。 包含reference movie atom的movie atoms不一定包含軌道,media或sample atoms。
Overview of Movie Atoms(Movie Atoms概述)
QuickTime movie atoms的atom類型為“moov”。 這些atom作為描述movie數(shù)據(jù)的信息的容器。 該信息或元數(shù)據(jù)存儲在多種不同類型的atom中。 一般來說,只有元數(shù)據(jù)存儲在movie原子中。 movie的樣本數(shù)據(jù),例如音頻或視頻樣本,在movie atom中引用,但不包含在其中。
movie atom基本上是其他atoms的容器。 這些atoms一起描述了movie的內(nèi)容。 在頂層,movie atom通常包含軌道atoms,軌道atom又包含media atoms。 在最底層是葉atoms,其包含非atom數(shù)據(jù),通常以表或一組數(shù)據(jù)元素的形式。 例如,軌道atom包含edit atom,edit atom又包含edit list atom,葉atom包含edit list table的數(shù)據(jù)。 所有這些atom將在本文檔的后面討論。
圖2-1提供了一個簡單的單軌QuickTime movie的組織的概念圖。圖中的每個嵌套框表示屬于其父atom的atom。該圖不顯示任何atom的數(shù)據(jù)區(qū)域。這些區(qū)域在這部分的后面介紹。
注意,該圖顯示了標準movie atom的組織結構。可以使用無損壓縮算法來壓縮movie元數(shù)據(jù)。在這種情況下,movie atom只包含一個子atom - compressed movie atom('cmov')。當這個子atom未壓縮時,其內(nèi)容符合下圖所示的結構。有關詳細信息,請參閱Compressed Movie Resources。
還可以創(chuàng)建reference movie,引用其他movie的movie;在這種情況下,movie atom可以僅包含reference movie atom('rmra')。有關詳細信息,請參閱“Reference Movies”。最終,這種鏈關系必須以標準movie atom(如圖2-1中的atom)或壓縮的movie atom(可以解壓縮以獲得相同的結構)結束。
?? 注意:在單軌QuickTime movie文件中,其他的atoms可能存在,但不顯示在圖2-1中。
Movie Atom
您使用movie atoms來指定定義movie的信息,即允許程序解釋存儲在其他位置的sample數(shù)據(jù)的信息。movie atom通常包含movie header atom,其定義整個movie的時間尺度和持續(xù)時間信息,以及其顯示特性。現(xiàn)有movie可能包含movie profile atom,其中總結了movie的主要功能,例如必要的編解碼器和最大比特率。此外,movie atom包含movie中每個軌道的track atom。
movie atom的atom類型為“moov”。它包含其他類型atoms,包括三個可能atoms中的至少一個 - movie header atom('mvhd'),compressed movie atom('cmov')或reference movie atom('rmra')。uncompressed movie atom可以包含movie header atom和reference movie atom,但它必須包含這兩個中的至少一個。它還可以包含幾個其他atoms,如clipping atom('clip'),一個或多個track atoms('trak'),colour table atom('ctab')和user data atom('udta') 。
compressed movie atoms和reference movie atoms被分開討論。 本節(jié)介紹正常的uncompressed movie atoms。
圖 2-2 顯示了典型的movie atom的布局。
?? 注意:如前所述,葉子atoms顯示為白色框,容器atoms顯示為灰色框。
movie atom可能包含以下字段:
- Size
此movie atom中的字節(jié)數(shù)。 - Type
這個movie atom的類型; 此字段必須設置為“moov”。 - Profile atom
有關詳細信息,請參閱Movie Profile Atom。 - Movie header atom
有關詳細信息,請參閱Movie Header Atoms。 - Movie clipping atom
有關詳細信息,請參閱Clipping Atoms。 - Track atoms
有關軌道atoms及其相關atoms的詳細信息,請參閱Track Atoms。 - User data atom
有關user data atoms的更多信息,請參閱User Data Atoms。 - Color table atom
有關color table atom的討論,請參閱Color Table Atoms。 - Compressed movie atom
有關compressed movie atom的討論,請參閱Compressed Movie Resources。
-Reference movie atom
有關reference movie atoms的討論,請參閱Reference Movies。
Movie Profile Atom
?? 注意:profile atoms在QuickTime文件格式中已棄用。 以下信息旨在記錄包含profile atoms的現(xiàn)有內(nèi)容,不應用于新開發(fā)。
movie profile atom總結了movie的特征和復雜性,例如所需的編解碼器和最大比特率,以幫助播放器應用或設備快速確定他們是否具有播放movie的必要資源。
movie的特征通常包括movie的最大視頻和音頻比特率,音頻和視頻編解碼器類型的列表,movie的視頻尺寸以及任何適用的MPEG-4配置文件和級別。 這是也可以通過更詳細地檢查movie文件的內(nèi)容而獲得的所有信息。 此摘要旨在允許應用程序或設備快速確定他們是否可以播放movie。 它不打算作為movie中其他地方找不到的信息的容器,不應該用作單獨的一個。
?? 注意:實際上,不出現(xiàn)在profile atom中的特征并不意味著它不在movie中。 profile atom本身可以不存在,或者可以僅列出movie特征集的子集。 profile atom中列出的特征都是存在的,但列表不一定是完整的。
創(chuàng)建profile atom時,可以省略movie中存在的某些要素,但需要完全指定profile atom中包含的任何要素。例如,包含視頻的movie在profile atom中可以具有或可以不具有視頻編解碼器類型特征,但是如果在profile atom中包括任何視頻編解碼器類型特征,則必須在profile atom中列出每個所需的視頻編解碼器。
movie profile atom是profile atom('prfl'),其父結點是movie atom。這與軌道profile atom不同,其父結點是track atom。在兩種情況下,profile atom的結構是相同的,但是movie profile atom的內(nèi)容將movie作為一個整體描述,而軌道profile atom的內(nèi)容特定于某個軌道。
profile atom包含一個特征列表。在movie profile atom中,這些特征將movie作為一個整體進行了總結。在軌道profile atom中,這些特征描述特定軌道。
特征列表中的每個條目由四個32位字段組成:
- 第一個字段保留,必須設置為零。
- 第二個字段是part-ID,它將特征定義為特定brand的或通用的。特定brand的特征特定于特定brand。通用特征可以在使用profile atom的任何文件類型中找到。通用特征part-ID具有四個ASCII空格(0x20202020)。brand-specific的功能具有part-ID,它是該文件類型的Compatible_Brand代碼之一,如file type atom('ftyp')中所指定。例如,QuickTime-specific的part-ID是“qt ”。然而,本文檔中描述的所有特征都是通用的。
- 第三個字段是特征碼或名稱,一個32位無符號整型,通常最好解釋為四個ASCII字符。如:最大視頻比特率特征具有特征碼或名稱“mvbr”。允許使用零特征代碼值(0x00000000,而不是四個ASCII零字符)作為一個或多個名稱/值對中的占位符。讀者應忽略零值的特征碼。
- 第四個字段是值,它也是一個32位字段。該值可以是有符號或無符號整數(shù),或定點值,或包含子字段,或由打包數(shù)組組成;它僅可以關于特定特征來解釋。
有關profile atoms的結構和內(nèi)容的詳細信息,請參閱Profile Atom Guidelines。
Movie Header Atoms
您使用movie header atom來指定整個QuickTime movie的特征。 該atom中包含的數(shù)據(jù)定義了整個QuickTime movie的特征,例如時間尺度和持續(xù)時間。 它的atom類型值為'mvhd'。
圖 2-3 顯示了movie header atom的布局。 movie header atom是葉子atom。
您可以通過指定以下數(shù)據(jù)元素來定義movie header atom。
- Size
一個32位整數(shù),指定此movie header atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù);必須設置為“mvhd”。 - Version
一個字節(jié),該movie header atom的規(guī)范版本。 - Flags
為未來movie header flags使用的三個字節(jié)的空間。 - Creation time
一個32位整數(shù),指定創(chuàng)建movie atom時的日期和時間(從1904年1月1日午夜起的秒數(shù))。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。 - Modification time
一個32位整數(shù),用于指定更改movie atom時的日期和時間(從1904年1月1日午夜起的秒數(shù))。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。 - Time scale
指示此movie的時間刻度的時間值,即在其時間坐標系中每秒通過的時間單位的數(shù)量。例如,以六十分之一秒測量時間的時間坐標系具有60的時間標度。 - Duration
以時間刻度單位表示movie持續(xù)時間的時間值。請注意,此屬性來自movie的track。此字段的值對應于電影中最長track的持續(xù)時間。 - Preferred rate
指定播放此movie的速率的32位定點數(shù)。值1.0表示正常速率。 - Preferred volume
一個16位的定點數(shù)字,指定播放此電影的聲音的音量。值1.0表示滿音量。 - Reserved
保留供Apple使用的十個字節(jié)。設置為0。 - Matrix structure
與這部movie相關的矩陣結構。矩陣顯示如何將點從一個坐標空間映射到另一個。有關如何在QuickTime中使用顯示矩陣的討論,請參見Matrices。 - Preview time
movie中預覽開始的時間值。 - Preview duration
以影片時間縮放單位預覽movie的持續(xù)時間。 - Poster time
movie海報的時間的時間值。 - Selection time
當前選擇的開始時間的時間值。 - Selection duration
影片時間刻度單位中當前選擇的持續(xù)時間。 - Current time
movie中當前時間位置的時間值。 - Next track ID
一個32位整數(shù),指示用于添加到此movie的下一曲目(track)的曲目ID號的值。請注意,0不是有效的曲目ID值。
?? 注意:創(chuàng)建和修改日期應使用協(xié)調(diào)世界時(UTC)設置。 在QuickTime文件格式的先前版本中,未指定這個,并且這些字段通常設置為創(chuàng)建電影的時區(qū)的本地時間。
Color Table Atoms
Color table atoms定義了在僅支持256種顏色的設備上顯示movie的首選顏色列表。 該列表最多可以包含256種顏色。 這些可選atoms類型值為'ctab'。 color table atom包含Macintosh顏色表數(shù)據(jù)結構。
圖 2-4 顯示了color table atom的布局。
color table atom包含以下數(shù)據(jù)元素。
- Size
32位整數(shù),指定此color table atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“ctab”。 - Color table seed
必須設置為0的32位整數(shù)。 - Color table flags
必須設置為0x8000的16位整數(shù)。 - Color table size
一個16位整數(shù),指示后面的color array中的顏色數(shù)。 這是一個零相對值; 將此字段設置為0表示數(shù)組中有一種顏色。 - Color array
顏色數(shù)組。 每種顏色由四個無符號的16位整數(shù)組成。 第一個整數(shù)必須設置為0,第二個是紅色值,第三個是綠色值,第四個是藍色值。
User Data Atoms
user data atoms允許您定義和存儲與QuickTime對象相關聯(lián)的數(shù)據(jù),例如movie 'moov',track 'trak'或media 'mdia'。這也包括QuickTime尋找的信息,例如版權信息或movie是否應該循環(huán),以及由應用程序提供的任意信息 - QuickTime完全忽略的。
其直接父結點是movie atom的user data atom包含與movie作為整體相關的數(shù)據(jù)。其父結點是軌道atom的user data atom包含與該特定軌道相關的信息。 QuickTime movie文件可以包含許多user data atoms,但是只允許一個user data atom作為任何給定movie atom或軌道atom的直接子節(jié)點。
user data atom的atom類型為“udta”。在user data atom內(nèi)的是描述每條用戶數(shù)據(jù)的atoms列表。用戶數(shù)據(jù)提供了一種擴展存儲在QuickTime movie中的信息的簡單方法。例如,user data atom可以存儲movie的窗口位置,回放特性或創(chuàng)建信息。
本節(jié)介紹QuickTime可識別的 data atoms。您可以創(chuàng)建自己的應用程序可識別的新的data atom類型。應用程序應忽略它們不能識別的任何data atom類型。
圖2-5 顯示了user data atom的布局。
user data atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此user data atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“udta”。 - User data list
格式化為一系列atom的用戶數(shù)據(jù)列表。 用戶數(shù)據(jù)列表中的每個數(shù)據(jù)元素包含大小和類型信息及其有效載荷數(shù)據(jù)。 由于歷史原因,數(shù)據(jù)列表可選地由設置為0的32位整數(shù)終止。如果您正在編寫一個程序以讀取user data atom,則應允許終止0。但是,如果您正在編寫一個程序來創(chuàng)建user data atom,可以安全地忽略終止0。
表 2-1 列出了當前定義的列表條目類型
List entry type | Description | For Sorting |
---|---|---|
'?arg' | Name of arranger | |
'?ark' | Keywords for arranger | X |
'?con' | Keywords for composer | X |
'?com' | Name of composer | |
'?cpy' | Copyright statement | |
'?day' | Date the movie content was created | |
'?dir' | Name of movie’s director | |
'?ed1' to '?ed9' | Edit dates and descriptions | |
'?fmt' | Indication of movie format (computer-generated, digitized, and so on) | |
'?inf' | Information about the movie | |
'?isr' | ISRC code | |
'?lab' | Name of record label | |
'?lal' | URL of record label | |
'?mak' | Name of file creator or maker | |
'?mal' | URL of file creator or maker | |
'?nak' | Title keywords of the content | X |
'?nam' | Title of the content | |
'?pdk' | Keywords for producer | X |
'?phg' | Recording copyright statement, normally preceded by the symbol | |
'?pre' | Name of producer | |
'?prf' | Names of performers | |
'?prk' | Keywords of main artist and performer | X |
'?prl' | URL of main artist and performer | |
'?req' | Special hardware and software requirements | |
'?snk' | Subtitle keywords of the content | X |
'?snm' | Subtitle of content | |
'?src' | Credits for those who provided movie source content | |
'?swf' | Name of songwriter | |
'?swk' | Keywords for songwriter | X |
'?swr' | Name and version number of the software (or hardware) that generated this movie | |
'?wrt' | Name of movie’s writer | |
'AllF' | Play all frames—byte indicating that all frames of video should be played, regardless of timing | |
'hinf' | Hint track information—statistical data for real-time streaming of a particular track. For more information, see Hint Track User Data Atom. | |
'hnti' | Hint info atom—data used for real-time streaming of a movie or a track. For more information, see Movie Hint Info Atom and Hint Track User Data Atom. | |
'name' | Name of object | |
'tnam' | Localized track name optionally present in Track user data. The payload is described in Track Name. | |
'tagc' | Media characteristic optionally present in Track user data—specialized text that describes something of interest about the track. For more information, see Media Characteristic Tags. | |
'LOOP' | Long integer indicating looping style. This atom is not present unless the movie is set to loop. Values are 0 for normal looping, 1 for palindromic looping. | |
'ptv ' | Print to video—display movie in full screen mode. This atom contains a 16-byte structure, described in Print to Video (Full Screen Mode). | |
'SelO' | Play selection only—byte indicating that only the selected area of the movie should be played | |
'WLOC' | Default window location for movie—two 16-bit values, {x,y} |
當顯示文本不具有預定排序順序時(例如,當排序取決于上下文含義時,在東方語言中),使用標記為“keywords”并且標記為“For Sorting”的用戶數(shù)據(jù)項。 這些關鍵字可以按算法排序以按正確的順序放置相應的項目。
窗口位置,循環(huán),僅播放選擇,播放所有幀,和打印到video這些atoms控制QuickTime顯示movie的方式。 只有當user data atom的直接父節(jié)點是一個movie atom('moov')時,這些atom才被解釋。 如果它們作為軌道atom的用戶數(shù)據(jù)的一部分被包括,它們被忽略。
User Data Text Strings and Language Codes(用戶數(shù)據(jù)文本字符串和語言代碼)
類型以?字符(ASCII 169)開頭的所有用戶數(shù)據(jù)列表條目都被定義為國際文本。這些列表條目必須包含具有相關語言代碼的文本字符串列表。通過存儲相同文本的多個版本,單個用戶數(shù)據(jù)文本項可以包含不同語言的翻譯。
文本字符串列表使用一個小的整數(shù)atom格式,它與QuickTime atom格式相同,除了它使用16位的值來表示大小和類型,而不是32位的值。第一個值是字符串的大小,包括大小和類型,第二個值是字符串的語言代碼。
user data text strings可以使用Macintosh文本編碼或Unicode文本編碼。語言代碼的格式?jīng)Q定了文本編碼格式。 Macintosh語言代碼后面是Macintosh編碼的文本。如果使用規(guī)范ISO 639-2/T中列出的ISO語言代碼指定語言代碼,則文本使用Unicode文本編碼。當使用Unicode時,文本為UTF-8,除非它以字節(jié)順序標記(BOM,0xFEFF)開頭,在這種情況下,文本為UTF-16。 BOM和UTF-16文本都應該是big-endian。相同文本的多個版本可以使用不同的編碼方案。
?? 重要:小于0x400的語言代碼值為Macintosh語言代碼。 大于或等于0x400的語言代碼值為ISO語言代碼。 該規(guī)則的例外是語言代碼0x7FFF,它表示未指定的Macintosh語言。
ISO語言代碼是三字符代碼。 為了適應16位字段,字符必須被打包成三個5位子字段。 該包在“ISO Language Codes”中描述。
Media Characteristic Tags(媒體特征標簽)
軌道('trak')atom的user data atom可以包含零個或多個media characteristic tag atoms('tagc')。
media characteristic tag atom的有效載荷數(shù)據(jù)是指示關于軌道的有趣的標簽。這是一個特殊的字符串,由US-ASCII(7位加上一個清除高位)字符的子集組成,符合以下段落中描述的結構。這不是一個C字符串;沒有終止null,所以從atom的大小確定字符數(shù)。合法字符是字母(A-Z,a-z),數(shù)字(0-9),破折號( - ),句點(.),下劃線(_)和波浪號(?)。
QuickTime文件的任何軌道可以與指示媒體特性的一個或多個標簽相關聯(lián)。標簽表示關于軌道的有趣的東西。例如,標簽可以指示軌道的目的(它是注釋),軌道的抽象特性(其需要硬件解碼)或軌道包括可讀文本的指示(章節(jié)軌道和字幕軌道都可以是由用戶讀取)。
標簽的比較區(qū)分大小寫;如果字符串的字節(jié)匹配,則兩個標記匹配。不應該使用兩種僅區(qū)分大小寫的標記字符串,以避免開發(fā)人員或內(nèi)容創(chuàng)建者可能產(chǎn)生混淆。
允許在單個軌道中使用重復的標簽,但不鼓勵。復制沒有特殊意義。
標記字符串不是本地化的,并且意在進行機器解釋;但是,鼓勵記憶字符串。
標記要么是public或是private:
- public標簽允許廣泛部署共享語義。公共標簽目前由Apple定義。
- private標簽可以定義為私人使用。
標記字符串具有以下結構:
- 公共標記以前綴“public.”開頭,后面跟著由句點分隔的一個或多個段。示例(未定義)可能是public.subtitle或public.commentary.director。
?? 注意:公共標記是公開的,因為它們已記錄在本規(guī)范中或在Apple API中可用。其他定義的帶有“public.”前綴的標簽被禁止;請用私人標簽替代。
- 私人標簽以私人實體的域使用反向DNS命名約定開始。例如,apple.com變?yōu)閏om.apple。這之后是由句點分隔的一個或多個段。示例(未定義)可以是com.apple.this-is-a-tag,com.apple.video.includes-sign-language和org.w3c.html5.referenced-video。
- 唯一允許的前綴是“public.”和反向域。所有其他前綴保留供將來使用。
?? 注意:支持除“public”之外的通用頂級域(如果要分配)。字符串“public”保留用于表示公共媒體特征標簽。
此規(guī)范定義了以下幾個公共媒體特征標簽。其他公共和私人標簽可以在規(guī)范之外定義;無法識別的標記應該被忽略。
- public.auxiliary-content(對所有媒體類型有效)
表示曲目(track)的內(nèi)容已被內(nèi)容作者標記為對媒體文件的呈現(xiàn)的輔助。例如,評論音頻或字幕軌道可以用這個標簽標記,因為它不是節(jié)目內(nèi)容。如果此標簽不存在,則如果軌道是備用組的成員,則軌道仍然可以被推斷為用該特性標記,并且使用“Track Exclude From Autoselection atom”將該軌道從自動選擇中排除;請參閱Track Exclude From Autoselection atom。 - public.accessibility.transcribes-spoken-dialog(適用于可讀媒體)
表示該軌道包括以該軌道的語言環(huán)境的語言的可讀內(nèi)容,其轉(zhuǎn)錄語音對話。 - public.accessibility.describes-music-and-sound(適用于可讀媒體)
表示軌道包含以軌道區(qū)域設置語言描述的可讀內(nèi)容,用于描述發(fā)生在節(jié)目音頻中的音頻和音頻效果。 - public.accessibility.describes-video(適用于可聽媒體)
表示軌道包括描述演示文稿的視覺部分的可聽內(nèi)容。
public.accessibility.describes-video (valid for audible media)
Indicates that the track includes audible content that describes the visual portion of the presentation. - public.easy-to-read(適用于易讀媒體)
表示軌道以其已指定語言環(huán)境的語言提供易讀內(nèi)容,該語言已經(jīng)編輯以便于閱讀。
Track Name
movie atom的user data atom可以包含track name atom('tnam')。
track name atom的有效載荷數(shù)據(jù)由以下數(shù)據(jù)組成。
- 保留:必須設置為零的32位整數(shù)。
- 語言:16位整數(shù),保存一個打包的ISO 639-2/T代碼,如User Data Text Strings and Language Codes中描述的。
- 名稱:以空字符結尾的UTF-8或UTF-16字符串保存曲目名稱(track name)。 如果這是一個UTF-16字符串,字符串必須以字節(jié)順序標記(0xFEFF)開頭。
軌道可以具有多個具有不同語言代碼的“tnam”atom。 通常,每個軌道具有與軌道內(nèi)容相同的語言的單個“tnam”atom是足夠的。 備選軌道也可以具有'tnam' atoms; 它們的存在意味著該名稱是軌道的好的用戶可讀標簽。
Print to Video (Full Screen Mode)
movie atom的user data atom可以包含print to video atom('ptv ')。注意,第四個字符是一個ASCII(space)(0x20)。如果存在print to video atom,QuickTime以全屏模式播放movie,沒有窗口,沒有可見的控制器。未被movie占據(jù)的屏幕的任何部分被清除為黑色。用戶必須按Esc(Escape)鍵退出全屏模式。
這個atom通常被暫時添加和刪除以控制用于單個演示的movie的顯示模式,但是它也可以被存儲為永久movie文件的一部分。
print to video atom的有效載荷數(shù)據(jù)包括以下內(nèi)容。
- Display size
指示movie的顯示大小的16位小端整數(shù):0表示movie應以其正常大小播放; 1表示movie應以雙倍大小播放; 2表示電影應以半尺寸播放; 3表示電影應該縮放以填滿屏幕; 4表示應當以其當前大小播放電影(該最后的值通常在print to video atom被暫時插入并且movie已經(jīng)臨時調(diào)整時使用)。 - Reserved1
一個16位整數(shù),其值應為0。 - Reserved2
一個16位整數(shù),其值應為0。 - Slide show
一個8位布爾值,其值為1,用于幻燈片放映。在幻燈片播放模式下,每次按下向右箭頭鍵,movie前進一幀。音頻靜音。 - Play on open
8位布爾值,其值通常為1,表示movie在打開時應播放。由于在全屏模式下沒有可見的控制器,應用程序應始終將此字段設置為1,以防止用戶混淆。
Track Atoms
track atom定義了movie的單個軌道。 movie可能由一個或多個曲目(tracks)組成。 每個軌道獨立于movie中的其他軌道并且攜帶其自己的時間和空間信息。 每個軌道atom包含其相關聯(lián)的媒體atom。
軌道專門用于以下目的:
- 包含媒體數(shù)據(jù)引用和說明(媒體軌道)。
- 要包含修飾符軌道(補間等)。
- 包含流協(xié)議的包化信息(提示軌道)。 提示軌道可以包含對媒體樣本數(shù)據(jù)或媒體樣本數(shù)據(jù)的副本的引用。 有關提示軌道的詳細信息,請參閱Hint Media。
?? 注意:QuickTime movie不能只包括提示軌道或修改軌道; 必須至少有一個媒體軌道。 此外,不能從提示的movie中刪除媒體軌道,即使提示軌道包含媒體樣本數(shù)據(jù)的副本 - 除了提示軌道,整個未提示的電影必須保留。
圖 2-6 顯示了track atom的布局。 軌道atom的atom類型值為'trak'。 軌道atom需要track header atom('tkhd')和media atom('mdia')。 其他子atom是可選的,并且可以包括track clipping atom('clip'),track matte atom('matt'),edit atom('edts'),track reference atom('tref'),track load settings atom('load'),track input map atom('imap')和user data atom('udta')。
?? 注意:圖2-6包含可選的track profile atom'prfl'。 軌跡配置文件atom在當前版本的QuickTime中已棄用,但可能存在于現(xiàn)有的QuickTime文件中。 這里的包含旨在記錄包含profile atom的現(xiàn)有內(nèi)容,它們不應當用于新的開發(fā)。
track atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此軌道atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“trak”。 - Track profile atom
有關詳細信息,請參閱Track Profile Atom。 - Track header atom
有關詳細信息,請參閱Track Header Atoms。 - Track aperture mode dimensions atom
有關詳細信息,請參閱Track Aperture Mode Dimension Atoms。 - Clipping atom
有關詳細信息,請參閱Clipping Atoms。 - Track matte atom
有關詳細信息,請參閱Track Matte Atoms。 - Edit atom
有關詳情,請參閱Edit Atoms。 - Track reference atom
有關詳細信息,請參閱Track Reference Atoms。 - Track exclude from autoselection atom
有關詳細信息,請參閱Track Exclude From Autoselection Atoms。 - Track load settings atom
有關詳細信息,請參閱Track Load Settings Atoms。 - Track input map atom
有關詳細信息,請參閱Track Input Map Atoms。 - Media atom
有關詳細信息,請參閱Media Atoms。 - User-defined data atom
有關詳細信息,請參閱User Data Atoms。
Track Profile Atom
?? 注意:profile atoms在QuickTime文件格式中已棄用。 以下信息旨在記錄包含profile atom的現(xiàn)有內(nèi)容,不應用于新開發(fā)。
profile atom可以是movie atoms或track atoms的子結點。 有關profile atoms的詳細信息,請參閱Movie Profile Atom。
Track Header Atoms
track header atom指定movie內(nèi)單個軌道的特性。 track header atom包含指定字節(jié)數(shù)的size字段和指示數(shù)據(jù)格式(由atom類型“tkhd”定義)的type字段。
圖 2-7 顯示了track header atom的結構。
track header atom包含track的track特性,包括時間,空間和音量信息。
track header atom包含以下數(shù)據(jù)元素。
Size
一個32位整數(shù),指定此track header atom中的字節(jié)數(shù)。Type
標識原子類型的32位整數(shù);此字段必須設置為“tkhd”。Version
1字節(jié),說明該track header的版本。Flags
為track header flags保留的三個字節(jié)。這些標志指示如何在movie中使用track。以下標志有效(當設置為1時,所有標志都被使能)。Track enabled
表示track已啟用。標志值為0x0001。Track in movie
表示在track中使用曲目(track)。標志值為0x0002。Track in preview
表示在movie預覽中使用曲目(track)。標志值為0x0004。Track in poster
表示該曲目(track)在movie的海報中使用。標志值為0x0008。Creation time
一個32位整數(shù),指示創(chuàng)建track header時的日期和時間(以秒為單位,自1904年1月1日起的秒數(shù))。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。Modification time
一個32位整數(shù),指示track header更改時的日期和時間(以秒為單位,自1904年1月1日起的秒數(shù))。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。Track ID
唯一標識track的32位整數(shù)。不能使用值0。Reserved
保留供Apple使用的32位整數(shù)。將該字段設置為0。Duration
指示此曲目的持續(xù)時間(在movie的時間坐標系中)的時間值。請注意,此屬性來源于曲目的編輯。此字段的值等于所有軌道編輯的持續(xù)時間的總和。如果沒有編輯列表,則持續(xù)時間是樣本持續(xù)時間的總和,被轉(zhuǎn)換為movie時間刻度。Reserved
保留供Apple使用的8字節(jié)值。將該字段設置為0。Layer
一個16位整數(shù),指示其track在其movie中的空間優(yōu)先級。 QuickTime Movie Toolbox使用此值來確定track如何重疊。具有較低layer值的軌道顯示在具有較高layer值的軌道前面。-
Alternate group
一個16位整數(shù),用于標識包含另一個數(shù)據(jù)的movie tracks的集合。相同的標識符出現(xiàn)在組中其他track的每個“tkhd”atom中。 QuickTime從播放movie時要使用的組中選擇一個曲目。該選擇可以基于諸如回放質(zhì)量,語言或計算機的能力的考慮。
值為零表示軌道不在備用軌道組中。
使用備用曲目的最常見原因是提供不同語言的相同曲目的版本。圖 2-8 顯示了幾個軌道的示例。視頻軌道的備用組ID為0,表示它不在備用組中(并且其語言代碼為空;通常,視頻軌道應具有相應的語言標簽)。三個聲音軌道具有相同的組ID,因此它們形成一個替代組,并且字幕軌道具有不同的組ID,因此它們形成另一個替換組。軌道在實際的QuickTime文件中不相鄰;這只是示例軌道字段值的列表。
圖 2-8 Example of alternate tracks in two alternate groups Volume
一個16位的定點值,表示該音軌的以多大的聲音播放。 值1.0表示正常音量。Reserved
保留供Apple使用的16位整數(shù)。 將此字段設置為0。Matrix structure
與此軌道相關聯(lián)的矩陣結構。 有關矩陣結構的說明,請參見圖2-3。Track width
一個32位定點數(shù),用于指定此軌道的寬度(以像素為單位)。Track height
指示此軌道的高度的32位定點數(shù),以像素為單位。
Track Exclude From Autoselection Atoms
一些替代軌道包含除主要內(nèi)容的直接翻譯(或非翻譯書寫形式)之外的東西。評論軌道就是一個例子。這些軌道不應自動選擇。在軌道中存在Track Exclude From Autoselection atom表示不應該自動選擇該軌道。
這種軌道應該具有用戶可讀的名稱,以幫助用戶識別軌道的目的。這些名稱存儲在“trak” atom內(nèi)的user data('udta')atom內(nèi)的一個或多個軌道名稱('tnam')atom中,每個atom被翻譯成不同的語言。
Track Exclude From Autoselection atom的類型是'txas'。這個atom,如果使用,必須在“tkhd” atom之后的某處。
Track Exclude From Autoselction atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定track exclude from autoselection atom中的字節(jié)數(shù)。這必須是8,因為此atom必須不包含數(shù)據(jù)。 - Type
標識原子類型的32位整數(shù);此字段必須設置為“txas”。
Track Aperture Mode Dimension Atoms
QuickTime Movie中的視頻軌道可以通過圖像描述擴展發(fā)出清晰的光圈和像素寬高比信息。清潔光圈定義要顯示的編碼像素的部分。像素寬高比是編碼像素的寬高比。概念上,基于像素高寬比對編碼像素進行解壓縮,拉伸(或收縮),并且根據(jù)清潔孔徑裁剪額外像素。
?? 注意:QuickTime軌道在track header dimensions中定義其內(nèi)容的簡單尺寸。在沒有軌道孔徑模式維度原子的情況下,軌道頭部中的尺寸用于所有模式。
考慮到這種上下文,記錄在圖像描述中的尺寸定義了編碼像素(編碼尺寸)的尺寸。實際顯示的是應用像素寬高比和凈光圈(顯示尺寸)的結果。
盡管應用清潔孔徑和像素寬高比的結果是用于最終顯示的,但是存在為了各種不同的有用的目的而顯示存在于內(nèi)容中的所有像素。解析QuickTime影片的讀者需要允許這些不同顯示模式的信息,以提供這種靈活性:
- Clean Mode
在此模式下,清潔光圈和像素寬高比都會應用。軌道的尺寸等于純凈光圈尺寸,其等于顯示尺寸(具有一致的內(nèi)容)。 - Production Mode
此模式適用像素寬高比,但不適用于清晰光圈。以正確的縱橫比呈現(xiàn)圖像,但是將呈現(xiàn)存在于源材料中的圖像之外的額外像素。軌道尺寸等于應用像素寬高比的結果。 - Classic Mode
此模式顯示圖像,而不應用像素寬高比或清晰光圈。使用track header dimensions來顯示圖像,這意味著如果編碼的維度不同,則解壓縮的圖片被縮放到track header dimensions。 - Encoded Pixels
在該模式下,編碼像素完整顯示。在此模式下,軌道尺寸等于編碼尺寸。不進行縮放或變換。
這些呈現(xiàn)模式中的每一者所需的信息在optional track aperture mode dimensions atoms中表示。
?? 注意:在QuickTime 7之前構建的舊應用程序?qū)⒗^續(xù)使用存儲在軌道header中的dimension值。
Track Aperture Mode Dimensions Atom
一個container atom,其以三個所需atom的形式存儲用于視頻校正的信息。 該atom可選地包括在軌道atom中。 Track Aperture Mode Dimensions atom的類型是“tapt”。
*** 圖 2-9*** 顯示了track aperture mode dimensions atom的布局。
- Size
一個32位整數(shù),指定track aperture mode dimensions atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“tapt”。 - Track Clean Aperture Dimensions atom
請參閱Track Clean Aperture Dimensions atom - Track Production Aperture Dimensions atom
請參閱Track Production Aperture Dimensions atom - Track Encoded Pixels Dimensions atom
請參閱Track Encoded Pixels Dimensions atom
Track Clean Aperture Dimensions Atom
這個atom攜帶軌道的clean aperture的像素尺寸。 track clean aperture dimensions atom的類型是'clef'。
圖 2-10 顯示了track clean aperture dimensions atom的布局。
- Size
一個32位整數(shù),指定track aperture mode dimensions atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“clef”。 - Version
該atom版本的1字節(jié)規(guī)范。 - Flags
為atom標志保留的三個字節(jié)。 - Width
32位定點數(shù),用于指定track clean aperture的寬度(以像素為單位)。 - Height
32位定點數(shù),用于指定track clean aperture的高度(以像素為單位)。
Track Production Aperture Dimensions Atom
該atom攜帶軌道的production aperture的像素尺寸。 track production aperture dimensions atom的類型是“prof”。
圖 2-11 顯示了track production aperture dimensions atom的布局。
- Size
一個32位整數(shù),指定track aperture mode dimensions atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“prof”。 - Version
該atom版本的1字節(jié)規(guī)范。 - Flags
為atom標志保留的三個字節(jié)。 - Width
一個32位定點數(shù),用于指定track production aperture的寬度(以像素為單位)。 - Height
32位定點數(shù),用于指定track production aperture的高度(以像素為單位)。
Track Encoded Pixels Dimensions Atom
該atom攜帶軌道編碼像素的像素尺寸。 track encoded pixels dimensions atom的類型是'enof'。
圖 2-12 顯示了這個atom的布局。
- Size
一個32位整數(shù),指定track aperture mode dimensions atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為'enof'。 - Version
該atom版本的1字節(jié)規(guī)范。 - Flags
為atom標志保留的三個字節(jié)。 - Width
32位定點數(shù),指定以像素為單位的軌道編碼像素尺寸的寬度。 - Height
32位定點數(shù),指定以像素為單位的軌道編碼像素尺寸的高度。
Clipping Atoms
Clipping atoms指定movie和軌道的剪輯區(qū)域。 Clipping atom的atom類型值為'clip'。
圖 2-13 顯示了這個atom的布局。
Clipping atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此clipping atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“clip”。 - Clipping region atom
請參閱Clipping Region Atoms。
Clipping Region Atoms
Clipping Region Atoms包含指定clipping region的數(shù)據(jù),包括其大小,邊界框和區(qū)域。 Clipping region atoms具有atom類型值“crgn”。
Clipping region atom的布局如圖 2-13 所示。
Clipping region atom包含以下數(shù)據(jù)元素。
- Size
指定此clipping region atom中的字節(jié)數(shù)的32位整數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“crgn”。 - Region size
region size,region boundary box和clipping region data字段構成QuickDraw區(qū)域。 - Region boundary box
region size,region boundary box和clipping region data字段構成QuickDraw區(qū)域。 - Clipping region data
region size,region boundary box和clipping region data字段構成QuickDraw區(qū)域。
Track Matte Atoms
Track matte atoms用于在顯示軌跡圖像時可視地混合軌跡圖像。
track matte atoms的atom類型值為'matt'。
圖 2-14 顯示了track matte atoms的布局。
track matte atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track matte atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“matt”。 - Compressed matte atom
實際的無光澤數(shù)據(jù)。有關詳細信息,請參閱Compressed Matte Atoms for details。
Compressed Matte Atoms
Compressed matte atom指定圖像描述結構和與特定matte atom相關聯(lián)的遮罩數(shù)據(jù)。 Compressed matte atoms的atom類型值為'kmat'。
Compressed matte atoms的布局如圖 2-14所示。
Compressed matte atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此compressed matte atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“kmat”。 - Version
該compressed matte atom的版本的1字節(jié)規(guī)范。 - Flags
標志的三個字節(jié)的空間。 將此字段設置為0。 - Matte image description structure
與該遮片數(shù)據(jù)相關聯(lián)的圖像描述結構。 圖像描述包含控制如何使用遮罩數(shù)據(jù)的詳細信息。 有關圖像描述的詳細信息,請參閱Video Sample Description。 - Matte data
壓縮的matte數(shù)據(jù),其長度可變。
Edit Atoms
您可以使用edit atoms來定義要用于為movie建立軌道的媒體部分。 edit本身包含在edit list table中,該表由每個段的時間偏移量和持續(xù)時間值組成。 Edit atoms的原子類型值為'edts'。
圖 2-15顯示了edit atom的布局。
在沒有edit list的情況下,軌道的呈現(xiàn)立即開始。 空的edit用于補償曲目的開始時間。
?? 注意:如果缺少edit atom或edit list atom,則可以假定軌道使用整個媒體。
Edit atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此edit atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“edts”。
-Edit list atom
請參閱Edit List Atoms。
Edit List Atoms
使用edit list atom(如圖 2-15 所示)可將電影中的時間映射到媒體中的時間,最終映射到媒體數(shù)據(jù)。 此信息以edit list table表中的條目的形式顯示,如圖 2-16 所示。 edit list atoms的atom類型值為'elst'。
edit list atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此edit list atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“elst”。 - Version
該edit list atom的版本的1字節(jié)規(guī)范。 - Flags
標志的三個字節(jié)的空間。 將此字段設置為0。 - Number of entries
一個32位整數(shù),用于指定隨后edit list atom中的條目數(shù)。 - Edit list table
32位值的數(shù)組,分組為每個包含3個值的條目。 圖 2-16 顯示了此表中條目的布局。
圖 2-16 The layout of an edit list table entry
edit list table表項包含以下元素。 - Track duration
一個32位整數(shù),以電影時間單位為單位指定此edit片段的持續(xù)時間。 - Media time
包含此edit片段的媒體內(nèi)的開始時間(以媒體時間單位為單位)的32位整數(shù)。 如果此字段設置為-1,那么它是空編輯。 曲目中的最后一個編輯應該永遠不是空白編輯。 電影持續(xù)時間和曲目持續(xù)時間之間的任何差異都表示為隱式空白編輯。 - Media rate
指定播放與此edit片段相對應的媒體的相對速率的32位定點數(shù)。 此速率值不能為0或負數(shù)。
Track Load Settings Atoms
Track load settings atoms包含指示如何在其電影中使用軌道的信息。 讀取QuickTime文件的應用程序可以使用此信息更高效地處理電影數(shù)據(jù)。 track load settings atoms的atom類型值為'load'。
圖 2-17 顯示了這個atom的布局。
Track load settings atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track load settings atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù);此字段必須設置為“l(fā)oad”。 - Preload start time
一個32位整數(shù),指定要預先加載的軌道片段在電影時間坐標系中的開始時間。與預載持續(xù)時間一起使用。 - Preload duration
一個32位整數(shù),指定電影時間坐標系統(tǒng)中要預加載的軌道段的持續(xù)時間。如果持續(xù)時間被設置為-1,則意味著預加載段從預加載開始時間延伸到軌道的結束。當要播放電影時,由preload start time和preload duration值定義的軌道段中的所有媒體數(shù)據(jù)應當被加載到存儲器中。 - Preload flags
包含控制預加載操作的標志的32位整數(shù)。只定義了兩個標志,它們是互斥的。如果此標志設置為1,則track將被預加載,而不管是否啟用。如果此標志設置為2,則只有在啟用track時才會預加載track。 - Default hints
包含回放提示的32位整數(shù)。可以啟用多個標志。通過將標志設置為1來啟用標志。定義以下標志。 - Double buffer
此標志指示應使用雙緩沖I/O播放曲目。此標志的值為0x0020。 - High quality
此標志指示軌道應以最高可能質(zhì)量顯示,而不考慮實時性能。該標志的值為0x0100。
Track Reference Atoms
Track reference atoms定義軌道之間的關系。Track reference atoms允許一個軌道指定它如何與其他軌道相關。例如,如果電影有三個視頻軌道和三個音軌,track reference允許您識別相關的聲音和視頻軌道。track reference atom具有atom類型值“tref”。
Track reference是單向的,并從接收軌道指向源軌道。例如,視頻軌道可以參考時間代碼軌道以指示其時間代碼被存儲在何處,但是時間代碼軌道將不參考視頻軌道。時間碼軌道(time code track)是視頻軌道的時間信息的源。
單個軌道可以引用多個軌道。例如,視頻軌道可以參考聲音軌跡以指示兩者是同步的,并且指示時間代碼軌道以指示其時間代碼被存儲在何處。
單個軌道也可以由多個軌道引用。例如,如果聲音和視頻軌道共享相同的定時信息,則它們可以引用相同的時間代碼軌道。
如果這個atom不存在,軌道不以任何方式引用任何其他軌道。 注意,track reference type atoms的陣列的大小被設置為填充track reference atom。 允許使用參考索引為0的軌道引用。 這表示沒有參考。
有關Track References的更多信息,請參閱Track References。
圖 2-18 顯示了track reference atom的布局。
Track reference atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track reference atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“tref”。 - Track reference type atoms
包含軌道參考信息的track reference type atoms的列表。 接下來描述這些atom。
每個track reference atom定義與特定類型的軌道的關系。 參考類型意味著軌道類型。 表2-2顯示了軌道參考類型及其說明。
表 2-2 軌道參考類型(Track reference types)
Reference type | Description |
---|---|
'cdsc' | The track reference is contained in a timed metadata track (see Timed Metadata Media for more detail) and provides links to the tracks for which it contains descriptive characteristics.Note: If the timed metadata track describes characteristics of the entire movie, there will be no track reference of type ‘cdsc’ between it and another track. |
'chap' | Chapter or scene list. Usually references a text track. |
'clcp' | Closed caption. In any track, this identifies a closed captioning track that contains text that is appropriate for the referring track. See Closed Captioning Media for more information. |
'fall' | In a sound track, this references a track in a different format but with identical content, if one exists; for example, an AC3 track might reference an AAC track with identical content. See Alternate Sound Tracks. |
'folw' | In a sound track, this references a subtitle track that is to be used as the sound track’s default subtitle track. If the subtitle track is part of a subtitle track pair, this should reference the the forced subtitle track of the pair. This is needed only if language tagging cannot be used. See Relationships Across Alternate Groups. |
'forc' | Forced subtitle track. In the regular track of a subtitle track pair, this references the forced track. See Subtitle Sample Data for more information. |
'hint' | The referenced tracks contain the original media for this hint track. |
'scpt' | Transcript. Usually references a text track. |
'ssrc' | Non-primary source. Indicates that the referenced track should send its data to this track, rather than presenting it. The referencing track will use the data to modify how it presents its data. See Track Input Map Atoms for more information. |
'sync' | Synchronization. Usually between a video and sound track. Indicates that the two tracks are synchronized. The reference can be from either track to the other, or there may be two references. |
'tmcd' | Time code. Usually references a time code track. |
每個track reference type atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track reference type中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為表 2-2 中所示的值之一。 - Track IDs
指定相關軌道的軌道ID值(32位整數(shù))列表。 注意,這是軌道ID值可以被設置為0的一種情況。atom中未使用的條目可以具有軌道ID值0。將軌道ID設置為0可以比刪除引用更方便。
您可以通過從track reference type atom的總大小減去其頭大小,然后除以軌道ID的大小(以字節(jié)為單位)來確定存儲在track reference type atom中的軌道引用數(shù)。
Track Input Map Atoms
Track input map atoms定義如何解釋從其非主要源發(fā)送到該軌道的數(shù)據(jù)。 “ssrc”類型的軌道引用定義了軌道的輔助數(shù)據(jù)源。 這些源提供在處理軌道時使用的附加數(shù)據(jù)。 track input map atoms具有atom類型值“imap”。
圖 2-19 顯示了track input atom的布局。 該atom包含一個或多個track input atoms。 注意,track input map atom是QT atom結構。
每個track input map atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track input map atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“imap”。
-Track input atoms
指定如何使用輸入數(shù)據(jù)的track input atoms的列表。
輸入映射(input map)定義了所有軌道的輔助輸入。 每個輔助輸入使用單獨的track input atom來定義。
每個track input atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此track input atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“in”(請注意,開頭前兩個字節(jié)必須設置為0x00)。 - Atom ID
將該track input atom與其輔助輸入相關的32位整數(shù)。 該字段的值對應于track reference atom中的輔助輸入的索引。 也就是說,第一輔助輸入對應于atom ID值為1的track input atom; 第二個到track input atom,atom ID為2,等等。 - Reserved
必須設置為0的16位整數(shù)。 - Child count
指定此atom中子元素數(shù)的16位整數(shù)。 - Reserved
必須設置為0的32位整數(shù)。
Track input atom又可以包含兩種其他類型的atom:input type atoms和object ID atoms。 input type atom是必需的; 它指定如何解釋數(shù)據(jù)。
input type atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此輸入類型atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為'ty'(注意,開頭前兩個字節(jié)必須設置為0x00)。 - Input type
指定要從輔助數(shù)據(jù)源接收的數(shù)據(jù)類型的32位整數(shù)。 表 2-3 列出了此字段的有效值。
表 2-3 輸入類型(Input types)
Input identifier | Value | Description |
---|---|---|
kTrackModifierTypeMatrix | 1 | A 3 × 3 transformation matrix to transform the track’s location, scaling, and so on. |
kTrackModifierTypeClip | 2 | A QuickDraw clipping region to change the track’s shape. |
kTrackModifierTypeVolume | 3 | An 8.8 fixed-point value indicating the relative sound volume. This is used for fading the volume. |
kTrackModifierTypeBalance | 4 | A 16-bit integer indicating the sound balance level. This is used for panning the sound location. |
kTrackModifierTypeGraphicsMode | 5 | A graphics mode record (32-bit integer indicating graphics mode, followed by an RGB color) to modify the track’s graphics mode for visual fades. |
kTrackModifierObjectMatrix | 6 | A 3 × 3 transformation matrix to transform an object within the track’s location, scaling, and so on. |
kTrackModifierObjectGraphicsMode | 7 | A graphics mode record (32-bit integer indicating graphics mode, followed by an RGB color) to modify an object within the track’s graphics mode for visual fades. |
kTrackModifierTypeImage | 'vide’ | Compressed image data for an object within the track. Note that this was kTrackModifierTypeSpriteImage. |
如果輸入對軌道內(nèi)的對象(例如,子畫面軌道內(nèi)的子畫面)進行操作,則obejct ID atom必須包括在track input atom中以識別對象。
object ID atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此object ID atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù); 此字段必須設置為“obid”。 - Object ID
用于標識對象的32位整數(shù)。
Media Atoms
Media atoms描述和定義軌道的媒體類型和樣本數(shù)據(jù)。 media atom包含指定以下內(nèi)容的信息:
- 媒體類型,例如聲音,視頻或定時元數(shù)據(jù)
- 用于解釋樣本數(shù)據(jù)的媒體處理程序組件
- 媒體時間刻度和軌道持續(xù)時間
- 媒體和曲目的特定信息,如音量或圖形模式
- 媒體數(shù)據(jù)引用,通常指定存儲樣本數(shù)據(jù)的文件
- 樣本表atom,對于每個媒體樣本,指定樣本描述,持續(xù)時間和與數(shù)據(jù)引用的字節(jié)偏移量
media atom的原子類型為“mdia”。 它必須包含媒體頭(media header)('mdhd')atom,它可以包含處理程序引用(handler reference)('hdlg')atom,媒體信息(media information)('minf')atom和用戶數(shù)據(jù)(user data)('udta')atom。
?? 注意:不要混淆media atom('media')與media data atom('mdat')。 media atom只包含對media data的引用; media data atom包含實際的媒體采樣。
圖 2-20 顯示了media atom的布局。
Media atoms包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此media atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù);此字段必須設置為“mdia”。 - Media header atom
此atom包含標準媒體信息。請參閱Media Header Atoms。 - Extended language tag atom
此atom包含描述媒體語言的擴展語言標記。請參閱Extended Language Tag Atom。 - Handler reference atom
此atom標識將用于解釋媒體數(shù)據(jù)的媒體處理程序組件。有關詳細信息,請參閱Handler Reference Atoms。
注意,handler reference atom告訴你這個media atom包含的媒體類型,例如視頻或聲音。media information atoms的布局專用于解釋媒體的媒體處理器。Media Information Atoms討論了如何使用由蘋果定義的視頻媒體格式作為示例來將數(shù)據(jù)存儲在媒體中。 - Media information atom
此atom包含特定于媒體類型的數(shù)據(jù),供媒體處理程序組件使用。請參閱Media information Atoms。 - User data atom
請參閱User Data Atoms。
Media Header Atoms
Media header atoms指定媒體的特性,包括時間尺度和持續(xù)時間。 Media header atom的atom類型為“mdhd”。
圖 2-21 顯示了media header atom的布局。
Media header atom包含以下數(shù)據(jù)元素。
- Size
一個32位整數(shù),指定此media header atom中的字節(jié)數(shù)。 - Type
標識atom類型的32位整數(shù);此字段必須設置為“mdhd”。 - Version
一個字節(jié),指定此header atom的版本。 - Flags
Media header標記的三個字節(jié)的空間。將該字段設置為0。 - Creation time
一個32位整數(shù),指定(從1904年1月1日午夜起的秒數(shù))media atom的創(chuàng)建時間。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。 - Modification time
一個32位整數(shù),指定(從1904年1月1日午夜起的秒數(shù))media atom的修改時間。強烈建議使用協(xié)調(diào)世界時(UTC)指定此值。 - Time scale
指示此媒體的時間刻度的時間值,即在其時間坐標系統(tǒng)中每秒通過的時間單位數(shù)。 - Duration
此媒體的持續(xù)時間以其Time scale為單位。 - Language
指定此media的語言代碼的16位整數(shù)。請參閱Language Code Values for valid language codes。如果擴展語言標簽也包括在媒體原子中,請參閱Extended Language Tag Atom以獲取在此處使用的首選代碼。 - Quality
一個16位整數(shù),指定媒體的播放質(zhì)量 - 也就是說,它適合在給定環(huán)境中播放。
To be Continue
譯者注:
第一次翻譯英文文檔,純手工翻譯,難免出現(xiàn)錯誤,歡迎指正!感謝!
資料鏈接:[英文原文][Movie Atoms]