我有一个 wav 文件,我需要将其转换为我们的一个应用程序可以读取的格式。我要转换的文件格式为:
- 编码:PCM
- 采样率:48kHz
- 比特率:16 位
- 频道:1
我要转换为的可读文件格式是:
- 编码:u-Law
- 采样率:8kHz
- 比特率:8位
- 频道:1
为此,我使用了NAudio库。我用于转换的代码类似于:
using (WaveFileReader reader = new WaveFileReader(inputWavFilePath))
{
WaveFormat newFormat = WaveFormat.CreateMuLawFormat(8000, 1);
using (var conversionStream = new WaveFormatConversionStream(newFormat, reader))
{
WaveFileWriter.CreateWaveFile(outputWavFilePath, conversionStream);
}
}
上述转换抛出错误
AcmNotPossible 调用 acmStreamOpen
我已经看到了一些从 u-law 转换为 PCM 的链接,但我遇到了相反的问题。
我正在努力理解的是为什么当我转换PCM/48kHz/16bit
->
uLaw/48kHz/8bit
异常时没有抛出。但是,当我尝试将生成的文件转换uLaw/8kHz/8bit
为异常时,就会抛出异常。
我是处理音频文件和不同格式的新手,所以如果我遗漏了一些简单的东西,我深表歉意。
有人可以解释为什么转换只在采样率转换时抛出异常,而不是在其他两个转换(编码PCM -> uLaw
&& 16bit -> 8bit
)?