Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В режиме обратного цикла клиент WASAPI может записать аудиопоток, который воспроизводится устройством конечной точки отрисовки. Чтобы открыть поток в режиме обратного цикла, клиент должен:
- Получите интерфейс IMMDevice для устройства конечной точки отрисовки.
- Инициализация потока записи в режиме обратной передачи на устройстве конечной точки отрисовки.
После выполнения этих действий клиент может вызвать метод IAudioClient::GetService для получения интерфейса IAudioCaptureClient на устройстве конечной точки отрисовки.
WASAPI предоставляет режим обратной передачи цикла в основном для поддержки акустической отмены эхо (AEC). Однако другие типы звуковых приложений могут найти режим обратного цикла, полезный для записи системного набора, который воспроизводится звуковой подсистемой.
В примере кода в перехвате потока можно легко изменить функцию RecordAudioStream, чтобы настроить захват потока в режиме обратной связи. Необходимые изменения:
- В вызове метода IMMDeviceEnumerator::GetDefaultAudioEndpoint измените первый параметр (dataFlow) с eCapture на eRender.
- При вызове метода IAudioClient::Initialize измените значение второго параметра (StreamFlags) на AUDCLNT_STREAMFLAGS_LOOPBACK.
В версиях Windows до Windows 10 1703 клиент записи в режиме извлечения не получает никаких событий при инициализации потока с буферизацией на основе событий и включена обратная связь. Чтобы обойти эту проблему, инициализируйте поток отрисовки в режиме, управляемом событиями. Каждый раз, когда клиент получает событие для потока отрисовки, он должен сигнализировать клиенту записи, чтобы запустить поток записи, который считывает следующий набор примеров из буфера конечной точки записи. В Windows 10 версии 1703 и более поздних поддерживаются клиенты с обратной связью, управляемые событиями, и больше не требуется обходное решение, связанное с потоком визуализации.
Клиент может включить режим обратного цикла только для потока общего режима (AUDCLNT_SHAREMODE_SHARED). Потоки монопольного режима не могут работать в режиме обратного цикла.
Реализация обратного цикла по WASAPI зависит от возможностей оборудования. Если оборудование поддерживает пин-код обратного цикла в конечной точке отрисовки, WASAPI использует звук, предоставленный на этом пин-коде для потока обратной передачи. Если оборудование не поддерживает контакт обратной связи, WASAPI копирует выходной поток из звукового модуля в буфер записи приложения обратной связи, а также копирует аудиоданные в контакт вывода оборудования.
Некоторые поставщики оборудования реализуют устройства обратной связи (в отличие от экземпляров контактов на устройствах отрисовки) в своих звуковых адаптерах. Хотя аппаратные устройства обратной связи похожи на режим обратной связи WASAPI, они могут быть более сложными в использовании.
Аппаратные устройства обратного цикла имеют следующие недостатки для звуковых приложений:
- Не все аудиоадаптеры имеют устройства обратного цикла. Таким образом, приложения, зависящие от них, не будут работать во всех системах.
- Прежде чем приложение сможет записывать данные с устройства loopback, пользователь должен идентифицировать устройство loopback и включить его для использования.
Разные поставщики назначают разные имена устройствам обратного цикла оборудования. Следующие имена являются примерами:
- Стерео микс
- Смешивание звука Waveout
- Смешанные выходные данные
- Что вы услышите
Отсутствие стандартных имен может привести к тому, что пользователи могут столкнуться с трудностями при определении устройства обратного цикла в списке имен устройств.
Аппаратное устройство обратного цикла — это устройство записи. Таким образом, если адаптер поддерживает устройство обратного цикла, звуковое приложение может записывать с устройства таким же образом, как и запись с любого другого устройства записи.
Например, если выбрать аппаратное устройство для обратной связи в качестве устройства захвата по умолчанию, можно использовать функцию RecordAudioStream (без изменений) в примере кода в Отслеживание потока, чтобы фиксировать поток с устройства. (Вы также можете использовать устаревший аудио API, например функции мультимедиа Windows waveInXxx, для записи потока с устройства.)
Если ваш звуковой адаптер содержит аппаратное устройство «обратной связи» (loopback), вы можете использовать панель управления мультимедиа Windows (Mmsys.cpl), чтобы назначить его в качестве устройства захвата по умолчанию. Для этого необходимо выполнить следующие шаги:
Чтобы запустить Mmsys.cpl, откройте окно командной строки и введите следующую команду:
control mmsys.cpl
Кроме того, можно запустить Mmsys.cpl, щелкнув правой кнопкой мыши значок говорящего в области уведомлений, расположенную справа от панели задач, и выбрав "Устройства записи".
После открытия окна Mmsys.cpl щелкните правой кнопкой мыши в списке устройств записи и убедитесь, что установлен флажок "Показать отключенные устройства ". (В противном случае, если устройство обратного цикла отключено, оно не будет отображаться в списке.)
Просмотрите список устройств записи, чтобы найти устройство loopback (если оно существует). Если устройство обратного цикла отключено, включите его, щелкнув правой кнопкой мыши устройство и нажав кнопку "Включить".
Наконец, чтобы выбрать устройство обратного цикла, которое будет устройством записи по умолчанию, щелкните правой кнопкой мыши устройство и нажмите кнопку "Задать как устройство по умолчанию".
WASAPI поддерживает запись циклической обратной связи независимо от того, присутствует ли в звуковом оборудовании устройство петли или пользователь включил это устройство.
Windows Vista предоставляет управление цифровыми правами (DRM). Поставщики контента полагаются на DRM, чтобы защитить свою собственную музыку или другое содержимое от несанкционированного копирования и других незаконных использования. Аналогичным образом доверенный звуковой драйвер не позволяет устройству обратного цикла записывать цифровые потоки, содержащие защищенное содержимое. Windows Vista позволяет воспроизводить защищенное содержимое только доверенным драйверам. Дополнительные сведения о доверенных драйверах и DRM см. в документации по Windows DDK.
По умолчанию функция обратного цикла WASAPI содержит сочетание всех воспроизводимых звуков независимо от сеанса служб терминалов, от которого поступил звук. Например, можно запустить клиент loopback в службе, работающей в сеансе 0, и записать звук из всех сеансов пользователей, а также воспроизводить звук из сеанса 0.
Удаленный рабочий стол позволяет перенаправлять звук на клиент. Это реализуется путем создания новых звуковых устройств, которые появляются только для этого сеанса.
Связанные темы