gpt4 book ai didi

.net - 将 32 位波形转换为 16 位波形

转载 作者:行者123 更新时间:2023-12-02 19:36:30 24 4
gpt4 key购买 nike

我一直在使用环回捕获模式捕获音频。捕获的波形是 32 位波形。我正在努力将其转换为 16 位波形,以便像 lame 这样的编码器可以处理它(它说不支持的数据格式:0x0003)。

我尝试将波形流本身的位(不是我的强项)从 32 位转换为 16 位,但结果听起来仍然失真。

Wave32To16Stream 类似乎在这种情况下爆炸了: if (sourceStream.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat) throw new ApplicationException("仅支持 32 位浮点");

理想情况下,我只想直接捕获 16 位,有没有办法设置捕获位深度?如果没有,有人可以帮我转换波流吗?

可以在此处找到捕获波形的示例:http://dl.dropbox.com/u/454409/test.wav (10MB)

我还想用一些方法将其编码为 mp3,我已经尝试了我能想到的所有参数排列,以使其接受波形文件。有趣的是 Audacity(使用 lame_enc 来编码 mp3)能够从波形创建 mp3(但也许 Audacity 在将其传递给 lame 之前会自动将其转换为 16 位)。

最佳答案

格式 0x0003 实际上是 ieeeFloat,你不应该得到这个异常。最好检查它读取的值。您无法通过位移位来转换值,必须从浮点转换为短整型。简单的转换即可完成工作。

关于.net - 将 32 位波形转换为 16 位波形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3821255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com