在我的应用程序中,我有一些音频文件是 .wav 格式,这里我检查每个音频文件 BitRate ,如果任何文件低于128Kbps,我通过使用以下代码
将这些文件的比特率更改为128kbpsint bitrate;
string FullPath = @Server.MapPath("~/AudioFiles/");
string[] filePaths = Directory.GetFiles(FullPath, "*.wav", SearchOption.AllDirectories);
for (int i = 0; i < filePaths.Length; i++)
{
string[] FileExt = filePaths[i].Split('\\');
string[] Ext = FileExt[FileExt.Length - 1].Split('.');
string ExtFile = Ext[Ext.Length - 1];
if (ExtFile == "wav" || ExtFile == "WAV")
{
using (var reader = new WaveFileReader(filePaths[i]))
{
bitrate = reader.WaveFormat.AverageBytesPerSecond * 8;
reader.Dispose();
}
if (bitrate < 128000)
{
using (var reader = new WaveFileReader(filePaths[i]))
{
var newFormat = new WaveFormat(8000, 16, 1);
using (var conversionStream = new WaveFormatConversionStream(newFormat, reader))
{
WaveFileWriter.CreateWaveFile(Server.MapPath("~/AudioFiles/" + FileExt[FileExt.Length - 1]), conversionStream);
}
}
}
}
答案 0 :(得分:0)
您通常只能使用ACM一次更改一件事,因此如果您有16kHz立体声文件,则无法一次性转到8kHz单声道文件。
因此,您需要查看WaveFormat
WaveFileReader
的{{1}},并可能执行多个转化步骤。
也可能是您的输入WAV文件正在使用ACM无法解码的编解码器。但是,您需要再次检查输入WaveFormat
以了解相关信息。