C# NAudio 在另一页 POST 之后制作 Noise WAV 文件没有错误

C# NAudio makes Noise WAV file without errors after POST from another page

我正在回调中发布一个文件(base64data);到服务器使用。当我拿到文件时,一切似乎都很好,但文件听起来像白噪音。感谢您的帮助。

protected void Page_Load(object sender, EventArgs e)
{
    var strUser = Request.Form["UserId"];
    int userId = Convert.ToInt32(strUser);
    var reader = new RawSourceWaveStream(HttpContext.Current.Request.InputStream, new WaveFormat(44100, 16, 1));
    var timeStamp = DateTime.Now.ToString("yyyyMMddHHmmssfff");
    var target = new WaveFormat(44100, 8, 1);
    var lastFileName = timeStamp + "_" + strUser + ".wav";
    var saveStreamFile = @"C:\SOUNDBOX\" + lastFileName;
    var str = new WaveFormatConversionStream(target, reader);
    WaveFileWriter.CreateWaveFile(saveStreamFile, str);
    reader.Close();
    str.Close();

现在我有了这个:(请让我知道突然跳到你身上的那些愚蠢的事情,这些事情可能会使 wav 声音慢动作) 但它制作了一个播放缓慢的 WAV:

    var saveStreamFile = @"C:\SOUNDBOX\" + lastFileName;
    var wavFileStr = Convert.FromBase64String(Request["data"].Replace("-", "+").Replace("_", "/").Replace("\n", String.Empty).Replace("\r", String.Empty).Replace("data:audio/wav;base64,", String.Empty));
    MemoryStream stm = new MemoryStream(wavFileStr, 0, wavFileStr.Length);

    var target = new WaveFormat(44100, 16, 1);
    var reader = new RawSourceWaveStream(stm, new WaveFormat(44100, 16, 1));
    var str = new WaveFormatConversionStream(target, reader);
    WaveFileWriter.CreateWaveFile(saveStreamFile, str);
    reader.Close();
    str.Close();

文件播放缓慢的最可能解释是您使用了错误的波形格式。通道数和采样率是最可能的解释。

所以你有 new WaveFormat(44100, 16, 1),你怎么知道那是正确的格式?我建议尝试使用 2 个频道 - new WaveFormat(44100, 16, 2), - 这将使播放速度加倍。