AVI 파일 형식의 DV 데이터

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

Microsoft는 AVI 파일에서 DV(디지털 비디오) 데이터를 저장하는 형식을 지정했습니다. 이 사양을 준수하면 이 형식으로 작성된 AVI 파일이 Windowsplatform에 대한 DirectShow 디지털 비디오 아키텍처의 이후 버전과 호환됩니다.

이 문서에서는 DV 데이터를 포함하는 AVI 파일의 형식을 설명합니다. 인터리브된 DV 데이터 스트림 및 DV 압축/압축 해제기 스트림 처리기에 대한 특정 FOURC(4자 코드)가 정의됩니다. DV 데이터의 스트림 형식 구조가 정의됩니다. DV 데이터를 AVI 파일 형식으로 저장하는 두 가지 방법에 대한 사양이 지정됩니다.

판독기는 DV 데이터 형식에 익숙한다고 가정합니다. (이 형식은 Blue Book이라고도 하는 소비자 사용 디지털 VCR 사양에 정의되어 있습니다.)

DV AVI 파일에는 두 가지 유형이 있습니다. 즉, 형식 1 파일이라고 하는 하나의 DV 데이터 스트림을 포함하는 AVI 파일입니다. 및 DV 비디오를 'vids' 스트림으로 포함하고 DV 오디오를 'auds' 스트림으로 포함하는 AVI 파일( type-2 파일이라고 함).

하나의 DV 데이터 스트림을 포함하는 AVI 파일(Type-1)

인터리브된 DV 데이터는 네이티브 형식으로 AVI RIFF 파일 내에서 단일 스트림으로 저장할 수 있습니다. 이는 DV에 대한 최소 데이터 스토리지 양을 사용할 경우의 장점이 있습니다. 주요 단점은 이 파일 형식이 비디오 'vids' 또는 오디오 'auds' 스트림을 포함하지 않기 때문에 Windows용 비디오와 이전 버전과 호환되지 않는다는 것입니다. DirectShow와 함께 제공되는 DV MuxerDV 분할기 필터를 통해 인터리브된 DV 스트림에 대한 지원이 제공됩니다.

DV 데이터는 fccType 멤버의 'iavs'(인터리브 오디오 및 비디오 스트림) FOURCC(4자 코드)와 'strh' 스트림 헤더 청크의 fccHandler 멤버에 있는 'dvsd', 'dvhd' 또는 'dvsl' FOURCC 중 하나를 지정하여 AVI RIFF 파일 내의 단일 스트림에 저장할 수 있습니다. 비디오 스트림의 초당 프레임은 dwRate 및 dwScale 멤버와 dwLength 멤버의 'movi' 청크에 있는 총 비디오 블록 수에 지정해야 합니다.

'dvsd' 스트림 처리기 FOURCC는 DV 데이터가 소비자 사용 디지털 VCR 사양의 2부에 정의된 대로 지정합니다. 비디오는 29.97Hz(525-60)에서 525줄 또는 25.00Hz(625-50)의 625줄 형식입니다.

'dvhd' 스트림 처리기 FOURCC는 DV 데이터가 소비자 사용 디지털 VCR 사양의 3부에 정의된 대로 지정합니다. 비디오는 30.00Hz(1125-60) 또는 25.00Hz(1250-50)의 1250줄에서 1125줄 형식입니다.

'dvsl' 스트림 처리기 FOURCC는 DV 데이터가 소비자 사용 디지털 VCR 사양의 6부에 정의된 대로 지정합니다. 비디오는 SDL(고압축 SD) 형식입니다.

참고

이 문서의 나머지 부분에서는 'dvsd' 스트림에 대한 정의를 제공합니다.

 

스트림 헤더 청크 뒤에 DVINFO 스트림 형식 청크가 있어야 합니다.

실제 DV 데이터는 'movi' 청크에 '##dc' 청크로 저장됩니다(형식의 ##은 스트림 식별자를 나타냅니다). 각 청크에는 각각 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 파일 내에서 비디오 스트림과 1~4개의 오디오 스트림으로 분할할 수 있습니다. 이는 표준 비디오 'vids' 스트림과 하나 이상의 표준 오디오 'auds' 스트림이 포함되어 있기 때문에 Windows용 Video와 이전 버전과 호환된다는 장점이 있습니다. 주요 단점은 이 파일 형식을 사용하려면 오디오 데이터를 오디오 스트림으로 중복 저장해야 한다는 것입니다. "비디오" 스트림은 실제로 네이티브 인터리브 DV 데이터 스트림입니다. 그러나 처리기 형식이 'dvsd'인 표준 'vids' 스트림으로 DV 비디오 디코더 가 사용됩니다. 또한 이 형식을 사용하려면 DV 분할자 필터를 사용하여 AVI 파일로 쓰기 전에 "캡처된" 파일을 분할해야 합니다.

DV 데이터는 AVI RIFF 파일에 별도의 수의 오디오 스트림이 있는 비디오 스트림으로 저장할 수 있습니다. 비디오 스트림은 표준 비디오 스트림 헤더로 지정됩니다( fccType 멤버 값은 'vids'). fccHandler 멤버는 'dvsd', 'dvhd' 또는 'dvsl'로 지정됩니다. 비디오 스트림의 초당 프레임은 dwRate 및 dwScale 멤버와 dwLength 멤버의 'movi' 청크에 있는 총 비디오 블록 수에 지정해야 합니다.

DV 비디오를 'vids' 스트림으로 포함하고 DV 오디오를 DV의 'auds' 스트림 형식으로 포함하는 이 AVI 파일에서 비디오 스트림 형식 청크는 표준 BITMAPINFOHEADER 구조입니다. 스트림 형식 청크는 필요에 따라 DVINFO 청크를 포함하도록 확장할 수 있습니다. 스트림 형식 청크 크기를 40바이트(BITMAPINFOHEADER 구조의 크기)에서 72바이트(BITMAPINFOHEADERDVINFO 구조의 크기)로 늘리고 DVINFO 데이터 구조가 있는 BITMAPINFOHEADER 데이터 구조 바로 다음에 오도록 할 수 있습니다.

오디오 스트림은 표준 오디오 스트림 헤더로 지정됩니다( fccType 멤버 값은 'auds'). fccHandler 멤버는 오디오 스트림에 사용되지 않습니다.

DV 비디오 데이터는 하나의 DV 데이터가 있는 AVI 파일에 대한 이전 설명에 정의된 대로 '##dc' 청크로 저장되고 오디오 데이터는 'movi' 청크에 '##wb' 청크로 저장됩니다.

참고

소비자 사용 디지털 VCR 사양은 일부 언어 및 국가에서 사용할 수 없습니다.

 

다음 예제에서는 DV 비디오를 'vids' 스트림으로 포함하는 AVI 파일의 AIFF RIFF 양식과 완료된 헤더 청크('vids' 스트림의 'strf' 하위 청크에 있는 BITMAPINFO 다음의 선택적 DVINFO 데이터 포함)로 확장된 'auds' 스트림으로 DV 오디오를 보여 줍니다.

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 파일 형식