Udostępnij przez


Wykonywanie zapytań dotyczących możliwości wyszukiwania

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Program Microsoft® DirectShow® obsługuje wyszukiwanie za pośrednictwem interfejsu IMediaSeeking. Menedżer grafu filtrów uwidacznia ten interfejs, ale funkcja wyszukiwania jest zawsze implementowana przez filtry w grafie.

Nie można wyszukać niektórych danych. Na przykład nie można wyszukiwać strumienia wideo na żywo z kamery. Jeśli jednak strumień da się przeszukiwać, istnieją różne rodzaje przeszukiwania, które mogą być obsługiwane. Należą do nich:

  • Szukanie dowolnego położenia w strumieniu.
  • Uzyskiwanie czasu trwania strumienia.
  • Pobieranie bieżącego położenia w strumieniu.
  • Gra w odwrotnie.

Interfejs IMediaSeeking definiuje zestaw flag, AM_SEEKING_SEEKING_CAPABILITIES, które opisują możliwe możliwości wyszukiwania. Aby pobrać możliwości strumienia, wywołaj metodę IMediaSeeking::GetCapabilities. Metoda zwraca bitową kombinację flag. Aplikacja może je przetestować przy użyciu operatora & (operator bitowy AND). Na przykład poniższy kod sprawdza, czy wykres może szukać dowolnego położenia:

DWORD dwCap = 0;
HRESULT hr = pSeek->GetCapabilities(&dwCap);
if (AM_SEEKING_CanSeekAbsolute & dwCap)
{
    // Graph can seek to absolute positions.
}