2010-12-09 90 views
0

我使用silverligh4录制了音频,并试图通过服务器上的服务保存它。 记录的问题.WAV文件中有数据流为数据流。但是,当这个流被传递时,它只能以1526字节的最大值传输。我在web.config中设置了最大属性。我认为我们需要在客户端对流进行编码,并传递这个编码流并在服务器上解码。如何在sileverlight上编码音频流 应用程序并在服务器上解码它?请指教我。谢谢你的时间。 Nspeex或CSpeex不适用于我。如果有人实施了同样的建议,请告诉我们该怎么做?如何在Silverlight中压缩语音流

+2

你不会得到任何压缩在1526字节以下的WAV文件...你应该找出服务器有什么问题。 – cdhowie 2010-12-09 14:13:58

回答

1

将WAV压缩到任何合理大小(无交易质量)的唯一方法是将其转换为另一种格式。

我不知道这是否是您的选择,但在发送到服务器之前使用lame.exe转换为MP3非常容易。当然,您需要确保授权允许您随应用程序分发。

这里是一个开放源码的程序,MP3转换为WAV: http://www.codeproject.com/KB/audio-video/madlldlib.aspx

像这样的东西转换成MP3,你也许可以转换成MP3与跛脚也使用--decompress选项为WAV。

using System.Diagnostics; 

public string WAV2MP3(string fileName, bool waitFlag) { 

    string newFileName = fullpathDir + fileName.Replace(".wav",".mp3"); 
    string lameArgs = "-b 32 --resample 22.05 -m m \"" + 
     fullpathDir + fileName + "\" \"" + 
     newFileName + "\""; 

    ProcessStartInfo processInfo = new ProcessStartInfo(); 

    Arguments = lameArgs; 
    WindowStyle = ProcessWindowStyle.Hidden; 
    WorkingDirectory = Application.StartupPath; 

    Process startedProcess = new Process.Start(processInfo); 

    if (waitFlag) { 
     startedProcess.WaitForExit(); 
    } 
    return newFileName; 

}; 
0

我可能只是采取原始音频流,以低速率采样,并通过压缩流发送出去。如果你想变得有趣,你可以把压缩变成像LAME这样的MP3编码器(在一个单独的线程/进程中!)。