Ple*_*ebo 0 c# naudio audio-converter
我有一个 wav 文件,需要将其转换为我们的应用程序之一可以读取的格式。我要转换的文件格式为:
我想要转换成的可读文件格式是:
为了实现这一点,我使用NAudio库。我用于转换的代码大致如下:
using (WaveFileReader reader = new WaveFileReader(inputWavFilePath))
{
WaveFormat newFormat = WaveFormat.CreateMuLawFormat(8000, 1);
using (var conversionStream = new WaveFormatConversionStream(newFormat, reader))
{
WaveFileWriter.CreateWaveFile(outputWavFilePath, conversionStream);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的转换会引发错误
AcmNotPossible 调用 acmStreamOpen
我已经看到了一些从 u-law 转换为 PCM 的链接,但在反向操作时遇到了麻烦。
我很难理解的是为什么当我转换时不会抛出PCM/48kHz/16bit -> uLaw/48kHz/8bit异常。但是,当我尝试将结果文件转换为抛出异常时。uLaw/8kHz/8bit
我是处理音频文件和不同格式的新手,所以如果我错过了一些简单的东西,我很抱歉。
有人可以解释一下为什么转换只在采样率转换时抛出异常,而不是在其他两个转换(编码PCM -> uLaw&& 16bit -> 8bit)时抛出异常吗?
我写了一篇相当详细的文章来解释如何在.NET 中的各种音频类型之间进行转换(许多使用 NAudio)
使用 ACM 编解码器,您通常一次只能更改一件事 - 例如
您可以将它们链接在一起以执行两阶段转换 - 例如,如下所示:
using (var reader = new WaveFileReader(inputWav))
using (var conversionStream1 = new WaveFormatConversionStream(pcm8k16bit, reader))
using (var conversionStream2 = new WaveFormatConversionStream(muLaw8k8bit, conversionStream1))
{
WaveFileWriter.CreateWaveFile(outputWav, conversionStream2);
}
Run Code Online (Sandbox Code Playgroud)