我在回调(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();
最佳答案
文件播放缓慢的最可能的解释是您的波形格式错误。 channel 数和采样率是最可能的解释。
所以你有new WaveFormat(44100, 16, 1)
,你怎么知道这是正确的格式?我建议尝试使用 2 个 channel - new WaveFormat(44100, 16, 2)
, - 这将使播放速度加倍。
关于C# NAudio 在从另一个页面 POST 后生成 Noise WAV 文件而没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242969/