我想改变波形文件的比特率。
于是在网上搜索了一下,发现wave文件中有一个44字节长的header,其中25、26、27、28字节用来存放wave文件的比特率
所以我将 wave 存储在字节数组中,然后更改用于存储 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 流???
最佳答案
要更改 WAV 文件的比特率,您不能只更新其格式 block 。您实际上必须以新的采样率/位深度(假设它是 PCM)重新编码它,或者如果它不是 PCM,则为您的编解码器选择不同的比特率。我写了一篇文章here关于各种音频格式之间的转换,包括不同风格的 PCM 之间的转换。如果您要更改采样率而不是比特率,同一篇文章还将说明该怎么做。
关于c# - 使用 Naudio 播放 Stream of Wave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16659861/