Dados DV no formato de arquivo AVI
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
A Microsoft especificou o formato para armazenamento de dados dv (vídeo digital) em arquivos AVI. Em conformidade com essa especificação, os arquivos AVI criados nesse formato serão compatíveis com versões futuras da arquitetura de vídeo digital do DirectShow para o Windowsplatform.
Este artigo descreve o formato dos arquivos AVI que contêm dados DV. FourCCs específicos (códigos de quatro caracteres) para fluxos de dados DV intercalados e manipuladores de fluxo de compressor/descompactador DV são definidos. A estrutura de formato de fluxo para dados DV é definida. Especificações para dois métodos de armazenamento de dados DV no formato de arquivo AVI são especificadas.
Supõe-se que o leitor esteja familiarizado com o formato de dados DV. (Esse formato é definido na Especificação de VCRs digitais de uso do consumidor, também chamado de Livro Azul.)
Há dois tipos de arquivos DV AVI: arquivos AVI que contêm um fluxo de dados DV, chamado arquivos tipo 1 ; e arquivos AVI que contêm vídeo DV como um fluxo 'vids' e áudio DV como fluxos 'auds', chamados arquivos tipo 2 .
Arquivos AVI que contêm um fluxo de dados DV (tipo 1)
Os dados de DV intercalados podem ser armazenados em seu formato nativo como um único fluxo dentro de um arquivo RIFF da AVI. Isso tem a vantagem de usar a quantidade mínima de armazenamento de dados para DV. A principal desvantagem é que esse formato de arquivo não é compatível com versões anteriores com Vídeo para Windows, pois não contém um vídeo 'vids' ou um fluxo de áudio 'auds'. O suporte é fornecido para o fluxo de DV intercalado por meio dos filtros DV Muxer e DV Splitter fornecidos com o DirectShow.
Os dados dv podem ser armazenados em um único fluxo dentro de um arquivo AVI RIFF especificando os 'iavs' (fluxo de áudio e vídeo intercalado) FOURCC (código de quatro caracteres) no membro fccType e qualquer um dos FOURCCs 'dvsd', 'dvhd' ou 'dvsl' no membro fccHandler da parte de cabeçalho de fluxo 'strh'. Os quadros por segundo do fluxo de vídeo devem ser especificados nos membros dwRate e dwScale e o número total de blocos de vídeo na parte 'movi' no membro dwLength .
O manipulador de fluxo 'dvsd' FOURCC especifica que os dados de DV são definidos na Parte 2 da Especificação de VCRs Digitais de Uso do Consumidor. O vídeo está no formato de 525 linhas a 29,97 Hz (525-60) ou 625 linhas a 25,00 Hz (625-50).
O manipulador de fluxo 'dvhd' FOURCC especifica que os dados de DV são definidos na Parte 3 da Especificação de VCRs Digitais de uso do consumidor. O vídeo está no formato de 1125 linhas a 30,00 Hz (1125-60) ou 1250 linhas a 25,00 Hz (1250-50).
O manipulador de fluxo 'dvsl' FOURCC especifica que os dados de DV são definidos na Parte 6 da Especificação de VCRs Digitais de Uso do Consumidor. O vídeo está no formato SDL (SDL de alta compactação).
Observação
O restante deste artigo fornece definições para fluxos 'dvsd'.
A parte do cabeçalho de fluxo deve ser seguida por uma parte de formato de fluxo DVINFO .
Os dados reais do DV são armazenados como partes '##dc' na parte 'movi' (o ## no formato representa o identificador de fluxo). Cada parte contém um quadro de dados, 10 ou 12 sequências DV DIF para sistemas 525-60 ou 625-50, respectivamente. O formato de sequência DIF do DV SD ('dvsd') é definido na Parte 2 da Especificação de VCRs Digitais de Uso do Consumidor.
O exemplo a seguir mostra o formulário AIFF RIFF para um arquivo AVI com um fluxo de dados DV, expandido com partes de cabeçalho concluídas.
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)
Arquivos AVI que contêm fluxos de áudio DV e vídeo DV (Tipo 2)
Os dados de DV intercalados podem ser divididos em um fluxo de vídeo e de um a quatro fluxos de áudio dentro de um arquivo RIFF da AVI. Isso tem a vantagem de ser compatível com versões anteriores com Vídeo para Windows, pois contém um fluxo de vídeo padrão 'vids' e pelo menos um fluxo de áudio padrão 'auds'. A principal desvantagem é que esse formato de arquivo exige que os dados de áudio sejam armazenados com redundância como fluxos de áudio. O fluxo de "vídeo" é, na verdade, o fluxo de dados DE DV intercalado nativo. No entanto, como um fluxo 'vids' padrão com um tipo de manipulador de 'dvsd', o Decodificador de Vídeo DV é usado. Esse formato também requer o uso do filtro divisor DV para dividir arquivos "capturados" antes de gravá-los como arquivos AVI.
Os dados dv podem ser armazenados como um fluxo de vídeo com um número separado de fluxos de áudio em um arquivo AVI RIFF. O fluxo de vídeo é especificado com um cabeçalho de fluxo de vídeo padrão (o valor do membro fccType é 'vids'). O membro fccHandler é especificado como 'dvsd', 'dvhd' ou 'dvsl'. Os quadros por segundo do fluxo de vídeo devem ser especificados nos membros dwRate e dwScale e o número total de blocos de vídeo na parte 'movi' no membro dwLength .
Neste arquivo AVI que contém vídeo DV como um fluxo 'vids' e áudio DV como a forma de fluxos 'auds' de DV, a parte de formato de fluxo de vídeo é uma estrutura BITMAPINFOHEADER padrão. Opcionalmente, a parte de formato de fluxo pode ser estendida para incluir a parte DVINFO , aumentando o tamanho da parte do formato de fluxo de 40 bytes (tamanho da estrutura BITMAPINFOHEADER ) para 72 bytes (tamanho de BITMAPINFOHEADER mais estruturas DVINFO ) e imediatamente após a estrutura de dados BITMAPINFOHEADER com uma estrutura de dados DVINFO .
Os fluxos de áudio são especificados com um cabeçalho de fluxo de áudio padrão (o valor do membro fccType é 'auds'). O membro fccHandler não é usado para fluxos de áudio.
Os dados de vídeo DV são armazenados como partes '##dc', conforme definido na descrição anterior de um arquivo AVI com um dado DV, e os dados de áudio são armazenados como partes '##wb' na parte 'movi'.
Observação
A especificação de VCRs digitais de uso do consumidor pode não estar disponível em alguns idiomas e países.
O exemplo a seguir mostra o formulário AIFF RIFF para um arquivo AVI que contém vídeo DV como um fluxo 'vids' e áudio DV como fluxos 'auds' expandidos com partes de cabeçalho concluídas (incluindo dados DVINFO opcionais após o BITMAPINFO na subcadeia 'strf' para o fluxo '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)
Tópicos relacionados