AVI 檔案格式的 DV 資料
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
Microsoft 已指定在 AVI 檔案中儲存數位視訊 (DV) 資料的格式。 符合此規格可確保以此格式撰寫的 AVI 檔案與 Windowsplatform 之 DirectShow 數位視訊架構的未來版本相容。
本文說明包含 DV 資料的 AVI 檔案格式。 定義交錯的 DV 資料流程和 DV 壓縮器資料流程處理常式的四個字元代碼 (四個字元代碼) 。 定義 DV 資料的資料流程格式結構。 指定兩種方法以 AVI 檔案格式儲存 DV 資料的規格。
假設讀者熟悉 DV 資料格式。 (此格式定義于 消費者使用數位VCR 的規格中,也稱為 Blue Book.)
DV AVI 檔案有兩種類型:包含一個 DV 資料流程的 AVI 檔案,稱為 type-1 檔案;和 AVI 檔案,其中包含 DV 視訊作為「vids」串流,而 DV 音訊則稱為「auds」串流,稱為 type-2 檔案。
包含一個 DV 資料流程的 AVI 檔案 (type-1)
交錯的 DV 資料可以將其原生格式儲存為 AVI RIFF 檔案內的單一資料流程。 這具有針對 DV 使用最小資料儲存空間的優點。 主要缺點是這個檔案格式與 Windows 的 Video 不相容,因為它不包含視訊 'vids' 或音訊 'auds' 資料流程。 透過 DirectShow 提供的 DV Muxer 和 DV 分割器 篩選器,提供交錯 DV 資料流程的支援。
DV 資料可以透過在 AVI RIFF 檔案內指定 'iavs' (交錯的音訊和視訊串流,) FOURCC (四個字元的程式碼) ,並在 ' dvsd'、'dvhd' 或 'dvsl' FOURC 成員的 'strh' 資料流程標頭區塊中儲存四個字元代碼。 視訊資料流程每秒的畫面必須指定于 dwRate 和 dwScale 成員中,以及 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 的 Video 回溯相容,因為它包含標準視訊 'vids' 資料流程,而且至少有一個標準音頻 'auds' 資料流程。主要缺點是,此檔案格式需要將音訊資料重複儲存為音訊資料流程。 「影片」資料流程實際上是原生交錯的 DV 資料流程。 不過,作為具有 'dvsd' 處理常式類型的標準 'vids' 資料流程,會使用 DV 影片解碼器 。 此格式也需要使用 DV 分隔器 篩選來分割「擷取」檔案,再將其寫入為 AVI 檔案。
DV 資料可以儲存為視訊串流,其中包含 AVI RIFF 檔案中個別數目的音訊串流。 視訊串流是以標準視訊資料流程標頭指定, () ) 的 (。 指定為 'dvsd'、'dvhd' 或 'dvsl' 的 azureHandler 成員。 視訊資料流程每秒的畫面必須指定于 dwRate 和 dwScale 成員中,以及 dwLength 成員中 'movi' 區塊中的視訊區塊總數。
在此 AVI 檔案中,包含 DV 視訊作為'vids' 資料流程,而 DV 音訊為 DV 的 'auds' 資料流程形式,視訊串流格式區塊是標準的 BITMAPINFOHEADER 結構。 資料流程格式區塊可以選擇性地擴充以包含DVINFO區塊,方法是將資料流程格式區塊大小從點陣圖INFOHEADER) 結構的 40 位元組 (大小增加到 72 個位元組, (點陣圖INFOHEADER的大小加上DVINFO結構) ,並緊接在具有DVINFO資料結構的BITMAPINFOHEADER資料結構之後。
(的音訊資料流程) 是使用標準音頻資料流程標頭來指定, ( (為 'auds') 。 針對音訊串流,不會使用 此 apiHandler 成員。
DV 視訊資料會儲存為 '##dc' 區塊,如具有一個 DV 資料的 AVI 檔案先前描述中所定義,音訊資料會儲存為 '##wb' 區塊的 'movi' 區塊。
注意
某些語言和國家/地區可能無法使用 取用者數位VCR 的規格 。
下列範例顯示 AVI 檔案的 AIFF RIFF 表單,其中包含 DV 視訊為 'vids' 資料流程,而 DV 音訊為 'auds' 串流展開, (包含 'strf' 子區塊中點陣圖INFO的選擇性DVINFO資料) 。
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)
相關主題