C#读取wav文件

 1  private void showWAVForm(string filepath) //此函数只能用于读取16bit量化单声道的WAV文件
 2          {
 3               FileStream  fs = new FileStream(filepath,FileMode.Open);
 4               fs.Read(new byte[42],0,42);
 5               byte[] datasize = new byte[4]; 
 6               fs.Read(datasize,0,4);
 7               int dtsize = byteArray2Int(datasize); //数据块部分数据的字节数
 8               for (int i = 0; i < dtsize/2; i++)
 9                   {
10                     byte[] byt = new byte[2];
11                     fs.Read(byt, 0, 2);
12                     short dt = (short)(byt[0] | (((int)byt[1]) << 8));
13                     Console.WriteLine(dt);
14                 }
15               fs.Close();
16          }
17  
18      private int byteArray2Int(byte[] hex)
19         {
20            return hex[0] | (hex[1] << 8) | (hex[2] << 16) | (hex[3] << 24);
21         }

 

转载于:https://www.cnblogs.com/144823836yj/p/5961967.html

C#读取WAV文件的原始数据可以通过使用`System.IO`命名空间下的`FileStream`类和`BinaryReader`类来实现。WAV文件格式是一种标准的音频文件格式,其包含了关于音频数据的描述信息(称为头部信息)以及实际的音频样本数据。下面是一个基本的步骤说明,如何读取WAV文件的原始音频数据: 1. 打开WAV文件:使用`FileStream`打开需要读取WAV文件。 2. 跳过头部信息:读取并跳过WAV文件头部的44个字节,因为这包含了文件的元数据,如格式、采样率、声道数等,我们通常只关心实际的音频样本数据。 3. 读取音频样本数据:使用`BinaryReader`的相应方法(如`ReadBytes`或`ReadChars`等)读取音频数据。音频数据的大小等于文件大小减去头部信息的大小。 4. 处理数据:根据需要对读取的原始音频数据进行处理,例如转换为适当的音频格式,以便于播放或分析。 下面是一个简单的代码示例,展示了如何在C#读取WAV文件的原始音频数据: ```csharp using System; using System.IO; using System.Text; public class WAVFileReader { public static byte[] ReadWavFile(string path) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read)) using (BinaryReader br = new BinaryReader(fs)) { // WAV文件头部固定44字节 if (Encoding.ASCII.GetString(br.ReadBytes(4)) != "RIFF") { throw new Exception("不是有效的WAV文件"); } // 跳过文件大小和"WAVE"标识 br.ReadBytes(4); if (Encoding.ASCII.GetString(br.ReadBytes(4)) != "fmt ") { throw new Exception("不是有效的WAV文件"); } // 跳过格式块 int fmtLength = BitConverter.ToInt32(br.ReadBytes(4), 0); br.ReadBytes(fmtLength); if (Encoding.ASCII.GetString(br.ReadBytes(4)) != "data") { throw new Exception("不是有效的WAV文件"); } // 读取音频数据大小 int dataLength = BitConverter.ToInt32(br.ReadBytes(4), 0); // 读取音频数据 byte[] audioData = br.ReadBytes(dataLength); return audioData; } } } ``` 在使用上述代码时,请确保WAV文件路径正确,并且文件确实是有效的WAV格式文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值