用NAudio读取一个wave的chunk,并在屏幕上显示出来
时间: 2023-12-06 17:44:22 浏览: 116
C# 窗体 引用NAudio库获取音频播放的波形值基础使用
首先,需要在项目中添加NAudio库的引用。然后,可以使用以下代码读取wave文件的chunk并在屏幕上显示出来:
```csharp
using System;
using System.IO;
using System.Windows.Forms;
using NAudio.Wave;
namespace WaveChunkReader
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Wave files (*.wav)|*.wav";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
txtFilePath.Text = openFileDialog.FileName;
}
}
private void btnReadChunk_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtFilePath.Text))
{
MessageBox.Show("Please select a wave file");
return;
}
using (WaveFileReader reader = new WaveFileReader(txtFilePath.Text))
{
int bytesToRead = (int)(reader.SampleRate * reader.BlockAlign * 0.1); // read 100ms of audio data
byte[] buffer = new byte[bytesToRead];
int bytesRead = reader.Read(buffer, 0, bytesToRead);
if (bytesRead > 0)
{
// display the chunk on the screen
txtChunkData.Text = BitConverter.ToString(buffer, 0, bytesRead).Replace("-", " ");
}
else
{
MessageBox.Show("Unable to read audio data");
}
}
}
}
}
```
在上面的代码中,我们首先使用`OpenFileDialog`选择要读取的wave文件。然后,在单击“Read Chunk”按钮时,我们使用`WaveFileReader`类从文件中读取100毫秒的音频数据。最后,我们将读取到的字节数据显示在屏幕上的`txtChunkData`文本框中。
请注意,上面的代码只读取了wave文件的一个小部分数据,如果需要读取整个文件,可以使用类似于上面的代码来实现。
阅读全文