c# - 使用 Naudio 播放 Stream of Wave

标签 c# .net wav naudio

我想改变波形文件的比特率。

于是在网上搜索了一下,发现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/

相关文章:

c# - 将 XAML "Label"绑定(bind)到 Xamarin.Forms 中的代码隐藏 "public const"?

c# - 页面级别的 ASP.NET 和 IsNew

c# - XSLT 的输出参数

php - 如何使用 PHP 加入 WAV 文件?

audio - WAV 文件 : How is the Data Subchunk Stored

java - Android 应用程序无法播放 GSM 6.10 编码的 wav?

c# - 如何验证我的 C# 代码在管理员模式下运行 IISRESET 命令

c# - Entity Framework 5.0b2 代码优先 : One-To-Many and One-To-One for the same table, 带级联删除

c# - 如何在队列级别设置 MaxDequeueCount

c# - TimeSpan 删除秒数