資源交換檔案格式服務

多媒體檔案的慣用格式是資源交換檔案格式, (RIFF) 。 RIFF 檔案 I/O 函式適用于基本緩衝和未緩衝的檔案 I/O 服務。 您可以使用與其他檔案類型相同的方式開啟、讀取和寫入 RIFF 檔案。 如需 RIFF 的詳細資訊,請參閱 AVIFile 函式和宏

RIFF 檔案會使用四個字元代碼來識別檔案元素。 這些代碼是 32 位數量,代表一到四個 ASCII 英數位元的序列,以空白字元填補右邊。 四個字元代碼的資料類型為 FOURCC。 使用 mmioFOURCC 宏,將四個字元轉換成四個字元的程式碼。 若要將以 Null 終止的字串轉換成四個字元的程式碼,請使用 mmioStringToFOURCC 函式。

RIFF 檔案的基本建置組 塊是區塊。 區塊是多媒體資料的邏輯單元,例如影片剪輯中的單一畫面。 每個區塊都包含下欄欄位:

  • 指定區塊識別碼的四個字元程式碼
  • 雙字值,指定區塊中的資料成員大小
  • 資料欄位

下圖顯示包含兩個子chunks 的 「RIFF」 區塊。

包含兩個子chunks 影像的 riff 區塊

包含在另一個區塊中的區塊是 subchunk。 唯一允許包含 subchunks 的區塊是區塊識別碼為 「RIFF」 或 「LIST」 的區塊。 包含另一個區塊的區塊稱為 父區塊。 RIFF 檔案中的第一個區塊必須是 「RIFF」 區塊。 檔案中所有其他區塊都是 「RIFF」 區塊的子區塊。

「RIFF」 區塊會在資料欄位的前四個位元組中包含額外的欄位。 此額外欄位提供欄位的 表單類型 。 表單類型是四個字元的程式碼,可識別儲存在檔案中的資料格式。 例如,Microsoft 波音訊檔案的格式為 「WAVE」。

「LIST」 區塊也會在資料欄位的前四個位元組中包含額外的欄位。 此額外欄位包含欄位 的清單類型 。 清單類型是識別清單內容的四個字元程式碼。 例如,清單類型為 「INFO」 的 「LIST」 區塊可以包含提供著作權和建立日期資訊的 「ICOP」 和 「ICRD」 區塊。 下圖顯示包含 「LIST」 區塊的 「RIFF」 區塊,而另一個子chunk (「LIST」 區塊包含兩個子chunks) 。

包含清單區塊影像的 riff 區塊

多媒體檔案 I/O 服務包含兩個函式,可用來在 RIFF 檔案中的區塊之間流覽: mmioAscendmmioDescend。 您可以使用這些函式作為高階搜尋函式。 當您遞減成區塊時,檔案位置會設定為區塊的資料欄位, (區塊開頭的 8 個位元組) 。 對於 「RIFF」 和 「LIST」 區塊,檔案位置會設定為格式類型或清單類型後面的位置,從區塊開頭) (12 個位元組。 當您從區塊放大時,檔案位置會設定為區塊結尾後面的位置。

若要建立新的區塊,請使用 mmioCreateChunk 函式,在開啟的檔案中目前位置寫入區塊標頭。 mmioAscendmmioDescendmmioCreateChunk函式會使用MMCKINFO結構來指定和擷取 「RIFF」 區塊的相關資訊。