我正在尝试记录扬声器输出以检测任何使用C#和NAudio API播放的音乐的音量和BPM。
问题是,我不知道该怎么做:/
我有一个来自http://opensebj.blogspot.de/2009/04/naudio-tutorial-5-recording-audio.html的示例代码,它们以较少的代码记录了简单的输入...
waveInStream = new WaveIn(44100,2);
“ 44100,2”是什么意思?是否将设备定位为要从???
进行记录我如何定位扬声器输出?
有人可以帮助我吗?甚至使用其他API?
thx
您可能正在寻找的是WasapiLoopbackCapture
类,它使您可以记录计算机产生的所有声音。 注意:仅在Windows Vista / 7中有效!
要开始记录,请执行以下操作:
waveIn = new WasapiLoopbackCapture();
waveIn.DataAvailable += InputBufferToFileCallback;
waveIn.StartRecording();
然后,每当记录缓冲区已满时,将调用InputBufferToFileCallback
功能:
public void InputBufferToFileCallback(object sender, WaveInEventArgs e)
{
// The recorder bytes can be found in e.Buffer
// The number of bytes recorded can be found in e.BytesRecorded
// Process the audio data any way you wish...
}
我认为您所链接的教程已经把您放在错误的轨道上,因为在当前版本的NAudio中,我看不到new WaveIn(44100,2);
构造函数。自第一次编写本教程以来,NAudio可能已被修改。
最后,数字44100和2分别表示采样率和通道数。
如接受的答案中所述,您所遵循的教程中的代码来自NAudio的较旧版本,在该版本中,采样率和通道数需要作为参数传递给WaveIn
构造函数。
作为答案,建议您使用WasapiLoopbackCapture
,也许这可以对它进行补充。
NAudio的较新实现未将采样率(44100
)和通道数(2
)用作WaveIn
构造函数的参数。您可以简单地调用不带参数的WaveIn
构造函数:
waveInStream = new WaveIn();