Dati DV nel formato di file AVI
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Microsoft ha specificato il formato per l'archiviazione di dati video digitali (DV) nei file AVI. La conformità a questa specifica garantisce che i file AVI creati in questo formato saranno compatibili con le versioni future dell'architettura video digitale DirectShow per Windowsplatform.
Questo articolo descrive il formato dei file AVI contenenti dati DV. Sono definiti i QUATTROCC (codici a quattro caratteri) specifici per i flussi di dati DV interleaved e i gestori di flusso del compressore/decompressore DV. Viene definita la struttura del formato del flusso per i dati DV. Vengono specificate le specifiche per due metodi di archiviazione dei dati DV nel formato di file AVI.
Si presuppone che il lettore abbia familiarità con il formato dati DV. Questo formato è definito nella Specifica di vcr digitali, detto anche Blue Book.
Esistono due tipi di file DV AVI: file AVI che contengono un flusso di dati DV, denominato file di tipo 1; e i file AVI che contengono video DV come flusso "vids" e audio DV come flussi "auds", chiamati file di tipo 2.
file AVI contenenti un flusso di dati DV (tipo 1)
I dati DV interleaved possono essere archiviati nel formato nativo come singolo flusso all'interno di un file RIFF AVI. Questo ha il vantaggio di usare la quantità minima di archiviazione dei dati per DV. Lo svantaggio principale è che questo formato di file non è compatibile con le versioni precedenti di Video per Windows, perché non contiene né un video 'vids' o un flusso audio 'auds'. Il supporto viene fornito per il flusso DV interleaved tramite il dv Muxer e i filtri DV Splitter forniti con DirectShow.
I dati DV possono essere archiviati in un singolo flusso all'interno di un file AVI RIFF specificando i 'iavs' (flusso audio e video interleaved) FOURCC (codice a quattro caratteri) nel membro fccType e uno dei QUATTROCCC 'dvsd', 'dvhd' o 'dvsl' nel fccHandler membro dell'intestazione del flusso 'strh'. I fotogrammi al secondo del flusso video devono essere specificati nella dwRate e nei membri dwScale e il numero totale di blocchi video nel blocco "movi" nel membro dwLength.
Il gestore del flusso 'dvsd' FOURCC specifica che i dati DV sono definiti nella parte 2 della specifica di di vcr digitali. Il video è nel formato di 525 linee a 29,97 Hz (525-60) o 625 linee a 25,00 Hz (625-50).
Il gestore del flusso 'dvhd' FOURCC specifica che i dati DV sono definiti nella parte 3 della specifica delle richieste di recapito digitali. Il video è nel formato di 1125 linee a 30,00 Hz (1125-60) o 1250 linee a 25,00 Hz (1250-50).
Il gestore del flusso 'dvsl' FOURCC specifica che i dati DV sono definiti nella parte 6 della specifica di di vcr digitali. Il video è nel formato SDL (High Compression SD).
Nota
Nella parte restante di questo articolo vengono fornite definizioni per i flussi 'dvsd'.
Il blocco dell'intestazione del flusso deve essere seguito da un blocco di formato di flusso DVINFO.
I dati DV effettivi vengono archiviati come blocchi "##dc" nel blocco "movi" (## nel formato rappresenta l'identificatore del flusso). Ogni blocco contiene un frame di dati, rispettivamente 10 o 12 sequenze DIF DV per sistemi 525-60 o 625-50. Il formato di sequenza DIF DV SD ('dvsd') è definito nella parte 2 della specifica delle richieste di recapito digitali.
L'esempio seguente mostra il modulo AIFF RIFF per un file AVI con un flusso di dati DV, espanso con blocchi di intestazione completati.
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)
file AVI contenenti flussi audio DV e DV (tipo 2)
I dati DV interleaved possono essere suddivisi in un flusso video e uno a quattro flussi audio all'interno di un file RIFF AVI. Questo ha il vantaggio di essere compatibile con le versioni precedenti con Video per Windows, perché contiene un flusso video standard "vids" e almeno un flusso audio standard 'auds'. Lo svantaggio principale è che questo formato di file richiede che i dati audio vengano archiviati in modo ridondante come flussi audio. Il flusso "video" è in realtà il flusso di dati DV interleaved nativo. Tuttavia, come flusso standard "vids" con un tipo di gestore "dvsd", viene usato il DV Video Decoder. Questo formato richiede anche l'uso del filtro DV Splitter per suddividere i file "acquisiti" prima di scriverli come file AVI.
I dati DV possono essere archiviati come flusso video con un numero separato di flussi audio in un file RIFF AVI. Il flusso video viene specificato con un'intestazione di flusso video standard (il valore fccType membro è "vids"). Il membro fccHandler viene specificato come 'dvsd', 'dvhd' o 'dvsl'. I fotogrammi al secondo del flusso video devono essere specificati nella dwRate e nei membri dwScale e il numero totale di blocchi video nel blocco "movi" nel membro dwLength.
In questo file AVI contenente video DV come flusso "vids" e audio DV sotto forma di flussi "auds" di DV, il formato di flusso video è un blocco standard BITMAPINFOHEADER struttura. Il blocco di formato del flusso può essere esteso facoltativamente per includere il bloccoDVINFO, aumentando le dimensioni del blocco del formato di flusso da 40 byte (dimensioni della struttura BITMAPINFOHEADER) a 72 byte (dimensioni di BITMAPINFOHEADER più strutture di DVINFO) e immediatamente dopo la struttura di dati BITMAPINFOHEADER con una struttura di dati DVINFO.
I flussi audio sono specificati con un'intestazione di flusso audio standard (il valore fccType membro è 'auds'). Il membro fccHandler non viene usato per i flussi audio.
I dati video DV vengono archiviati come blocchi "##dc", come definito nella descrizione precedente di un file AVI con un solo dati DV e i dati audio vengono archiviati come blocchi "##wb" nel blocco "movi".
Nota
La Specifica di vcr digitali per uso dell'utente potrebbe non essere disponibile in alcune lingue e paesi.
L'esempio seguente mostra il modulo AIFF RIFF per un file AVI contenente video DV come flusso 'vids' e audio DV come flussi 'auds' espansi con blocchi di intestazione completati (inclusi i dati facoltativi DVINFO dopo il BITMAPINFO nel sotto-blocco 'strf' per il flusso 'vids').
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)
Argomenti correlati