[英]AcmNotPossible calling acmStreamOpen Error
在我的應用程序中,我有一些.wav格式的音頻文件,在這里,我正在檢查每個音頻文件BitRate ,如果有任何文件低於128Kbps,我會使用下面的代碼將這些文件的比特率更改為128kbps
int 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);
}
}
}
}
通常,您只能使用ACM一次更改一件東西,因此,如果您有16kHz立體聲文件,則不能一次訪問8kHz單聲道文件。
因此,您需要查看WaveFileReader
擁有什么WaveFormat
,並可能需要執行多個轉換步驟。
也可能是您輸入的WAV文件使用的是ACM無法解碼的編解碼器。 但是同樣,您需要檢查輸入的WaveFormat
才能知道這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.