共用方式為


AVI 檔案格式的 DV 資料

[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayerIMFMediaEngine 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

Microsoft已指定在 AVI 檔案中儲存數位視訊 (DV) 資料的格式。 符合此規格可確保以此格式撰寫的 AVI 檔案與 Windowsplatform 未來版本的 DirectShow 數位視訊架構相容。

本文說明包含 DV 資料的 AVI 檔案格式。 定義交錯 DV 數據流的特定 FOURC(四個字元代碼)和 DV 壓縮機/解壓縮器數據流處理程式。 定義 DV 資料的數據流格式結構。 指定了兩種以 AVI 檔案格式儲存 DV 資料的規格。

假設讀取器熟悉 DV 數據格式。 (此格式定義於消費者使用數位VCR 規格中,也稱為藍皮書。

DV AVI 檔案有兩種類型:包含一個 DV 數據流的 AVI 檔案,稱為 type-1 檔案;和 AVI 檔案,包含 DV 視訊作為「vids」串流和 DV 音訊作為「auds」串流,稱為 type-2 檔案。

包含一個 DV 數據流的 AVI 檔案 (Type-1)

交錯的 DV 數據可以以其原生格式儲存為 AVI RIFF 檔案內的單一數據流。 這有使用 DV 資料儲存量下限的優點。 主要缺點是這個檔格式與 Windows 的視訊不相容,因為它不包含視訊 'vids' 或音訊 'auds' 數據流。 透過 directShow 提供的 DV MuxerDV 分割器 篩選器,提供交錯式 DV 數據流的支援。

DV 數據可以儲存在 AVI RIFF 檔案內的單一數據流中,方法是在 fccType 成員中指定 'iavs' (交錯的音訊和視訊串流) FOURCC (四個字符代碼)以及 'dvsd'、'dvhd' 或 'dvsl' FOURC 中的其中一個,fccHandler 'strh' 數據流標頭區塊的成員。 視訊數據流的每秒畫面必須指定於 dwRatedwScale 成員,以及 dwLength 成員中 'movi' 區塊中的視訊區塊總數。

'dvsd' 資料流程處理程式 FOURCC 會指定 DV 數據如消費者使用數位 VCR 規格的第 2 部分所定義。 視訊的格式為 525 行,29.97 Hz (525-60) 或 625 行,25.00 Hz (625-50)。

'dvhd' 資料流處理程式 FOURCC 會指定 DV 數據如消費者使用數位 VCR 規格的第 3 部分所定義。 視訊的格式為 1125 行,30.00 Hz (1125-60) 或 1250 行,25.00 Hz (1250-50)。

'dvsl' 資料流處理程式 FOURCC 會指定 DV 數據如消費者使用數位 VCR 規格的第 6 部分所定義。 影片的格式為高壓縮 SD (SDL)。

注意

本文的其餘部分提供『dvsd』 資料流的定義。

 

數據流標頭區塊後面必須接著 DVINFO 數據流格式區塊。

實際的 DV 資料會儲存為 '##dc' 區塊中的 'movi' 區塊(格式中的 ## 代表數據流標識符)。 每個區塊都包含一個數據框架,分別為 525-60 或 625-50 系統 10 或 12 個 DV DIF 序列。 DV SD ('dvsd') DIF 序列格式定義於消費者使用數位VCR 規格的第 2 部分。

下列範例顯示具有一個 DV 數據流之 AVI 檔案的 AIFF RIFF 窗體,並隨著已完成的標頭區塊展開。

00000000 RIFF (0FAE35D4) 'AVI '
0000000C     LIST (00000106) 'hdrl'
00000018         avih (00000038)
                     dwMicroSecPerFrame    : 33367
                     dwMaxBytesPerSec      : 3728000
                     dwPaddingGranularity  : 0
                     dwFlags               : 0x810 HASINDEX | TRUSTCKTYPE
                     dwTotalFrames         : 2192
                     dwInitialFrames       : 0
                     dwStreams             : 1
                     dwSuggestedBufferSize : 120000
                     dwWidth               : 720
                     dwHeight              : 480
                     dwReserved            : 0x0
00000058         LIST (0000006C) 'strl'
00000064             strh (00000038)
                         fccType               : 'iavs'
                         fccHandler            : 'dvsd'
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 100 (29.970 Frames/Sec)
                         dwRate                : 2997
                         dwStart               : 0
                         dwLength              : 2192
                         dwSuggestedBufferSize : 120000
                         dwQuality             : 0
                         dwSampleSize          : 0
                         rcFrame               : 0,0,720,480
000000A4             strf (00000020)
                         dwDVAAuxSrc     : 0x........
                         dwDVAAuxCtl     : 0x........
                         dwDVAAuxSrc1    : 0x........
                         dwDVAAuxCtl1    : 0x........
                         dwDVVAuxSrc     : 0x........
                         dwDVVAuxCtl     : 0x........
                         dwDVReserved[2] : 0,0
000000CC     LIST (0FADAC00) 'movi'
0FADACD4     idx1 (00008900)

包含 DV 視訊和 DV 音訊串流的 AVI 檔案 (Type-2)

交錯的 DV 數據可以分割成視訊串流,以及 AVI RIFF 檔案內的一到四個音訊串流。 這具有與 Windows 視訊回溯相容的優點,因為它包含標準視訊 'vids' 數據流,而且至少有一個標準音訊 'auds' 數據流。主要缺點是,此檔格式需要將音訊數據重複儲存為音頻串流。 「影片」數據流實際上是原生交錯的 DV 數據流。 不過,作為具有 『dvsd』 處理程式類型的標準 『vids』 數據流,會使用 DV 視訊譯碼器。 此格式也需要使用 DV 分割器 篩選,以分割「擷取」檔案,再將其寫入為AVI檔案。

DV 資料可以儲存為視訊串流,其中包含 AVI RIFF 檔案中個別數目的音訊串流。 視訊串流是以標準視訊串流標頭指定(fccType 成員值為 'vids')。 fccHandler 成員指定為 'dvsd'、'dvhd' 或 'dvsl'。 視訊數據流的每秒畫面必須指定於 dwRatedwScale 成員,以及 dwLength 成員中 'movi' 區塊中的視訊區塊總數。

在這個包含 DV 視訊為「vids」串流和 DV 音訊為 DV 格式的 AVI 檔案中,視訊數據流格式區塊是標準 BITMAPINFOHEADER 結構。 數據流格式區塊可以選擇性地擴充,以包含 DVINFO 區塊, 將數據流格式區塊大小從 40 個字節(BITMAPINFOHEADER 結構的大小)增加到 72 個字節(BITMAPINFOHEADER 的大小 加上 DVINFO 結構),並緊接在 BITMAPINFOHEADER 數據 結構之後 數據結構。

音訊串流是以標準音訊數據流標頭指定(fccType 成員值為 'auds')。 fccHandler 成員不會用於音訊串流。

DV 視訊數據會儲存為 '##dc' 區塊,如先前含有一個 DV 數據的 AVI 檔案描述中所定義,音訊數據會儲存為 '##wb' 區塊在 'movi' 區塊中。

注意

某些語言和國家/地區可能無法使用消費者使用數位 VCR 規格

 

下列範例顯示 AVI 檔案的 AIFF RIFF 窗體,其中包含 DV 視訊為 'vids' 數據流,並以已完成標頭區塊展開的 DV 音頻作為 'auds' 數據流(包括選擇性的 DVINFO 數據後,BITMAPINFO 'vids' 數據流的 'strf' 子區塊中)。

00000000 RIFF (103E2920) 'AVI '
0000000C     LIST (00000146) 'hdrl'
00000018         avih (00000038)
                     dwMicroSecPerFrame    : 33367
                     dwMaxBytesPerSec      : 3728000
                     dwPaddingGranularity  : 0
                     dwFlags               : 0x810 HASINDEX | TRUSTCKTYPE
                     dwTotalFrames         : 2192
                     dwInitialFrames       : 0
                     dwStreams             : 2
                     dwSuggestedBufferSize : 120000
                     dwWidth               : 720
                     dwHeight              : 480
                     dwReserved            : 0x0
00000058         LIST (00000094) 'strl'
00000064             strh (00000038)
                         fccType               : 'vids'
                         fccHandler            : 'dvsd'
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 100 (29.970 Frames/Sec)
                         dwRate                : 2997
                         dwStart               : 0
                         dwLength              : 2192
                         dwSuggestedBufferSize : 120000
                         dwQuality             : 0
                         dwSampleSize          : 0
                         rcFrame               : 0,0,720,480
000000A4             strf (00000048)
                         biSize          : 40
                         biWidth         : 720
                         biHeight        : 480
                         biPlanes        : 1
                         biBitCount      : 24
                         biCompression   : 0x64737664 'dvsd'
                         biSizeImage     : 120000
                         biXPelsPerMeter : 0
                         biYPelsPerMeter : 0
                         biClrUsed       : 0
                         biClrImportant  : 0
                         dwDVAAuxSrc     : 0x........
                         dwDVAAuxCtl     : 0x........
                         dwDVAAuxSrc1    : 0x........
                         dwDVAAuxCtl1    : 0x........
                         dwDVVAuxSrc     : 0x........
                         dwDVVAuxCtl     : 0x........
                         dwDVReserved[2] : 0,0
000000F4         LIST (0000005E) 'strl'
00000100             strh (00000038)
                         fccType               : 'auds'
                         fccHandler            : '    '
                         dwFlags               : 0x0
                         wPriority             : 0
                         wLanguage             : 0x0 undefined
                         dwInitialFrames       : 0
                         dwScale               : 1 (32000.000 Samples/Sec)
                         dwRate                : 32000
                         dwStart               : 0
                         dwLength              : 2340474
                         dwSuggestedBufferSize : 4272
                         dwQuality             : 0
                         dwSampleSize          : 4
                         rcFrame               : 0,0,0,0
00000140             strf (00000012)
                         wFormatTag      : 1 PCM
                         nChannels       : 2
                         nSamplesPerSec  : 32000
                         nAvgBytesPerSec : 128000
                         nBlockAlign     : 4
                         wBitsPerSample  : 16
                         cbSize          : 0
00000814     LIST (103D0EF4) 'movi'
103D1710     idx1 (00011210)

AVI 檔案格式