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

Saving MemoryStream to File produces 0 bytes

我正在使用此代码将 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;

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

这里可能哪里出错了?

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