将音频终端设备应用程序特定设置(通过编程方式)

20

在“反馈中心”上链接到漏洞报告


音频端点设备,以下简称“端点”,是指物理或虚拟的音频输出或输入设备。


随着Windows 10 1803版本的更新,期待已久的“应用程序音量和设备首选项”被引入。这些设置允许更多地控制音频流管理,因为现在可以为不同的应用程序设置不同的端点,无论该特定应用程序是否带有端点选择。
然而,存在一个问题,即当一个端点为非默认值的程序被关闭并重新启动后,其音频通过默认端点进行流式传输(或根本不进行流式传输),尽管在设置中正确显示了端点。

Issue Recreation

据我所知,此问题可以在Windows 10计算机(版本1803或更高版本)上使用任何虚拟或物理终端和受影响的程序进行重现。 我在此示例中使用了“VLC Media Player”(忽略它带有终端选择的事实),因为它是众所周知且广泛可用的,这应该使重现问题更容易。

我正在寻找...

...一种以编程方式切换端点的解决方案,最好能够以脚本形式启动,以便在应用程序启动时设置正确的端点。

对于我的目的来说,只需手动调整设备实例路径即可,因为设备始终是相同的,但如果有一种从注册表中检索设备实例路径的解决方案,我也不会抱怨。

  • 定义的端点和它们所使用的设备的设备实例路径可以从键HKEY_USERS\# YOUR SID #\Software\Microsoft\Multimedia\Audio\DefaultEndpoint的子键中检索。我不知道Windows如何生成子键的名称或者它们在哪里可以找到。如果我要猜测,我会说这些是应用程序ID(如果我错了,请随意纠正我)。
  • 设备实例路径本身可以在设备管理器中找到(在“音频输入和输出”下双击所需设备,导航到“详细信息”选项卡,并从“属性”下拉菜单中选择“设备实例路径”)。
  • 此外,Microsoft Docs 中关于 音频端点设备流管理 的条目可能会有所帮助,但那已经超出了我的理解范围。

一个可能但不切实际的解决方法...

...是手动为应用程序设置另一个端点,并在每次启动该应用程序时切换回所需的端点(如上所示)。

但这至少需要每次启动10秒钟,而且您甚至可能会忘记这样做,因为音频可能会通过默认端点流式传输。

后者的替代方案是,根本不会流式传输任何音频,或在某些情况下它确实有效

例如:VLC媒体播放器,汤姆·克兰西的彩虹六号围攻(尽管在闪屏画面期间音频将被正确地流式传输)

例如:使命召唤4:现代战争,使命召唤:现代战争2,使命召唤:现代战争3

例如:Window媒体播放器,Microsoft Edge,Firefox

观察结果

  • VLC媒体播放器带有端点选择功能,但TeamSpeak 3也是如此,与VLC不同,它完全跳过了Windows设置。
  • 使命召唤不播放任何音频很可能与引擎有关,因为我没有遇到其他应用程序做类似的事情。
  • 截至目前,Windows媒体播放器,Microsoft Edge和Firefox是唯一可以正常工作的程序(我测试过)。它们没有端点选择(我知道的),并且在关闭并重新启动后将使用正确的端点。但是应该注意的是,当调整端点时,Firefox和Microsoft Edge将在“应用程序音量和设备首选项”中显示多个实例。

免责声明

我已经尝试了两个第三方软件:'Audio Router',它根本不起作用;'CheVolume'解决不了问题,而且在这样做时经常崩溃。

这个问题是基于我在Super User上提出的一个问题(这里),由于我对实际编程缺乏知识(我只对Batch和PowerShell有些了解),所以我没有得到能够解决问题的答案。我很清楚,Stack Overflow和Super User都不是脚本编写服务,但是问题在Windows 10 October Update 1809中没有得到解决,我认为这是一个问题,不仅影响我,也会对我之后的多个人有所帮助。如果您有不同的看法,请随意写下评论或提出修改意见。

我也不确定在这种情况下是否应该使用“音频流”和“端点”标签,请提出修改建议,如果它们不适用或者您有更好的想法。



编辑 - 05/11/18

通过使用第三方软件“EarTrumpet”,我成功解决了“使命召唤”游戏在重新启动后无任何音频的问题,然而,当我使用“EarTrumpet”分配非默认端点后,“VLC媒体播放器”无法重新启动,直到我再次关闭“EarTrumpet”,而“汤姆克兰西的彩虹六号围攻”仍然存在同样的问题。


编辑 - 18/01/19

添加了一个链接,这是我2个月前在“反馈中心”上创建的漏洞报告


编辑 - 20/01/19

经过再次测试,应注意在后台运行“EarTrumpet”将使“VLC媒体播放器”在重新启动时保留非默认端点,但是,“VLC媒体播放器”仅在“应用程序音量和设备首选项”中设置了非默认端点时才会(可靠地)重新启动。


就此而言,当在VLC内部设置时,VLC会为我保存其输出设备。VLC 3.0.3。 - Brad
@Brad 感谢您的评论,但我已经清楚了这一点(如所述的观察)。 我选择VLC作为示例,因为它是一个广为人知且许多人都可以轻松获取的程序,因此重现该问题的最小努力。不过,我会添加额外的注释以防止混淆。 :) - FatalBulletHit
1个回答

3

1
虽然这不是我明确要寻找的内容,但我一定会尝试并回报的,谢谢! - FatalBulletHit
1
请参考问题结尾处的“编辑 - 05/11/18”。 - FatalBulletHit
1
只需安装Ear Trumpet,就足以使Sea of Thieves的设置最终生效。如果它能在重启后保持有效,那将是很有趣的事情。 - Ryan Leach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接