NAudio录音输出流

问题描述

首先我初始化它

WaveIn waveInStream = new WaveIn();
waveInStream.WaveFormat = new WaveFormat(44100,2);
waveInStream.BufferMilliseconds = 36000000;  

waveInStream.DeviceNumber = 0;

waveInStream.DataAvailable += WaveInStream_DataAvailable;
waveInStream.RecordingStopped += WaveInStream_RecordingStopped;

WaveFileWriter wave_writer = new WaveFileWriter(full_file_path,waveInStream.WaveFormat);

关于 waveInStream.StartRecording();我收到一个异常 - Baddeviceid 调用 waveInopen。 我看到 WaveIn.DeviceCount = 0; 但是我不需要像麦克风这样的实际输入设备,我想记录我生成的声音并传递给声卡输出。 我应该如何设置 waveInStream 来做到这一点?

解决方法

我确实喜欢我的建议

MMDevice mm_dev;

private void MainForm_Load(object sender,EventArgs e)
{
    if (OutputDevice.DeviceCount > 0)
    {
        outDevice = new OutputDevice(0);

        MMDeviceEnumerator enumerator = new MMDeviceEnumerator();
        //here I see my sound card
        mm_dev = enumerator.EnumerateAudioEndPoints(DataFlow.All,DeviceState.Active)[0];

         loopback_capture = new WasapiLoopbackCapture(mm_dev);
         loopback_capture.DataAvailable += Loopback_capture_DataAvailable;
         loopback_capture.RecordingStopped += Loopback_capture_RecordingStopped;
         
         wave_writer = new WaveFileWriter(full_file_path,waveInStream.WaveFormat);
    }
}

private void Loopback_capture_DataAvailable(object sender,WaveInEventArgs e)
{
     wave_writer.Write(e.Buffer,e.BytesRecorded);
}

但是在 loopback_capture.StartRecording(); 我得到 -

值不在预期范围内。

我想念什么?