将 MemoryStream 保存到文件会产生 0 字节

tmi*_*hty 0 c# memorystream using filestream

我正在使用此代码将 MP3 MemoryStream 写入文件:

using (var nSpeakStreamAsMp3 = new MemoryStream())
using (var nWavFileReader = new WaveFileReader(nSpeakStream))
using (var nMp3Writer = new LameMP3FileWriter(nSpeakStreamAsMp3, nWavFileReader.WaveFormat, LAMEPreset.STANDARD_FAST))
{
    nWavFileReader.CopyTo(nMp3Writer);

    string sPath = "C:\\inetpub\\wwwroot\\server\\bin\\mymp3.mp3";

    using (FileStream nFile = new FileStream(sPath, FileMode.Create, System.IO.FileAccess.Write))
    {
        nSpeakStreamAsMp3.CopyTo(nFile);
    }

    sRet = (String.Concat("data:audio/mpeg;base64,", Convert.ToBase64String(nSpeakStreamAsMp3.ToArray())));
}

return sRet;
Run Code Online (Sandbox Code Playgroud)

由于某种我没有看到的原因,这会生成一个 0 字节的文件。但是,MP3 流是有效的并且可以工作。我将其作为 Base64String 传递到网站,并且我确实听到了它。

这里可能错误在哪里?

Mar*_*ell 5

  1. nSpeakStreamAsMp3当前位于流的末尾;你需要像录像机一样思考:nSpeakStreamAsMp3.Position = 0;在再次复制该值之前,请倒回 ( )
  2. 确保冲洗nMp3Writer;如果可能的话,nMp3Writer完全关闭