Bagikan melalui


Pengantar Pemrograman Aplikasi DirectShow

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan 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 Audio/Video Capture 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.]

Artikel ini memperkenalkan terminologi dasar dan konsep yang digunakan dalam DirectShow. Setelah membaca bagian ini, Anda akan siap untuk menulis aplikasi DirectShow pertama Anda.

Filter dan Grafik Filter

Blok penyusun DirectShow adalah komponen perangkat lunak yang disebut filter. Filter adalah komponen perangkat lunak yang melakukan beberapa operasi pada aliran multimedia. Misalnya, filter DirectShow dapat

  • membaca file
  • mendapatkan video dari perangkat pengambilan video
  • mendekode berbagai format aliran, seperti video MPEG-1
  • meneruskan data ke grafik atau kartu suara

Filter menerima input dan menghasilkan output. Misalnya, jika filter mendekode video MPEG-1, inputnya adalah aliran yang dikodekan MPEG dan outputnya adalah serangkaian bingkai video yang tidak dikompresi.

Di DirectShow, aplikasi melakukan tugas apa pun dengan menghubungkan rantai filter bersama-sama, sehingga output dari satu filter menjadi input untuk yang lain. Sekumpulan filter yang tersambung disebut grafik filter. Misalnya, diagram berikut menunjukkan grafik filter untuk memutar file AVI.

memfilter grafik untuk memutar file avi

Filter Sumber File membaca file AVI dari hard disk. Filter Pemisah AVI mengurai file menjadi dua aliran, aliran video terkompresi, dan aliran audio. Filter AVI Decompressor mendekode bingkai video. Filter Video Renderer menggambar bingkai ke layar, menggunakan DirectDraw atau GDI. Filter Perangkat DirectSound Default memutar aliran audio, menggunakan DirectSound.

Aplikasi tidak harus mengelola semua aliran data ini. Sebaliknya, filter dikontrol oleh komponen tingkat tinggi yang disebut Filter Graph Manager. Aplikasi melakukan panggilan API tingkat tinggi seperti "Jalankan" (untuk memindahkan data melalui grafik) atau "Hentikan" (untuk menghentikan aliran data). Jika Anda memerlukan kontrol lebih atas operasi streaming, Anda dapat mengakses filter langsung melalui antarmuka COM. Filter Graph Manager juga meneruskan pemberitahuan peristiwa ke aplikasi.

Filter Graph Manager juga melayani tujuan lain: Ini menyediakan metode bagi aplikasi untuk membangun grafik filter, dengan menghubungkan filter bersama-sama. (DirectShow juga menyediakan berbagai objek pembantu yang menyederhanakan proses ini. Ini dijelaskan secara menyeluruh dalam dokumentasi.)

Menulis Aplikasi DirectShow

Secara luas, ada tiga tugas yang harus dilakukan aplikasi DirectShow. Ini diilustrasikan dalam diagram berikut.

aplikasi directshow umum

  1. Aplikasi membuat instans Filter Graph Manager.
  2. Aplikasi ini menggunakan Filter Graph Manager untuk membangun grafik filter. Set filter yang tepat dalam grafik akan bergantung pada aplikasi.
  3. Aplikasi ini menggunakan Filter Graph Manager untuk mengontrol grafik filter dan mengalirkan data melalui filter. Sepanjang proses ini, aplikasi juga akan menanggapi peristiwa dari Filter Graph Manager.

Saat pemrosesan selesai, aplikasi merilis Filter Graph Manager dan semua filter.

DirectShow didasarkan pada COM; Filter Graph Manager dan filter adalah semua objek COM. Anda harus memiliki pemahaman umum tentang pemrograman klien COM sebelum Anda mulai memprogram DirectShow. Banyak buku tentang pemrograman COM tersedia.

Untuk mulai menggunakan DirectShow, baca artikel Cara Memutar File, yang menyajikan aplikasi konsol sederhana untuk memutar file video. Bagian Tentang DirectShow menjelaskan arsitektur DirectShow secara lebih rinci, sementara bagian Menggunakan DirectShow memeriksa skenario utama yang didukung oleh DirectShow, seperti pengambilan, pengeditan video, pemutaran DVD, dan televisi.