当扬声器静音时,WasapiLoopbackCapture 在某些设备上会收到静音

for*_*ayo 5 c# windows audio naudio wasapi

我正在使用NAudio 库,并使用其 WasapiLoopbackCapture 以非常简单的方式记录“您听到的内容”:

        var outputFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "NAudio");
        Directory.CreateDirectory(outputFolder);
        var outputFilePath = Path.Combine(outputFolder, "recorded.pcm");

        var loopback = new WasapiLoopbackCapture();
        var fileWriter = new WaveFileWriter(outputFilePath, loopback.WaveFormat);
        loopback.RecordingStopped += (s, a) => { fileWriter.Dispose(); };
        loopback.DataAvailable += (object? sender, WaveInEventArgs args) =>
        {
            fileWriter.Write(args.Buffer, 0, args.BytesRecorded);
        };
Run Code Online (Sandbox Code Playgroud)

然后我在 YouTube 上播放视频并将扬声器静音。

在大多数设备上,这种方法效果很好,并且无论扬声器是否静音,生成的文件都会包含设备上正在播放的音频。

但在某些设备中,当扬声器静音时,接收到的音频因此文件内容只是静音。

我不确定发生了什么或如何解决它,我尝试更新驱动程序并尝试创建我自己的 WasapiLoopbackCapture 版本来更改音频设备等,但目前没有任何效果。

任何人都知道这里发生了什么以及我如何在所有设备上实现这一目标?

以下是发生不良行为的设备示例:

ACER Aspire 3 A315-23-R8T0
Windows 10 Pro 22H2 Build 19045.3208
Realtek(R) Audio
Driver Provider: Microsoft
Driver Version: 10.0.19041.1
Run Code Online (Sandbox Code Playgroud)

作为参考,我也在 NAudio 上发布了该问题