我一直在使用环回捕获模式捕获音频。捕获的波形是 32 位波形。我正在努力将其转换为 16 位波形,以便像 lame 这样的编码器可以处理它(它说不支持的数据格式:0x0003)。
我尝试将波流本身中的位(不是我的强项)从 32 位转移到 16 位,但结果听起来仍然失真。
Wave32To16Stream 类似乎在这种情况下爆炸了: if (sourceStream.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat) throw new ApplicationException("Only 32 bit Floating point supported");
理想情况下,我只想直接捕获到 16 位,有没有办法设置捕获位深度?如果没有,有人可以帮我转换波流吗?
可以在此处找到捕获波形的示例:http ://dl.dropbox.com/u/454409/test.wav (10mb)
我也愿意采用某种方式将其编码为 mp3,但我已经尝试了所有我能想到的参数排列以使其接受波形文件。有趣的是 Audacity(它使用 lame_enc 对 mp3 进行编码)能够从波形创建 mp3(但也许 Audacity 在将其传递给 lame 之前会自动将其转换为 16 位)。