【发布时间】:2013-05-15 14:54:59
【问题描述】:
我想改变wave文件的比特率。
于是我在网上搜索,发现wave文件包含一个44字节长度的header,其中25、26、27和28字节用于存储wave文件的比特率
所以我将波形存储在一个字节数组中,然后更改用于存储波形比特率的字节值。
这里是代码:
private int sampleRate;
private byte[] ByteArr;
private MemoryStream ByteMem;
ByteArr = null;
ByteMem = null;
ByteArr = File.ReadAllBytes(pathOfWav.Text);
sampleRate = BitConverter.ToInt32(ByteArr, 24) * 2;
Array.Copy(BitConverter.GetBytes(sampleRate), 0, ByteArr, 24, 4);
ByteMem = new MemoryStream(ByteArr);
在这里,我将 Wave 文件位置存储在 pathOfWav.Text 上,这是一个文本框,然后我将 Wave 文件的所有字节存储在 ByteArr 中,然后将 4 字节(从 25 到 28)转换为 Int32 并将其乘以 2提高语速并将值存储在sampleRate
之后,我用比特率sampleRate 的新值修改以前的ByteArr,然后我实例化一个新的 MemoryStream 。
我的问题是,如何使用 Naudio 播放新的 Wave 流???
【问题讨论】:
-
@Mark Heath 你能帮忙吗?
-
也许如果您说明您正在尝试做什么而不是您尝试如何做,我们可以提供一个合理的答案。
-
@spender 我想改变wave文件的比特率,例如如果wave文件的比特率是44100,我想把它乘以2,然后它变成88200,我想玩在此更改后。
-
你必须使用Naudio的WaveOut类中的方法;初始化和播放。此外,您需要更改其他相关字节(在采样率字段之后)。请在下方查看答案。
-
这个问题的标题似乎与您的要求不符