NAudio是一个开源的音频库,用于在C#应用程序中处理音频。它提供了许多方便的属性和方法,使开发人员能够轻松地读取、写入、转换和处理音频数据。
这个例子是在.net 6下,所以需要引用core版本。
要播放音频,我们可以使用NAudio的WaveOutEvent
类。以下是一些常用的属性和方法:
C#WaveOut wout = new WaveOut();
WaveFileReader read;
private void btnPlay_Click(object sender, EventArgs e)
{
read = new WaveFileReader("D:\\BaiduSyncdisk\\11Test\\sa1.wav");
wout.Init(read);//音频输出初使化
wout.Volume = 1.0f;//调整声音
wout.Play();//播放
}
private void btnPause_Click(object sender, EventArgs e)
{
wout.Pause();//暂停播放
}
private void btnResume_Click(object sender, EventArgs e)
{
wout.Resume();//继续播放
}
private void btnStop_Click(object sender, EventArgs e)
{
wout.Stop();//停止播放
read.Close();
}
C#WaveOut wout = new WaveOut();
Mp3FileReader read;//只需要修改这个
private void btnPlay_Click(object sender, EventArgs e)
{
read = new Mp3FileReader("D:\\BaiduSyncdisk\\11Test\\a.mp3");
wout.Init(read);//音频输出初使化
wout.Volume = 1.0f;//调整声音
wout.Play();//播放
}
只需要修改read就可以了
C#WaveIn wavin;
WaveFileWriter write;
private void btnRecord_Click(object sender, EventArgs e)
{
wavin = new WaveIn();
wavin.WaveFormat = new WaveFormat(44100, 1);
write = new WaveFileWriter("d:\\a.wav", wavin.WaveFormat);
wavin.DataAvailable += (s, e) =>
{
write.Write(e.Buffer, 0, e.BytesRecorded);
};
wavin.StartRecording();
}
private void btnStop_Click(object sender, EventArgs e)
{
wavin.StopRecording();
write.Close();
}
也就是录制计算机正在播放的声音, 借助 WasapiLoopbackCapture 即可简单实现
C#WasapiLoopbackCapture wavin;
WaveFileWriter write;
private void btnRecord_Click(object sender, EventArgs e)
{
wavin = new WasapiLoopbackCapture();
wavin.WaveFormat = new WaveFormat(44100, 1);
write = new WaveFileWriter("d:\\a.wav", wavin.WaveFormat);
wavin.DataAvailable += (s, e) =>
{
write.Write(e.Buffer, 0, e.BytesRecorded);
};
wavin.StartRecording();
}
private void btnStop_Click(object sender, EventArgs e)
{
wavin.StopRecording();
write.Close();
}
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!