Aracılığıyla paylaş


Video Önizleme (DirectShow)

Bu sayfayla ilişkilendirilen DirectShowözelliği, eskiden kalma bir özelliktir. Yerine MediaPlayer, IMFMediaEngineve Media Foundation 'de Ses/Video Yakalamaalmıştır. Bu özellikler Windows 10 ve Windows 11 için iyileştirilmiştir. Microsoft, mümkün olduğunda, yeni kodların DirectShowyerine MediaPlayer, IMFMediaEngine ve Audio/Video Capture gibi Media Foundation bileşenlerini kullanmasını şiddetle tavsiye eder. Microsoft, mümkünse yeni API'leri kullanmak için eski API'leri kullanan mevcut kodun yeniden yazılmasını önerir.]

Video önizleme grafiği oluşturmak için ICaptureGraphBuilder2::RenderStream yöntemini şu şekilde çağırın:

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);

Bu örnekte aşağıdakiler varsayılır:

  • pBuild, Yakalama Grafiği OluşturucuAçıklaması bölümünde belirtildiği gibi başlatıldı.
  • pCap, yakalama filtresinin bir örneği oluşturularak ve filtre grafiğine eklenerek başlatıldı; bu işlem, Yakalama Cihazı Seçmebölümünde açıklandığı gibi yapılmıştır.

ICaptureGraphBuilder2::RenderStream yönteminin ilk parametresi bir pin kategorisi belirtir; önizleme grafiği için PIN_CATEGORY_PREVIEWkullanın. İkinci parametre, ana tür GUID'i olarak bir medya türü belirtir. Video için MEDIATYPE_Videokullanın. DV cihazları, medya türünün MEDIATYPE_Interleavedolduğu birleşik ses ve video sunar. (DV yakalama hakkında daha fazla bilgi için bkz. DirectShow 'da dijital video.)

Üçüncü parametre, yakalama filtresinin IBaseFilter arabirimine yönelik bir işaretçidir. Bu örnekte sonraki iki parametre gerekli değildir. Bunlar, akışı işlemek için gerekli olabilecek ek filtreleri belirtmek için kullanılır. Son parametrenin NULL olarak ayarlanması, Capture Graph Builder'ın medya türüne göre akış için varsayılan işleyiciyi seçmesine neden olur. Video için, Capture Graph Builder her zaman varsayılan işleyici olarak Video oluşturucu filtresini kullanır.

Not

Windows XP ve sonraki sürümlerde Video Mixing Renderer (VMR), IGraphBuilder yöntemleri için varsayılan video işleyici olsa da, RenderStream yöntemi için varsayılan işleyici değildir. Herhangi bir platformda Capture Graph Builder, aksini belirtmediğiniz sürece her zaman eski Video oluşturucu filtresini kullanır.

 

Pin kategorisi PIN_CATEGORY_PREVIEWolarak verilmiş olsa da, filtrenin aslında bir önizleme pini olup olmadığı önemli değildir; video port pini veya sadece yakalama pini olabilir. Her iki durumda da, Yakalama Grafı Oluşturucusu otomatik olarak doğru grafiği oluşturur.

Aşağıdaki diyagramda video önizlemesi için mümkün olan en basit grafik gösterilmektedir.

video önizleme grafiği

Bu diyagramda, yakalama filtresinin doğrudan video düzenleyicisine bağlanan bir önizleme pini vardır.

Yakalama filtresinde yalnızca bir yakalama pini varsa, Yakalama Grafı Oluşturucusu akışı yakalama akışı ve önizleme akışı olarak ikiye bölen bir Smart Tee filtresi ekler. Bu, Video Yakalama ve Önizlemeyi Birleştirmebölümünde daha ayrıntılı olarak açıklanmıştır.

Bazı durumlarda video akışının Katman Karıştırıcı filtresinden geçmesi gerekir. Bu durumda, RenderStream yöntemi bunu grafiğe otomatik olarak ekler.

Video Yakalama ve Önizleme Birleştirme

Video Yakalama