Datos DV en formato de archivo AVI
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
Microsoft ha especificado el formato para el almacenamiento de datos de vídeo digital (DV) en archivos AVI. Conforme a esta especificación, se asegurará de que los archivos AVI creados en este formato serán compatibles con versiones futuras de la arquitectura de vídeo digital directShow para Windowsplatform.
En este artículo se describe el formato de los archivos AVI que contienen datos DV. Se definen los CUATROCC específicos (códigos de cuatro caracteres) para flujos de datos DV intercalados y controladores de flujo de compresor/descompresión dv. Se define la estructura de formato de secuencia para los datos DV. Se especifican especificaciones para dos métodos de almacenamiento de datos DV en el formato de archivo AVI.
Se supone que el lector está familiarizado con el formato de datos DV. (Este formato se define en la especificación de VCR digitales de uso del consumidor, también denominado libro azul).
Hay dos tipos de archivos DV AVI: archivos AVI que contienen una secuencia de datos DV, denominada archivos de tipo 1 ; y archivos AVI que contienen vídeo DV como secuencia "vids" y audio DV como secuencias "auds", llamados archivos de tipo 2 .
Archivos AVI que contienen un flujo de datos DV (tipo-1)
Los datos DV intercalados se pueden almacenar en su formato nativo como una sola secuencia dentro de un archivo RIFF avi. Esto tiene la ventaja de usar la cantidad mínima de almacenamiento de datos para DV. La principal desventaja es que este formato de archivo no es compatible con versiones anteriores con Video para Windows, ya que no contiene una secuencia de vídeo "vids" o de audio "auds". Se proporciona compatibilidad con la secuencia DV intercalada a través de los filtros DV Muxer y DV Splitter proporcionados con DirectShow.
Los datos de DV se pueden almacenar en una sola secuencia dentro de un archivo RIFF de AVI especificando los "iavs" (audio intercalado y secuencia de vídeo) FOURCC (código de cuatro caracteres) en el miembro fccType y cualquiera de los "dvsd", "dvhd" o "dvsl" FOURCC en el miembro fccHandler del fragmento de encabezado de secuencia "strh". Los fotogramas por segundo de la secuencia de vídeo deben especificarse en los miembros dwRate y dwScale y el número total de bloques de vídeo del fragmento "movi" del miembro dwLength .
El controlador de flujo "dvsd" FOURCC especifica que los datos DV se definen en la parte 2 de la especificación de VCR digitales de uso del consumidor. El vídeo tiene el formato de 525 líneas a 29,97 Hz (525-60) o 625 líneas a 25,00 Hz (625-50).
El controlador de flujo 'dvhd' FOURCC especifica que los datos DV se definen en la parte 3 de la especificación de VCR digitales de uso del consumidor. El vídeo tiene el formato de 1125 líneas a 30,00 Hz (1125-60) o 1250 líneas a 25,00 Hz (1250-50).
El controlador de flujo 'dvsl' FOURCC especifica que los datos DV se definen en la parte 6 de especificación de VCR digitales de uso del consumidor. El vídeo tiene el formato sd de alta compresión (SDL).
Nota:
En el resto de este artículo se proporcionan definiciones para secuencias "dvsd".
El fragmento del encabezado de secuencia debe estar seguido de un fragmento de formato de secuencia DVINFO .
Los datos de DV reales se almacenan como fragmentos "##dc" en el fragmento "movi" (el ## en el formato representa el identificador de secuencia). Cada fragmento contiene un marco de datos, ya sea 10 o 12 secuencias DIF dv para sistemas 525-60 o 625-50, respectivamente. El formato de secuencia DIF DV SD ('dvsd') se define en la parte 2 de la especificación de VCR digitales de uso del consumidor.
En el ejemplo siguiente se muestra el formulario AIFF RIFF para un archivo AVI con un flujo de datos DV, expandido con fragmentos de encabezado completados.
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)
Archivos AVI que contienen secuencias de audio DV y vídeo DV (tipo 2)
Los datos de DV intercalados se pueden dividir en una secuencia de vídeo y uno a cuatro secuencias de audio dentro de un archivo RIFF avi. Esto tiene la ventaja de ser compatible con versiones anteriores con Video para Windows, ya que contiene una secuencia de vídeo estándar "vids" y al menos una secuencia de audio estándar "auds" La desventaja principal es que este formato de archivo requiere que los datos de audio se almacenen redundantemente como secuencias de audio. La secuencia de "vídeo" es realmente el flujo de datos DV intercalado nativo. Sin embargo, como secuencia "vids" estándar con un tipo de controlador de "dvsd", se usa el descodificador de vídeo DV . Este formato también requiere el uso del filtro DV Splitter para dividir los archivos "capturados" antes de escribirlos como archivos AVI.
Los datos dv se pueden almacenar como una secuencia de vídeo con un número independiente de secuencias de audio en un archivo RIFF avi. La secuencia de vídeo se especifica con un encabezado de secuencia de vídeo estándar (el valor del miembro fccType es "vids"). El miembro fccHandler se especifica como "dvsd", "dvhd" o "dvsl". Los fotogramas por segundo de la secuencia de vídeo deben especificarse en los miembros dwRate y dwScale y el número total de bloques de vídeo del fragmento "movi" del miembro dwLength .
En este archivo AVI que contiene vídeo DV como una secuencia "vids" y audio DV como secuencias "auds" de DV, el fragmento de formato de secuencia de vídeo es una estructura BITMAPINFOHEADER estándar. El fragmento de formato de secuencia se puede extender opcionalmente para incluir el fragmento DVINFO , aumentando el tamaño del fragmento de formato de secuencia de 40 bytes (tamaño de la estructura BITMAPINFOHEADER ) a 72 bytes (tamaño de BITMAPINFOHEADER más estructuras DVINFO ) y inmediatamente después de la estructura de datos BITMAPINFOHEADER con una estructura de datos DVINFO .
Las secuencias de audio se especifican con un encabezado de secuencia de audio estándar (el valor del miembro fccType es "auds"). El miembro fccHandler no se usa para secuencias de audio.
Los datos de vídeo DV se almacenan como fragmentos "##dc", como se define en la descripción anterior de un archivo AVI con un dato DV y los datos de audio se almacenan como fragmentos "##wb" en el fragmento "movi".
Nota:
Es posible que la especificación de los VCR digitales de uso del consumidor no esté disponible en algunos idiomas y países.
En el ejemplo siguiente se muestra el formulario AIFF RIFF para un archivo AVI que contiene vídeo DV como una secuencia "vids" y audio DV como secuencias "auds" expandidas con fragmentos de encabezado completados (incluidos datos DVINFO opcionales después de BITMAPINFO en el sub-fragmento "strf" para la secuencia "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)
Temas relacionados