【问题标题】:Reducing channel count when recording in NAudio在 NAudio 中录制时减少通道数
【发布时间】:2011-08-26 16:36:42
【问题描述】:

我正在使用 CLEye 驱动程序使用 PS3Eye 相机在 NAudio 中录制。 摄像头有 4 个麦克风阵列,向系统呈现 4 路音频。

默认情况下,所有频道都由 NAudio 录制。我正在录制到 PCM 波,并得到一个 4 通道 WAV 输出文件。

当我尝试在 NAudio 中播放文件时,我收到一个调用 acmFormatSuggest 的 MmException 'NoDriver'。立体声文件播放正常。

我的声卡只能输出 2 个声道,这似乎是导致错误的原因。将我的 Windows 音频设置设置为 Quadraphonic 并不能解决此问题。

也许我可以让 NAudio 只录制 2 个通道,或者在某个地方实现我自己的 WaveStream?

有人对 NAudio 中的通道数进行下采样有什么想法吗? (最好在记录时间)。非常感谢!

【问题讨论】:

  • 这似乎和我需要的link有关。
  • 所以我创建了一个继承自 WaveStream 的类,并根据来自 StereoToMonoProvider16 的代码执行下采样。还没用,只需要弄清楚如何正确实现(我的播放/停止控件现在坏了,自动播放,没有声音出来,但位置报告正确)

标签: c# audio naudio downsampling


【解决方案1】:

这不是在你的 WaveFormat 中声明它那么简单吗? 12000是采样率,“1”是通道数。

 waveInStream = new WaveIn(WaveCallbackInfo.FunctionCallback());
 waveInStream.WaveFormat = new WaveFormat(12000, 1);
 waveInStream.DeviceNumber = 2;

 AudioWriter = new WaveFileWriter("c:\\MyAudio.wav", waveInStream.WaveFormat);
 waveInStream.DataAvailable += waveInStream_DataAvailable;
 waveInStream.StartRecording();

这就是我为基本网络摄像头录制器设置代码并使用立体声麦克风输出单声道 wav 文件的方式。

【讨论】:

  • 导致 StartRecording() 出现异常,但我使用 WasapiCapture,异常发生在 WasapiCapture 中
  • 如果我使用 WaveIn 而不是 WasapiCapture,我会默认使用四路麦克风获得 1 个通道,这绝对有用!
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
相关资源
最近更新 更多