Установка аудио конечных устройств для конкретного приложения (программно)

Конечное аудиоустройство, далее называемое «конечная точка», является физическим или виртуальным аудиовыходом или устройством ввода.


В обновлении 1803 для Windows 10 за апрель появилось давно назревшее «Громкость приложения и настройки устройства». Эти настройки обеспечивают больший контроль над управлением аудиопотоком, поскольку теперь можно задавать разные конечные точки для разных приложений, независимо от того, поставляется ли конкретное приложение с выбором конечной точки или нет.

Однако существует проблема, из-за которой аудио программы, конечная точка которой отличается от заданной по умолчанию, передается через конечную точку по умолчанию (или вовсе не передается) после ее закрытия и повторного запуска, хотя конечная точка правильно отображается в настройках :

Выпуск Отдых

Насколько я знаю, проблему можно воссоздать на компьютере с Windows 10 (версия 1803 или выше) с любой виртуальной или физической конечной точкой и уязвимой программой. В этом примере я использовал «VLC Media Player» (не принимая во внимание тот факт, что он поставляется с выбором конечной точки), поскольку он хорошо известен и широко доступен, что должно упростить воссоздание проблемы.


Что я ищу …

… программное решение для переключения между конечными точками, которое в идеале может быть запущено в форме сценария для установки правильной конечной точки при запуске приложения.

Для моей цели было бы достаточно вручную настроить путь к экземпляру устройства, поскольку устройство всегда будет одинаковым, но я не собираюсь жаловаться на решение, которое также извлекает путь к экземпляру устройства из реестра.

  • Определенные конечные точки и путь экземпляра устройства, которое они используют, могут быть получены из подразделов ключа. HKEY_USERS\# YOUR SID #\Software\Microsoft\Multimedia\Audio\DefaultEndpoint, Я не знаю, как Windows генерирует имя подразделов или где их можно найти. Если бы мне пришлось делать дикие предположения, я бы сказал, что это идентификаторы приложений (не стесняйтесь поправлять меня, если я ошибаюсь).
  • Сам путь к экземпляру устройства можно найти в диспетчере устройств (в разделе «Аудиовходы и выходы» дважды щелкните нужное устройство, перейдите на вкладку «Сведения» и выберите «Путь к экземпляру устройства» в раскрывающемся меню «Свойства»). ,
  • Дополнительно запись о Аудио конечные устройства а также Управление потоком в Microsoft Docs могут быть полезны, но это намного выше моей головы.

Возможный, но непрактичный обходной путь …

… было бы вручную установить другую конечную точку для приложения и переключиться обратно на желаемую конечную точку при каждом запуске указанного приложения (как показано выше).

Но не только это занимает не менее 10 секунд при каждом запуске, вы можете даже забыть сделать это, поскольку звук может просто передаваться через конечную точку по умолчанию ,

Альтернатива последнему заключается в том, что звук не будет передаваться вообще или в некоторых случаях это на самом деле работает ,

например: VLC Media Player, игра Rainbow Six Siege от Тома Клэнси (хотя звук будет корректно воспроизводиться во время заставок)

Например: Call of Duty 4: Modern Warfare, Call of Duty: Modern Warfare 2, Call of Duty: Modern Warfare 3

например: Windows Media Player, Microsoft Edge, Firefox

наблюдения

  • VLC Media Player поставляется с выбором конечной точки, как и TeamSpeak 3, и, в отличие от VLC, он полностью пропускает настройки Windows.
  • Call of Duty без потоковой передачи аудио, скорее всего, подключен к движку, так как я не встречал никаких других приложений, делающих что-то подобное.
  • Windows Media Player, Microsoft Edge и Firefox — единственные программы (которые я тестировал до сих пор), которые работают нормально. У них нет выбора конечной точки (я бы знал об этом), и они будут использовать правильную конечную точку после закрытия и повторного запуска. Однако следует отметить, что Firefox и Microsoft Edge будут отображать несколько экземпляров в разделе «Громкость приложения и настройки устройства» при настройке конечной точки.

отказ

Я уже пробовал два сторонних программного обеспечения: «Audio Router», которое не работало вообще, и «CheVolume», которое не решало проблему и постоянно зависало при этом.

Этот вопрос основан на одном вопросе, который я задал в Super User (Вот), где я не получил ответа, с которым мне удалось поработать из-за недостатка знаний о реальном программировании (я только немного знаком с Batch и PowerShell). Мне хорошо известно, что ни переполнение стека, ни суперпользователь не являются службами написания сценариев, однако проблема не устраняется с помощью обновления 10 октября 1809 для Windows 10, и я вижу это как проблему, которая затрагивает не только меня, и это полезно для нескольких людей после меня. Не стесняйтесь написать комментарий или предложить изменение, если вы видите это по-другому.

Я также не уверен, следует ли использовать в этом контексте теги «потоковое аудио» и «конечная точка». Пожалуйста, предложите изменить, если они не должны, или вы можете придумать что-нибудь лучше.



Используя стороннее программное обеспечение «EarTrumpet», я смог преодолеть проблему с играми «Call of Duty» (вообще без звука), однако «VLC Media Player» не перезапустился бы после того, как я назначил конечную точку не по умолчанию с « EarTrumpet », пока я снова не закрыл« EarTrumpet », и проблема с« Rainbow Six Siege »Тома Клэнси остается прежней.

17

Решение

У меня нет никакого решения относительно языка программирования для обработки таких событий.

Но я могу порекомендовать приложение EarTrumpet для более быстрой обработки этих изменений. https://www.theverge.com/2018/6/13/17457778/eartrumpet-windows-10-audio-app

(Магазин Windows: https://www.microsoft.com/en-us/p/eartrumpet/9nblggh516xp?ranMID=24542&ranEAID = NOD% 2FrLJHOac&ranSiteID = nOD_rLJHOac-hUn6PgKuMKwQLdrzRqnPTA&эпи = nOD_rLJHOac-hUn6PgKuMKwQLdrzRqnPTA&irgwc = 1&OCID = AID681541_aff_7593_1243925&TDUID =% 28ir__qwqlg6jd0jba3y9hpnbvikaite2xk6kuyv9udtr100% 29% 287593% 29% 281243925% 29% 28nOD_rLJHOac-hUn6PgKuMKwQLdrzRqnPTA% 29% 28% 29&irclickid = _qwqlg6jd0jba3y9hpnbvikaite2xk6kuyv9udtr100&activetab = ось: overviewtab )

Я обновлю ответ, если найду простой способ написать скрипт / запрограммировать изменение вывода в каждом приложении.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector