Membaca dari Aliran

[Fitur yang terkait dengan halaman ini, AVIFile Functions dan Macros, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber. Pembaca Sumber telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber alih-alih Fungsi AVIFile dan Makro, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Anda dapat mengambil informasi tentang aliran terbuka dengan menggunakan fungsiAVIStreamInfo. Fungsi ini mengisi strukturAVISTREAMINFOdengan informasi seperti jenis data dalam aliran, metode kompresi yang digunakan saat menulis data aliran, ukuran buffer yang disarankan, laju pemutaran, dan deskripsi teks aliran.

Beberapa anggota strukturAVISTREAMINFOjuga ada dalam strukturAVIFILEINFO. Informasi dalam struktur AVIFILEINFO berlaku untuk seluruh file. Informasi dalam struktur AVISTREAMINFO khusus untuk aliran yang diakses dan lebih diutamakan daripada informasi dalam struktur AVIFILEINFO.

Jika aliran memiliki informasi tambahan yang terkait dengannya, Anda dapat mengambil informasi ini dengan menggunakan fungsiAVIStreamReadData. Fungsi ini mengembalikan informasi dalam buffer yang disediakan aplikasi. Informasi aliran tambahan mungkin mencakup pengaturan konfigurasi untuk metode kompresi dan dekompresi yang digunakan pada aliran. Anda dapat memperoleh ukuran buffer yang diperlukan dengan menggunakan makroAVIStreamDataSize.

Anda dapat mengambil informasi pemformatan tentang stream dengan menggunakan fungsi AVIStreamReadFormat. Fungsi ini mengembalikan struktur khusus aliran dalam buffer yang disediakan aplikasi. Untuk aliran video, buffer berisi informasi pemformatan dalam strukturBITMAPINFO. Untuk aliran audio, buffer berisi informasi pemformatan dalam strukturWAVEFORMATEX atauPCMWAVEFORMAT. Untuk jenis stream lainnya, pengelola stream mengembalikan informasi yang spesifik untuk stream tersebut. Anda dapat menentukan ukuran buffer yang diperlukan dengan menggunakan AVIStreamReadFormat dan menentukan alamat buffer NULL atau dengan menggunakan makroAVIStreamFormatSize.

Anda dapat mengambil konten multimedia dalam bentuk aliran dengan menggunakan fungsi AVIStreamRead. Fungsi ini menyalin data mentah dari aliran ke buffer yang disediakan aplikasi. Untuk aliran video, fungsi ini mengambil gambar bitmap yang membentuk isi frame. Untuk aliran audio, fungsi ini mengambil sampel waveform-audio yang membentuk konten suara. Anda dapat menentukan ukuran buffer yang diperlukan dengan menggunakan AVIStreamRead dan menentukan alamat buffer NULL atau dengan menggunakan makroAVIStreamSampleSize.

Beberapa penangan aliran AVI memperkenalkan penundaan yang terkait dengan inisialisasi atau koordinasi perangkat lunak dan perangkat keras. Anda dapat menginformasikan handler ini untuk mempersiapkan streaming data dengan menggunakan fungsiAVIStreamBeginStreaming. Fungsi ini memungkinkan penangan aliran mengalokasikan dan menginisialisasi sumber daya yang dibutuhkannya. Untuk menginformasikan handler ini ketika streaming telah berakhir, gunakan fungsiAVIStreamEndStreaming. Fungsi ini memungkinkan penanganan aliran membatalkan alokasi sumber daya yang dialokasikan untuk AVIStreamBeginStreaming.

FungsiAVIStreamReadtidak menyediakan layanan dekompresi. Untuk informasi tentang mengompresi dan mendekompresi aliran audio, lihat Pengelola Kompresi Audio. Untuk informasi tentang mengompresi dan mendekompresi aliran video, lihat Manajer Kompresi Video. Untuk informasi tentang mengompresi dan mendekompresi bingkai individual dalam aliran video, lihat Bekerja dengan Data Video Terkompresi di Stream.

Operasi Aliran