我如何使用具有 2 个以上通道的 NAudio 录制到波形文件?
Posted
技术标签:
【中文标题】我如何使用具有 2 个以上通道的 NAudio 录制到波形文件?【英文标题】:How would I record to a wave file using NAudio with more than 2 channels? 【发布时间】:2015-09-21 21:10:14 【问题描述】:我一直在尝试使用 NAudio 录制到具有 2 个以上通道的单个波形文件,但我不断收到调用 waveInOpen 的 InvalidParameter。我认为这与我尝试使用超过 2 个频道进行录制有关。
当通道数大于 2 时调用 WaveIn.StartRecording() 会发生错误。当通道是单声道和立体声时,它会起作用。
有没有办法使用超出范围的参数调用 waveInOpen 函数?有没有办法编辑 waveInOpen 函数以接受超过 2 个通道?
感谢您的帮助!
【问题讨论】:
你想从有两个以上的频道录制什么?您可以录制单声道或立体声然后上混到更高的通道数吗? 我将使用多种不同的设备录制到一个 wav 文件中。稍后分开。 【参考方案1】:您的声卡的声卡驱动程序通常不允许录制两个以上的声道。你可以看看WasapiCapture
能不能做到。通常,获得所有通道的唯一可靠方法是如果您的声卡有 ASIO 驱动程序,那么您可以使用AsioOut
【讨论】:
我使用 WasapiCapture 来处理多通道录制,但仍然出现错误。现在它是一种不受支持的波形格式。我使用的是 USB 音频接口,所以这不是问题。它就像 NAudio 不会接受任何超过 2 个通道的波形格式。即使我用可用的输入设备加载组合框,它也会将我的音频接口分成两个通道段,如模拟 (1+2)、模拟 (3+4)。有没有办法解决这个问题? NAudio 只是将您的请求传递给 Windows API。最终,它是您的声卡驱动程序选择将自己呈现给 Windows 的方式。您可以通过创建具有正确参数的 WaveFormatExtensible 格式来说服 WASAPI 打开多通道输出。 所以我尝试了带有 WaveFormatExtensible 的 WASAPI,一旦我调用 startRecording(),它就会使用此代码“以代码 -1073740791 退出”使应用程序崩溃。如果我只是用普通的 WaveFormat 和 WasapiCapture 尝试它,我会收到此错误: NAudio.CoreAudioApi.WasapiCapture.InitializeCaptureDevice() 处不支持的波形格式:NAudio.CoreAudioApi.WasapiCapture.StartRecording() 的第 74 行:此时第 95 行,我不知道如何让 NAudio 只录制 3 个不同的单声道 有没有办法将 waveFormats 添加到 NAudio 以便支持它?我确定它不是我使用的音频接口(斯嘉丽 18i20) 使用 WaveFormatExtensible 是否将其设置为浮点数?此外,您需要以独占模式打开才能访问超过 2 个频道,如果 focusrite 驱动程序允许这样做。但是为什么不使用 ASIO 呢?这将使您记录所有频道。专业音频接口制造商几乎假设现在每个人都在 Windows 上使用 ASIO。以上是关于我如何使用具有 2 个以上通道的 NAudio 录制到波形文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 NAudio 将 WAV 文件转换为 2 个单独的 PCM 文件
使用 NAudio/Lame 将 .wav 转换为 mp3 时如何设置通道和采样率?