将 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 传递给网站,我确实听到了。
这里可能哪里出错了?
nSpeakStreamAsMp3
当前位于流的 end;你需要像录像机一样思考:在你再次复制值之前,请善待,倒带(nSpeakStreamAsMp3.Position = 0;
)
- 确保冲水
nMp3Writer
;如果可能,完全关闭 nMp3Writer
我正在使用此代码将 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 传递给网站,我确实听到了。
这里可能哪里出错了?
nSpeakStreamAsMp3
当前位于流的 end;你需要像录像机一样思考:在你再次复制值之前,请善待,倒带(nSpeakStreamAsMp3.Position = 0;
)- 确保冲水
nMp3Writer
;如果可能,完全关闭nMp3Writer