2010-03-19 110 views
7

编码PCM数据我写了一个基本的SL4应用程序从使用CaptureSource麦克风捕获音频数据。麻烦的是,这是原始的PCM输出 - 这意味着巨大的和未压缩的。的Silverlight 4 - 从麦克风

考虑到我需要这个应用程序到SL4环境中运行的纯粹,我怎么能压缩的PCM音频数据到的东西,可以更容易地传递到远程服务器?

基本上我需要一个解决方案,我还可以部署/包括了Windows Phone 7系列的应用程序,以及一个将在浏览器环境中工作 - 所以托管代码解决方案而已,我觉得呢?

在交谈中,人们已经提出Speex语音和WMA举例来说,但我还没有发现无需参考DLL的,不会在一个项目SL4携手任何库或示例。

回答

4

请参阅迈克Taulty的博客的WavFileHelperSilverlight 4 Rough Notes: Camera and Microphone Support(比页面中间低一点,但整篇文章是值得的),他在其中压缩的PCM文件为WAV。

下面是写入WAV的另一个示例,您可以更改单声道/立体声等值,这将直接更改WAV文件的大小:Audio recorder Silverlight 4 sample。还有一,提供有关书面WAV更多细节:Creating Sound using MediaStreamSource in Silverlight 3 Beta

+0

谢谢,这些都是我见过的文章。有一点需要记住,我的要求是我需要“将PCM音频数据压缩成可以更容易地传送到远程服务器的东西”。将PCM转换为WAV很容易,但是压缩输出不是。 WAV是不受欢迎的,因为它是如此笨拙,即使你将它编码为单声道。 Mike Taulty的博客很好地展示了如何使用接收器捕获PCM并转换为WAV,但我想我们真正需要的是MediaStreamSource或类似的输出为Speex或WMA的东西。 – Richard 2010-03-29 09:40:52

+0

@Otaku - 我已经接受你的答案;这是最全面的来源。尽管如此,还需要做更多的工作,我将在未来的某个时候用我的实际答案尝试更新这篇文章。感谢您的输入。 – Richard 2010-03-30 13:38:33

+0

@理查德 - 谢谢!我听说你需要比WAV更紧凑的东西。我会保持这种心态,以及遇到事情,如果有更好的事情出现,我会更新答案。 – 2010-03-30 14:42:16

1

this看看。看起来他已经将Speex编码器移植到了C#中,以解决您正在尝试解决的确切问题。它可用here。 Speex专为语音而设计,并且应该比wma,mp3或其他音频编解码器的性能更好,因为如果您只是对语音进行编码,那么我认为这是因为您从麦克风中抓取而设计用于处理音乐。

+0

谢谢杰森。我以前见过这个 - 我将不得不重新审视它,看看它是否有效;我忘记了我第一次打折的确切原因! – Richard 2010-03-29 09:41:37

+0

链接obsolet:无法加载页面内容 – Nasenbaer 2013-05-29 11:13:01

-2

你可以做编码直通服务器,通过发送所有流WCF服务,做您的编码直通微软Expression编码SDK API。

请,请参阅本网址,我已经问过: http://forums.silverlight.net/forums/t/181141.aspx

问候

+0

谢谢,但重点是在将它发送到服务器之前将它压缩*。 – Richard 2010-05-18 11:42:04