将 wav 文件转换为单声道
Converting wav file to mono
我正在尝试使用 NAudio 将立体声 .wav 文件转换为单声道。一个要求是我不能使用任何本机调用,因为我需要 运行 Azure 上的此代码。这是我带来的:
using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var toMono = new StereoToMonoProvider16(waveFileReader);
WaveFileWriter.CreateWaveFile(destFileName, toMono);
}
我的代码运行没有错误,但输出是一个包含纯静默的文件。
还有其他方法可以将文件转换为单声道吗?
这段代码对我有用。
public static void StereoToMono(string sourceFile, string outputFile)
{
using (var waveFileReader = new WaveFileReader(sourceFile))
{
var outFormat = new WaveFormat(waveFileReader.WaveFormat.SampleRate, 1);
using (var resampler = new MediaFoundationResampler(waveFileReader, outFormat))
{
WaveFileWriter.CreateWaveFile(outputFile, resampler);
}
}
}
请注意 channels
参数已传递 1
用于 outFomat
。
这段代码对我有用,即使在 Azure 上也是如此:
private void ConvertToMono(string sourceFileName, string destFileName) {
var monoFormat = new WaveFormat(44100, 1);
using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var floatTo16Provider = new WaveFloatTo16Provider(waveFileReader);
using (var provider = new WaveFormatConversionProvider(monoFormat, floatTo16Provider))
{
WaveFileWriter.CreateWaveFile(destFileName, provider);
}
}
}
请注意,我使用了一个额外的转换器 (WaveFloatTo16Provider
),因为源是浮点格式。
您需要为 StereoToMonoProvider16
的 LeftVolume
和 RightVolume
属性提供值。例如,将它们都设置为 0.5f 以混合通道,或将左设置为 1.0,将右设置为 0.0 以丢弃右通道
我正在尝试使用 NAudio 将立体声 .wav 文件转换为单声道。一个要求是我不能使用任何本机调用,因为我需要 运行 Azure 上的此代码。这是我带来的:
using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var toMono = new StereoToMonoProvider16(waveFileReader);
WaveFileWriter.CreateWaveFile(destFileName, toMono);
}
我的代码运行没有错误,但输出是一个包含纯静默的文件。
还有其他方法可以将文件转换为单声道吗?
这段代码对我有用。
public static void StereoToMono(string sourceFile, string outputFile)
{
using (var waveFileReader = new WaveFileReader(sourceFile))
{
var outFormat = new WaveFormat(waveFileReader.WaveFormat.SampleRate, 1);
using (var resampler = new MediaFoundationResampler(waveFileReader, outFormat))
{
WaveFileWriter.CreateWaveFile(outputFile, resampler);
}
}
}
请注意 channels
参数已传递 1
用于 outFomat
。
这段代码对我有用,即使在 Azure 上也是如此:
private void ConvertToMono(string sourceFileName, string destFileName) {
var monoFormat = new WaveFormat(44100, 1);
using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var floatTo16Provider = new WaveFloatTo16Provider(waveFileReader);
using (var provider = new WaveFormatConversionProvider(monoFormat, floatTo16Provider))
{
WaveFileWriter.CreateWaveFile(destFileName, provider);
}
}
}
请注意,我使用了一个额外的转换器 (WaveFloatTo16Provider
),因为源是浮点格式。
您需要为 StereoToMonoProvider16
的 LeftVolume
和 RightVolume
属性提供值。例如,将它们都设置为 0.5f 以混合通道,或将左设置为 1.0,将右设置为 0.0 以丢弃右通道