Udostępnij przez


Ustawianie właściwości przechwytywania dźwięku

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEngineoraz 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.]

Każdy pin wejściowy w filtrze przechwytywania dźwięku udostępnia interfejs IAMAudioInputMixer. Użyj tego interfejsu, aby włączyć lub wyłączyć określone wejście, wywołując metodę IAMAudioInputMixer::put_Enable na pinie. Użyj również tego interfejsu, aby ustawić właściwości wejściowe, takie jak bas, treble i poziom głośności. Jeśli przechwytujesz wiele wejść jednocześnie, możesz kontrolować ogólny poziom basu, treble i głośności za pośrednictwem IAMAudioInputMixer interfejsu na samym filtrze.

Dostępne częstotliwości próbkowania i formaty audio do przechwytywania są określane przez sterownik. Użyj interfejsu IAMStreamConfig na wyjściu filtru przechwytywania audio, aby wyliczyć dostępne częstotliwości próbkowania i formaty oraz ustawić żądany format. Filtr może łączyć się podrzędnie z dowolnym filtrem, który akceptuje typ nośnika wyprowadzenia wyjściowego.

Filtr przechwytywania dźwięku uwidacznia również interfejs IAMBufferNegotiation. Ten interfejs jest przydatny do kontrolowania ilości opóźnień w wersji zapoznawczej audio. Domyślnie filtr przechwytywania dźwięku używa półsekundowego rozmiaru buforu. Ten rozmiar buforu jest optymalny do przechwytywania, ale powoduje pół sekundy opóźnienia podglądu. Aby zmniejszyć opóźnienie, przed podłączeniem pinu wyjściowego filtru przechwytywania dźwięku wywołaj metodę IAMBufferNegotiation::SuggestAllocatorProperties. Ta metoda przyjmuje wskaźnik do struktury ALLOCATOR_PROPERTIES. Użyj członka cbBuffer, aby określić rozmiar buforu w bajtach. Bufor 80 milisekund jest ogólnie bezpieczny, ale 30 lub 40 milisekund mogą być wystarczające. Jeśli bufory są zbyt małe, jakość dźwięku zostanie obniżona.