Udostępnij za pośrednictwem


Nagrywanie sprzężenia zwrotnego

W trybie sprzężenia zwrotnego klient WASAPI może przechwytywać strumień audio odtwarzany przez urządzenie punktu końcowego renderowania. Aby otworzyć strumień w trybie sprzężenia zwrotnego, klient musi:

  • Uzyskaj interfejs IMMDevice dla urządzenia punktu końcowego renderowania.
  • Inicjowanie strumienia przechwytywania w trybie sprzężenia zwrotnego na urządzeniu punktu końcowego renderowania.

Po wykonaniu tych kroków klient może wywołać metodę IAudioClient::GetService, aby uzyskać interfejs IAudioCaptureClient na urządzeniu punktu końcowego renderowania.

Interfejs WASAPI zapewnia tryb sprzężenia zwrotnego przede wszystkim do obsługi anulowania echa akustycznego (AEC). Jednak inne typy aplikacji audio mogą znaleźć tryb sprzężenia zwrotnego przydatny do przechwytywania mieszanki systemu odtwarzanej przez aparat audio.

W przykładzie kodu w Przechwytywanie strumieniamożna łatwo zmodyfikować funkcję RecordAudioStream w celu skonfigurowania strumienia przechwytywania w trybie sprzężenia zwrotnego. Wymagane modyfikacje to:

W wersjach systemu Windows wcześniejszych niż Windows 10 1703 klient przechwytywania trybu ściągania nie odbiera żadnych zdarzeń, gdy strumień jest inicjowany z buforowaniem sterowanym zdarzeniami i jest włączony sprzężenie zwrotne. Aby obejść ten temat, zainicjuj strumień renderowania w trybie sterowanym zdarzeniami. Za każdym razem, gdy klient odbiera zdarzenie dla strumienia renderowania, musi zasygnalizować klienta przechwytywania, aby uruchomić wątek przechwytywania, który odczytuje następny zestaw próbek z buforu punktu końcowego przechwytywania. W systemie Windows 10 w wersji 1703 i nowszych obsługiwane są klienci sprzężenia zwrotnego sterowanego zdarzeniami i nie potrzebują już obejścia obejmującego strumień renderowania.

Klient może włączyć tryb sprzężenia zwrotnego tylko dla strumienia trybu udostępnionego (AUDCLNT_SHAREMODE_SHARED). Strumienie trybu wyłącznego nie mogą działać w trybie sprzężenia zwrotnego.

Implementacja sprzężenia zwrotnego przez interfejs WASAPI zależy od możliwości sprzętu. Jeśli sprzęt obsługuje wyprowadzanie sprzężenia zwrotnego w punkcie końcowym renderowania, interfejs WASAPI używa dźwięku dostarczonego na tym numerze PIN dla strumienia sprzężenia zwrotnego. Gdy sprzęt nie obsługuje sprzężenia zwrotnego, WASAPI kopiuje strumień wyjściowy z aparatu audio do buforu przechwytywania aplikacji sprzężenia zwrotnego, oprócz kopiowania danych dźwiękowych do numeru PIN renderowania sprzętu.

Niektórzy dostawcy sprzętu implementują urządzenia sprzężenia zwrotnego (w przeciwieństwie do przypinania wystąpień na urządzeniach renderowanych) w swoich kartach audio. Chociaż urządzenia sprzężenia zwrotnego sprzętu są podobne do trybu sprzężenia zwrotnego WASAPI, mogą być trudniejsze do użycia.

Urządzenia sprzężenia zwrotnego sprzętu mają następujące wady dla aplikacji audio:

  • Nie wszystkie karty audio mają urządzenia sprzężenia zwrotnego. W związku z tym aplikacje zależne od nich nie będą działać we wszystkich systemach.
  • Zanim aplikacja będzie mogła rejestrować dane z urządzenia sprzężenia zwrotnego, użytkownik musi zidentyfikować urządzenie sprzężenia zwrotnego i włączyć je do użycia.

Różni dostawcy przypisują różne nazwy do swoich urządzeń sprzężenia zwrotnego sprzętu. Oto przykłady następujących nazw:

  • Stereo Mix
  • Waveout Mix
  • Mieszane dane wyjściowe
  • Co słyszysz

Brak ustandaryzowanych nazw może spowodować, że użytkownicy będą mieli trudności z identyfikacją urządzenia sprzężenia zwrotnego na liście nazw urządzeń.

