Audio Video Interleave (կրճատ AVI; «աուդիո և վիդեո հերթագայություն») RIFF-մեդիակոնտեյներ է, առաջին անգամ օգտագործվել է Microsoft-ի կողմից 1992 թվականին Video for Windows ծրագրային ապահովման մեջ։
Ֆայլի ֆորմատը AVI ընդլայնումով կարող է կրել վիդեո և աուդիո տվյալներ, խտացված կոդեկների տարբեր կոմբինացիաների օգտագործմամբ, որը թույլ է տալիս միատոն վերարտադրել տեսանյութը ձայնի հետ միասին։ AVI ֆայլը կարող է պարունակել տարբեր տեսակի խտացված տվյալներ (օրինակ՝ DivX-վիդեո + WMA-աուդիո կամ Indeo-վիդեո + PCM- աուդիո), կախված այն բանից, թե որ կոդեկն է օգտագործվել կոդավորման կամ ապակոդավորման համար։ Ինչպես DVD-ն, AVI ֆայլերը պահպանում են բազմահոսքային աուդիովիդեո։
Ֆայլի ֆորմատ
Բոլոր AVI ֆայլերը իրենց մեջ կրում են երկու տարբեր պարտադիր LIST chunk-եր, որոնք սահմանում են հոսքի ֆորմատը և տվյալները։ AVI ֆայլերը նաև կարող են ներառել chunk ինդեքսը։ Այդ լրացուցիչ chunk-ը սահմանում է ֆայլում վիդեոտվյալների տեղադրությունը։ AVI-ֆայլի տիպիկ կառուցվածք՝
RIFF ('AVI ' LIST ('hdrl' <վերնագիր>) LIST ('movi' <վիդեո>) ['idx1' <ինդեքս>])
LIST hdrl
AVI ֆայլի և տվյալների հոսքի վերնագրեր կրող Chunk: Տիպիկ կառուցվածք՝
LIST ('hrdl' 'avih' (< AVI ֆայլի վերնագիր>) LIST ('strl' <հոսք 1-ի վերնագիր>) LIST ('strl' <հոսք 2-ի վերնագիր>) LIST ('odml' < AVI ֆայլի ընդլայնված վերնագիր>))
Ֆայլի հիմնական վերնագիր
Ֆայլը սկսվում է հիմնական վերնագրից։ AVI ֆայլերում այդ վերնագիրը սահմանվում է chunk-ով և FOURCC 'avih'-ով։ Վերնագիրը պարունակում է ընդհանուր ինֆորմացիա ողջ ֆայլի համար, ինչպես օրինակ՝ ֆայլում հոսքերի քանակը, վիդեոհոսքի լայնությունը և բարձրությունը։ Հիմնական վերնագիրը ունի հետևյալ կառուցվածքը՝
typedef struct { DWORD dwMicroSecPerFrame; DWORD dwMaxBytesPerSec; DWORD dwReserved1; DWORD dwFlags; DWORD dwTotalFrames; DWORD dwInitialFrames; DWORD dwStreams; DWORD dwSuggestedBufferSize; DWORD dwWidth; DWORD dwHeight; DWORD dwReserved[4]; } MainAVIHeader;
dwMicroSecPerFrame-սահմանում է կադրերի միջև միկրովայրկյանների քանակը։ Այն ընդհանուր է ողջ ֆայլի համար։
dwMaxBytesPerSec-ցույց է տալիս ֆայլի տվյալների հաղորդման մոտավոր առավելագույն արագությունը։ Դրա իմաստը ցույց է տալիս վայրկյանում բայթերի քանակը, որոնք համակարգը պետք է մշակի։
dwFlags-պարունակում է վիդեոֆայլի հատկությունների ցուցակը. Թույլատրելի են հետևյալները.
| դրոշակ | նկարագրություն |
|---|---|
| AVIF_HASINDEX | Ֆայլում կա 'idx1' chunk. |
| AVIF_MUSTUSEINDEX | Ցույց է տալիս, որ ինդեքսը, այլ ոչ թե ֆայլում բլոկերի ֆիզիկական դիրքը, պետք է օգտագործվի, որպեսզի հնարավոր լինի որոշել տվյալների ցուցադրման հերթականությունը։ |
| AVIF_ISINTERLEAVED | Ցույց է տալիս աուդիո և վիդեո տվյալների հերթագայությամբ։ |
| AVIF_WASCAPTUREFILE | |
| AVIF_COPYRIGHTED | Ցույց է տալիս, որ ֆայլը կրում է հեղինակային իրավունքներով պաշտպանված տվյալներ և ծրագրային ապահովում։ |
dwTotalFrames- ցույց է տալիս կադրերի ընդհանուր քանակը ֆայլում։
dwStreams- ցույց է տալիս ֆայլում հոսքերի քանակը։ Օրինակ՝ աուդիո և վիդեո կրող ֆայլը ունի երկու հոսք։
dwSuggestedBufferSize-որոշում է ֆայլի ընթերցման համար խորհուրդ տրվող բուֆերի չափսը։ Այդ չափսը պետք է լինի անհրաժեշտ չափով մեծ, որպեսզի կրի ամենածավալուն chunk-ը։ Եթե այն հավասար է զրոյի կամ շատ քիչ է, ֆայլի վերարտադրման համար ծրագիրը կվերաբաշխի հիշողությունը աշխատանքի ընթացքում, որը կնվազեցնի արդյունավետությունը։
dwWidth- տալիս է AVI ֆայլի լայնությունը։
dwHeight-տալիս է AVI ֆայլի բարձրությունը։
Հոսքերի վերնագրեր
Հոսքի վերնագիրը ունի հետևյալ կառուցվածքը՝
typedef struct { FOURCC fccType; FOURCC fccHandler; DWORD dwFlags; DWORD dwPriority; DWORD dwInitialFrames; DWORD dwScale; DWORD dwRate; DWORD dwStart; DWORD dwLength; DWORD dwSuggestedBufferSize; DWORD dwQuality; DWORD dwSampleSize; RECT rcFrame; } AVIStreamHeader;
Ֆայլի ընդլայնված վերնագիր
Ֆայլի ընդլայնված վերնագիրը ունի հետևյալ կառուցվածքը՝
typedef struct { DWORD dwTotalFrames; } ODMLExtendedAVIHeader;
Արտաքին հղումներ
- AVI տեխնոլոգիայի նկարագրություն John’ P. McGowan’-ի հեղինակությամբ
- RIFF-AVI ֆորմատի դոկումենտացիա
- FourCC կոդեկների ցուցակ