Udostępnij przez


Dane DV w formacie pliku AVI

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Firma Microsoft określiła format przechowywania danych cyfrowych wideo (DV) w plikach AVI. Zgodność z tą specyfikacją zapewni, że pliki AVI utworzone w tym formacie będą zgodne z przyszłymi wersjami cyfrowej architektury wideo DirectShow dla systemu Windowsplatform.

W tym artykule opisano format plików AVI zawierających dane DV. Zdefiniowano określone kody FOURCC (kody czterech znaków) dla przeplatanych strumieni danych DV i kompresorów DV/uchwytów strumieni dekompresora. Zdefiniowano strukturę formatu strumienia dla danych DV. Określono specyfikacje dla dwóch metod przechowywania danych DV w formacie pliku AVI.

Przyjęto założenie, że czytnik jest zaznajomiony z formatem danych DV. (Ten format jest zdefiniowany w specyfikacji cyfrowych VCR używanych przez konsumentów, nazywanej również niebieską książką).

Istnieją dwa typy plików DV AVI: pliki AVI zawierające jeden strumień danych DV o nazwie type-1 plików; i pliki AVI zawierające wideo DV jako strumień "vids" i audio DV jako strumienie "auds", nazywane type-2 pliki.

pliki AVI zawierające jeden strumień danych DV (typ 1)

Przeplatane dane DV mogą być przechowywane w natywnym formacie jako pojedynczy strumień w pliku AVI RIFF. Ma to zaletę korzystania z minimalnej ilości magazynu danych dla dv. Podstawową wadą jest to, że ten format pliku nie jest zgodny z poprzednimi wersjami wideo dla systemu Windows, ponieważ nie zawiera ani wideo "vids" lub strumienia audio "auds". Dostępna jest obsługa przeplatanego strumienia DV za pośrednictwem DV Muxer i filtrów DV Splitter dostarczanych z directshow.

Dane DV mogą być przechowywane w jednym strumieniu w pliku AVI RIFF, określając "iavs" (przeplatane strumienie audio i wideo) FOURCC (czteroznaczny kod) w fccType elementu członkowskiego i jedną z "dvsd", "dvhd" lub "dvsl" FOURCCs w fccHandler elementu członkowskiego nagłówka strumienia "strh". Ramki na sekundę strumienia wideo muszą być określone w dwRate i dwScale składowych oraz łączną liczbę bloków wideo we fragcie "movi" w dwLength elementu członkowskiego.

Procedura obsługi strumienia "dvsd" FOURCC określa, że dane DV są zdefiniowane w części 2 specyfikacji cyfrowych VCRs. Wideo jest w formacie 525 linii z 29,97 Hz (525-60) lub 625 linii z 25,00 Hz (625-50).

Procedura obsługi strumienia "dvhd" FOURCC określa, że dane DV są zdefiniowane w części 3 specyfikacji użycia cyfrowych VCRs. Wideo jest w formacie 1125 linii z 30,00 Hz (1125-60) lub 1250 linii z 25,00 Hz (1250-50).

Procedura obsługi strumienia "dvsl" FOURCC określa, że dane DV są zgodnie z definicją w części 6 specyfikacji specyfikacji cyfrowych VCR używanych przez konsumentów. Wideo jest w formacie SD o wysokiej kompresji (SDL).

Nuta

Pozostała część tego artykułu zawiera definicje strumieni "dvsd".

 

Fragment nagłówka strumienia musi być zgodny z fragmentem DVINFO formacie strumienia.

Rzeczywiste dane DV są przechowywane jako fragmenty "##dc" we fragmentach "movi" (## w formacie reprezentuje identyfikator strumienia). Każdy fragment zawiera jedną ramkę danych, odpowiednio 10 lub 12 sekwencji DV DIF dla systemów 525-60 lub 625-50. Format sekwencji DIF DV SD ('dvsd') jest zdefiniowany w części 2 specyfikacji specyfikacji cyfrowych VCR używanych przez konsumentów.

W poniższym przykładzie przedstawiono formularz AIFF RIFF dla pliku AVI z jednym strumieniem danych DV, rozwinięty z ukończonymi fragmentami nagłówka.

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)

pliki AVI zawierające strumienie audio DV i DV (Type-2)

Przeplatane dane DV można podzielić na strumień wideo i jeden do czterech strumieni audio w pliku AVI RIFF. Ma to zaletę zapewnienia zgodności wstecznej z wideo dla systemu Windows, ponieważ zawiera standardowy strumień wideo "vids" i co najmniej jeden standardowy strumień audio "auds" Podstawowa wadą jest to, że ten format pliku wymaga nadmiarowego przechowywania danych audio jako strumieni audio. Strumień "wideo" jest w rzeczywistości natywnym przeplatanym strumieniem danych DV. Jednak jako standardowy strumień "vids" z typem obsługi "dvsd", używany jest dekodera DV Video. Ten format wymaga również użycia filtru DV, aby podzielić pliki "przechwycone" przed zapisaniem ich jako plików AVI.

Dane DV można przechowywać jako strumień wideo z oddzielną liczbą strumieni audio w pliku AVI RIFF. Strumień wideo jest określony ze standardowym nagłówkiem strumienia wideo (fccType wartość elementu członkowskiego to "vids". Element członkowski fccHandler jest określony jako "dvsd", "dvhd" lub "dvsl". Ramki na sekundę strumienia wideo muszą być określone w dwRate i dwScale składowych oraz łączną liczbę bloków wideo we fragcie "movi" w dwLength elementu członkowskiego.

W tym pliku AVI zawierającym wideo DV jako strumień "vids" i dźwięk DV jako "auds" strumienie DV, format strumienia wideo jest standardowym BITMAPINFOHEADER struktury. Fragment formatu strumienia można opcjonalnie rozszerzyć w celu uwzględnienia fragmentu DVINFO, zwiększając rozmiar fragmentu formatu strumienia z 40 bajtów (rozmiar struktury BITMAPINFOHEAD ER) do 72 bajtów (rozmiar BITMAPINFOHEADER oraz struktury DVINFO) i bezpośrednio zgodnie z BITMAPINFOHEADER strukturą danych DVINFO.

Strumienie audio są określane za pomocą standardowego nagłówka strumienia audio (fccType wartość elementu członkowskiego to "auds". Element członkowski programu fccHandler nie jest używany dla strumieni audio.

Dane wideo DV są przechowywane jako fragmenty "##dc", zgodnie z definicją w poprzednim opisie pliku AVI z jednymi danymi DV, a dane audio są przechowywane jako fragmenty "##wb" we fragmentach "movi".

Nuta

Specyfikacja cyfrowych vcR używanych przez konsumentów może nie być dostępna w niektórych językach i krajach.

 

W poniższym przykładzie pokazano formularz AIFF RIFF dla pliku AVI zawierającego wideo DV jako strumień "vids" i dźwięk DV jako strumienie "auds" rozwinięte z ukończonymi fragmentami nagłówka (w tym opcjonalnymi DVINFO danych po BITMAPINFO we fragmentach podrzędnych "strf" dla strumienia "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)

format pliku AVI