Mempratinjau Video (DirectShow)

[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.]

Untuk membuat grafik pratinjau video, panggil metode ICaptureGraphBuilder2::RenderStream sebagai berikut:

ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).

IBaseFilter *pCap; // Video capture filter.

/* Initialize pCap and add it to the filter graph (not shown). */

hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, 
    pCap, NULL, NULL);

Contoh ini mengasumsikan hal berikut:

Parameter pertama untuk metode ICaptureGraphBuilder2::RenderStream menentukan kategori pin; untuk grafik pratinjau, gunakan PIN_CATEGORY_PREVIEW. Parameter kedua menentukan jenis media, sebagai GUID jenis utama. Untuk video, gunakan MEDIATYPE_Video. Perangkat DV memberikan audio dan video interleaved, yang tipe medianya MEDIATYPE_Interleaved. (Untuk informasi selengkapnya tentang penangkapan DV, lihat Digital Video di DirectShow.)

Parameter ketiga adalah penunjuk ke antarmuka IBaseFilter filter pengambilan. Dua parameter berikutnya tidak diperlukan dalam contoh ini. Mereka digunakan untuk menentukan filter tambahan yang mungkin diperlukan untuk menghasilkan aliran. Mengatur parameter terakhir ke NULL menyebabkan Capture Graph Builder memilih perender default untuk aliran, berdasarkan jenis media. Untuk video, Capture Graph Builder selalu menggunakan filter Video Renderer sebagai perender default.

Catatan

Di Windows XP dan yang lebih baru, meskipun Video Mixing Renderer (VMR) adalah perender video default untuk metodeIGraphBuilder, ini bukan perender default untuk metodeRenderStream. Pada platform apa pun, Capture Graph Builder selalu menggunakan filter Video Renderer lama kecuali Anda menentukan sebaliknya.

 

Meskipun kategori pin diberikan sebagai PIN_CATEGORY_PREVIEW, tidak masalah apakah filter benar-benar memiliki pin pratinjau; bisa saja memiliki pin port video atau hanya pin penangkap. Dalam kedua kasus, Capture Graph Builder secara otomatis membangun grafik yang benar.

Diagram berikut menunjukkan grafik paling sederhana untuk mempratinjau video.

grafik pratinjau video

Dalam diagram ini, filter pengambilan memiliki pin pratinjau, yang terhubung langsung ke perender video.

Jika filter penangkapan hanya memiliki pin tangkap, Capture Graph Builder menyisipkan filter Smart Tee, yang membagi aliran menjadi aliran tangkap dan aliran pratinjau. Ini dijelaskan secara lebih rinci dalam Menggabungkan Pengambilan Video dan Pratinjau.

Dalam beberapa kasus, aliran video harus melalui filter Overlay Mixer. Jika demikian, metode RenderStream menambahkannya ke grafik secara otomatis.

Menggabungkan Penangkapan Video dan Pratinjau

Pengambilan Video