Urządzenie sprzężenia zwrotnego sprzętu jest urządzeniem przechwytywania. W związku z tym, jeśli karta obsługuje urządzenie sprzężenia zwrotnego, aplikacja audio może rejestrować z urządzenia w taki sam sposób, jak rejestruje z dowolnego innego urządzenia przechwytywania.

Jeśli na przykład wybierzesz urządzenie sprzężenia zwrotnego sprzętu jako domyślne urządzenie przechwytywania, możesz użyć funkcji RecordAudioStream (bez modyfikacji) w przykładzie kodu w Przechwytywanie strumienia w celu przechwycenia strumienia z urządzenia. (Możesz również użyć starszego interfejsu API audio, takiego jak multimedia systemu Windows funkcje waveInXxx, do przechwytywania strumienia z urządzenia).

Jeśli karta audio zawiera urządzenie sprzężenia zwrotnego sprzętu, możesz użyć panelu sterowania multimediami systemu Windows, Mmsys.cpl, aby wyznaczyć urządzenie jako domyślne urządzenie przechwytywania. Kroki są następujące:

  1. Aby uruchomić Mmsys.cpl, otwórz okno wiersza polecenia i wprowadź następujące polecenie:

    control mmsys.cpl
    

    Alternatywnie możesz uruchomić Mmsys.cpl, klikając prawym przyciskiem myszy ikonę osoby mówiącej w obszarze powiadomień, który znajduje się po prawej stronie paska zadań, a następnie wybierając pozycję urządzenia rejestrujące .

  2. Po otworze okna Mmsys.cpl kliknij prawym przyciskiem myszy dowolne miejsce na liście urządzeń rejestrujących i sprawdź, czy zaznaczono opcję Pokaż wyłączone urządzenia. (W przeciwnym razie jeśli urządzenie sprzężenia zwrotnego jest wyłączone, nie będzie ono wyświetlane na liście).

  3. Przejrzyj listę urządzeń rejestrujących, aby zlokalizować urządzenie sprzężenia zwrotnego (jeśli istnieje). Jeśli urządzenie sprzężenia zwrotnego jest wyłączone, włącz je, klikając je prawym przyciskiem myszy i klikając Włącz.

  4. Na koniec, aby wybrać urządzenie sprzężenia zwrotnego jako domyślne urządzenie przechwytywania, kliknij prawym przyciskiem myszy urządzenie i kliknij Ustaw jako domyślne urządzenie.

Interfejs WASAPI obsługuje nagrywanie sprzężenia zwrotnego niezależnie od tego, czy sprzęt audio zawiera urządzenie sprzężone, czy też czy użytkownik włączył urządzenie.

System Windows Vista zapewnia zarządzanie prawami cyfrowymi (DRM). Dostawcy zawartości polegają na drM, aby chronić swoją zastrzeżoną muzykę lub inną zawartość przed nieautoryzowanym kopiowaniem i innymi nielegalnymi zastosowaniami. Podobnie zaufany sterownik audio nie zezwala urządzeniu sprzężonemu na przechwytywanie strumieni cyfrowych zawierających chronioną zawartość. System Windows Vista umożliwia odtwarzanie zawartości chronionej tylko przez zaufane sterowniki. Aby uzyskać więcej informacji na temat zaufanych sterowników i drM, zobacz dokumentację zestawu DDK systemu Windows.

Sprzężenie zwrotne WASAPI domyślnie zawiera mieszankę wszystkich odtwarzanych dźwięków, niezależnie od sesji usług terminalowych, z których pochodzi dźwięk. Na przykład można uruchomić klienta sprzężenia zwrotnego w usłudze uruchomionej w sesji 0 i przechwycić dźwięk ze wszystkich sesji użytkownika, a także dźwięk odtwarzany z sesji 0.

Począwszy od systemu Windows 10 Build 20348 można dołączać lub wykluczać określone procesy i ich elementy podrzędne z przechwytywania sprzężenia zwrotnego, przekazując AUDIOCLIENT_ACTIVATION_PARAMS w wywołaniu do IMMDevice::Activate. Zobacz przykład przechwytywania dźwięku sprzężenia zwrotnego aplikacji .

Pulpit zdalny umożliwia przekierowywanie dźwięku do klienta. Jest to implementowane przez utworzenie nowych urządzeń audio, które są wyświetlane tylko dla tej sesji.

zarządzania strumieniami