Udostępnij przez


Korzystanie z narzędzia do wykrywania multimediów

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

[Ten interfejs API nie jest obsługiwany i może zostać zmieniony lub niedostępny w przyszłości.]

Detektor multimediów jest obiektem pomocnika, który może pobierać informacje o pliku, takie jak liczba strumieni, ich typ i czas trwania. Zawiera również metody pobierania ramek plakatów ze strumienia wideo. Uwidacznia interfejs IMediaDet.

Wykrywacz multimediów działa w jednym z dwóch trybów. Podczas tworzenia instancji detektora mediów nie jest ona przypisana do konkretnego pliku źródłowego. W tym trybie można pobrać informacje o strumieniu z wielu plików źródłowych. Jednak gdy używasz detektora multimediów do uzyskania ramki plakatu, przełącza się na tryb pobierania map bitowych. W trybie chwytania mapy bitowej wykrywacz multimediów jest dołączony do określonego strumienia wideo, a metody informacji o strumieniu nie działają już. Co więcej, nie ma możliwości przełączenia detektora multimediów z powrotem do trybu uruchamiania. W związku z tym uzyskaj wszelkie potrzebne informacje o strumieniu przed pobraniem klatek plakatu lub utwórz nowe wystąpienia detektora multimediów dla każdego strumienia.

Aby uzyskać informacje o strumieniu, wykonaj następujące czynności:

  1. Wywołaj IMediaDet::put_Filename z nazwą pliku źródłowego.
  2. Wywołaj IMediaDet::get_OutputStreams, aby uzyskać liczbę strumieni w źródle.
  3. Określ numer strumienia za pomocą IMediaDet::put_CurrentStream. Następnie wywołaj co najmniej jedną z następujących metod:

Aby uzyskać ramkę plakatu, określ numer strumienia, jak w poprzednim kroku. Następnie wywołaj IMediaDet::GetBitmapBits, która kopiuje ramkę plakatu do buforu lub IMediaDet::WriteBitmapBits, co zapisuje ramkę plakatu w pliku.

praca ze źródłami