Bagikan melalui


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 yang terjalin, yang jenis medianya MEDIATYPE_Interleaved. (Untuk informasi selengkapnya tentang pengambilan DV, lihat Video Digital 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 merender 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 metode IGraphBuilder , ini bukan perender default untuk metode RenderStream . 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; itu bisa memiliki pin port video atau hanya pin tangkapan. 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 pengambilan hanya memiliki pin pengambilan, Capture Graph Builder menyisipkan filter Smart Tee , yang membagi aliran menjadi aliran pengambilan dan aliran pratinjau. Ini dijelaskan secara lebih rinci dalam Menggabungkan Pengambilan dan Pratinjau Video.

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

Menggabungkan Pengambilan dan Pratinjau Video

Pengambilan Video