使用 NAudio Wasapi 包装器录制音频,声音文件权重不为 0 但音频为空白

Record audio using NAudio Wasapi wrapper, sound file weight is not 0 but audio is blank

什么在起作用 - 保存文件

什么不是: - 音频文件是空白的(作为一个长度但听不到声音,又名声音是空白的) 编辑(为清楚起见):文件权重不为 0。

已经使用 winmm.dll 实现了解决方案,但正在寻找比 16 位质量更好的解决方案。已经为 libmp3lame dll 使用 NAudio 包装器,因此使用 NAudio 是一个可行的选择。

public void Start()
        {
            if(this.isInitialized)
            {
                string outputFilePath = "...";
                this.capture = new NAudio.Wave.WasapiLoopbackCapture();
                this.writer = new NAudio.Wave.WaveFileWriter(outputFilePath, this.capture.WaveFormat);

                this.capture.DataAvailable += (s, a) =>
                {
                    this.writer.Write(a.Buffer, 0, a.BytesRecorded);
                };

                this.capture.RecordingStopped += (s, a) =>
                {
                    this.writer.Dispose();
                    this.writer = null;
                    this.capture.Dispose();
                };

                this.capture.StartRecording();
            }


        }

        public void StopAndSave()
        {
            if(this.isInitialized)
            {
                this.capture.StopRecording();
            }
        }

预期:以 WAV 音频文件格式录制音频

this.isInitialized 检查路径和文件命名约定。因为保存到预期位置的文件没有添加代码。此代码部分按预期工作。

备注 - 使用 NAudio 1.8.5 - 目标系统是 Win10 x64 pro

您正在使用 WasapiLoopbackCapture,它试图捕获正在计算机上播放的音频。如果您打算捕获输入设备(如麦克风),则应改用 WasapiCapture