Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio /Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]
Format file Microsoft AVI adalah spesifikasi file RIFF yang digunakan dengan aplikasi yang mengambil, mengedit, dan memutar urutan audio-video. Secara umum, file AVI berisi beberapa aliran dari berbagai jenis data. Sebagian besar urutan AVI menggunakan aliran audio dan video. Variasi sederhana untuk urutan AVI menggunakan data video dan tidak memerlukan aliran audio.
Bagian ini tidak menjelaskan ekstensi format file OpenDML AVI. Untuk informasi lebih lanjut tentang ekstensi ini, lihat OpenDML AVI File Format Extensions, diterbitkan oleh Subkomite Format File OpenDML AVI M-JPEG.
FOURCCs
FOURCC (kode empat karakter) adalah bilangan bulat yang tidak ditandatangani 32-bit yang dibuat dengan menggabungkan empat karakter ASCII. Misalnya, FOURCC 'abcd' diwakili pada sistem Little-Endian sebagai 0x64636261. FOURCC dapat berisi karakter spasi, jadi 'abc' adalah FOURCC yang valid. Format file AVI menggunakan kode FOURCC untuk mengidentifikasi jenis aliran, potongan data, entri indeks, dan informasi lainnya.
RIFF File Format
Format file AVI didasarkan pada format dokumen RIFF (format file pertukaran sumber daya). File RIFF terdiri dari header RIFF diikuti oleh nol atau lebih daftar dan potongan .
Header RIFF memiliki formulir berikut:
'RIFF' fileSize fileType (data)
di mana 'RIFF' adalah kode FOURCC harfiah 'RIFF',
fileSize
adalah nilai 4-byte yang memberikan ukuran data dalam file, danfileType
adalah FOURCC yang mengidentifikasi jenis file tertentu. NilaifileSize
mencakup ukuranfileType
FOURCC ditambah ukuran data berikut, tetapi tidak termasuk ukuran FOURCC 'RIFF' atau ukuranfileSize
. Data file terdiri dari potongan dan daftar, dalam urutan apa pun.Gugus memiliki formulir berikut:
ckID ckSize ckData
di mana
ckID
adalah FOURCC yang mengidentifikasi data yang terkandung dalam gugus,ckSize
adalah nilai 4 byte yang memberikan ukuran data dalamckData
, danckData
adalah nol atau lebih byte data. Data selalu diisi ke batas WORD terdekat.ckSize
memberikan ukuran data yang valid dalam gugus; itu tidak termasuk padding, ukuranckID
, atau ukuranckSize
.Daftar memiliki formulir berikut:
'LIST' listSize listType listData
di mana 'LIST' adalah kode FOURCC harfiah 'LIST',
listSize
adalah nilai 4-byte yang memberikan ukuran daftar,listType
adalah kode FOURCC, danlistData
terdiri dari gugus atau daftar, dalam urutan apa pun. NilailistSize
mencakup ukuranlistType
ditambah ukuranlistData
; tidak termasuk 'LIST' FOURCC atau ukuranlistSize
.
Sisa bagian ini menggunakan notasi berikut untuk menjelaskan gugus RIFF:
ckID ( ckData )
di mana ukuran gugus implisit. Dengan menggunakan notasi ini, daftar dapat direpresentasikan sebagai:
'LIST' ( listType ( listData ) )
Elemen opsional ditempatkan dalam tanda kurung: [ optional element ]
Formulir AVI RIFF
File AVI diidentifikasi oleh FOURCC 'AVI ' di header RIFF. Semua file AVI mencakup dua gugus LIST wajib, yang menentukan format aliran dan data aliran. File AVI mungkin juga menyertakan gugus indeks, yang memberikan lokasi potongan data dalam file. File AVI dengan komponen-komponen ini memiliki formulir berikut:
RIFF ('AVI '
LIST ('hdrl' ... )
LIST ('movi' ... )
['idx1' (<AVI Index>) ]
)
Daftar 'hdrl' mendefinisikan format data dan merupakan potongan LIST pertama yang diperlukan. Daftar 'movi' berisi data untuk urutan AVI dan merupakan gugus LIST kedua yang diperlukan. Daftar 'idx1' berisi indeks. File AVI harus menyimpan ketiga komponen ini dalam urutan yang tepat.
Nota
Ekstensi OpenDML menentukan jenis indeks lain, yang diidentifikasi oleh FOURCC 'indx'.
Daftar 'hdrl' dan 'movi' menggunakan subchunk untuk data mereka. Contoh berikut menunjukkan formulir AVI RIFF yang diperluas dengan potongan yang diperlukan untuk menyelesaikan daftar ini:
RIFF ('AVI '
LIST ('hdrl'
'avih'(<Main AVI Header>)
LIST ('strl'
'strh'(<Stream header>)
'strf'(<Stream format>)
[ 'strd'(<Additional header data>) ]
[ 'strn'(<Stream name>) ]
...
)
...
)
LIST ('movi'
{SubChunk | LIST ('rec '
SubChunk1
SubChunk2
...
)
...
}
...
)
['idx1' (<AVI Index>) ]
)
Header Utama AVI
Daftar 'hdrl' dimulai dengan header AVI utama, yang terkandung dalam gugus 'avih'. Header utama berisi informasi global untuk seluruh file AVI, seperti jumlah aliran dalam file dan lebar dan tinggi urutan AVI. Potongan header utama terdiri dari strukturAVIMAINHEADER.
Header Aliran AVI
Satu atau beberapa daftar 'strl' mengikuti header utama. Daftar 'strl' diperlukan untuk setiap aliran data. Setiap daftar 'strl' berisi informasi tentang satu aliran dalam file, dan harus berisi gugus header aliran ('strh') dan gugus format aliran ('strf'). Selain itu, daftar 'strl' mungkin berisi gugus data stream-header ('strd') dan gugus nama aliran ('strn').
Gugus header aliran ('strh') terdiri dari strukturAVISTREAMHEADER.
Gugus format aliran ('strf') harus mengikuti gugus header aliran. Potongan format aliran menjelaskan format data dalam aliran. Data yang terkandung dalam gugus ini tergantung pada jenis aliran. Untuk streaming video, informasinya adalah struktur BITMAPINFO, termasuk informasi palet jika sesuai. Untuk aliran audio, informasinya adalah strukturWAVEFORMATEX.
Jika ada gugus data stream-header ('strd'), ia mengikuti potongan format aliran. Format dan isi gugus ini didefinisikan oleh pengandar codec. Biasanya, driver menggunakan informasi ini untuk konfigurasi. Aplikasi yang membaca dan menulis file AVI tidak perlu menginterpretasikan informasi ini; mereka sederhana mentransfernya ke dan dari driver sebagai blok memori.
Potongan 'strn' opsional berisi string teks null-terminated yang menjelaskan aliran.
Header stream dalam daftar 'hdrl' dikaitkan dengan data aliran dalam daftar 'movi' sesuai dengan urutan potongan 'strl'. Potongan 'strl' pertama berlaku untuk streaming 0, yang kedua berlaku untuk streaming 1, dan sebagainya.
Stream Data ('movi' List)
Mengikuti informasi header adalah daftar 'movi' yang berisi data aktual dalam aliran—yaitu bingkai video dan sampel audio. Potongan data dapat berada langsung dalam daftar 'movi', atau mungkin dikelompokkan dalam daftar 'rec'. Pengelompokan 'rec' menyiratkan bahwa potongan yang dikelompokkan harus dibaca dari disk sekaligus, dan ditujukan untuk file yang diselingi untuk dimainkan dari CD-ROM.
FOURCC yang mengidentifikasi setiap potongan data terdiri dari nomor aliran dua digit diikuti oleh kode dua karakter yang menentukan jenis informasi dalam gugus.
Kode dua karakter | Deskripsi |
---|---|
Db | Bingkai video tidak dikompresi |
arus searah | Bingkai video terkompresi |
komputer mikro | Perubahan palet |
Wb | Data audio |
Misalnya, jika streaming 0 berisi audio, potongan data untuk aliran tersebut akan memiliki FOURCC '00wb'. Jika streaming 1 berisi video, potongan data untuk aliran tersebut akan memiliki FOURCC '01db' atau '01dc'. Potongan data video juga dapat menentukan entri palet baru untuk memperbarui palet selama urutan AVI. Setiap potongan palet-ubah ('xxpc') berisi strukturAVIPALCHANGE. Jika aliran berisi perubahan palet, atur bendera AVISF_VIDEO_PALCHANGES di dwFlags anggota strukturAVISTREAMHEADERuntuk aliran tersebut.
Aliran teks dapat menggunakan kode dua karakter arbitrer.
Entri Indeks AVI
-
indeks AVI 1.0
-
Gugus indeks opsional ('idx1') dapat mengikuti daftar 'movi'. Indeks berisi daftar potongan data dan lokasinya dalam file. Ini terdiri dari strukturAVIOLDINDEXdengan entri untuk setiap potongan data, termasuk potongan 'rec'. Jika file berisi indeks, atur bendera AVIF_HASINDEX di dwFlags anggota strukturAVIMAINHEADER.
-
indeks AVI 2.0
-
Indeks AVI 2.0 dapat muncul sebagai satu gugus. Atau, segmen indeks dapat diselingi dalam gugus 'movi'. Jika segmen indeks ditempatkan di gugus 'movi', indeks super berisi indeks segmen indeks. StrukturAVIMETAINDEXadalah struktur dasar untuk segmen indeks dan indeks super. Untuk informasi selengkapnya, lihat OpenDML AVI File Format Extensions, diterbitkan oleh Subkomite Format File OpenDML AVI M-JPEG. (Sumber daya ini mungkin tidak tersedia di beberapa bahasa dan negara.)
Potongan Data Lainnya
Data dapat diselaraskan dalam file AVI dengan menyisipkan potongan 'SAMPAH' sesuai kebutuhan. Aplikasi harus mengabaikan konten gugus 'SAMPAH'.
Topik terkait