C# Silverlight 4-对来自麦克风的PCM数据进行编码

C# Silverlight 4-对来自麦克风的PCM数据进行编码,c#,silverlight,silverlight-4.0,audio,pcm,C#,Silverlight,Silverlight 4.0,Audio,Pcm,我已经编写了一个基本的SL4应用程序,使用CaptureSource从麦克风捕获音频数据。问题是,它的原始PCM输出-这意味着巨大和未压缩 鉴于我需要此应用程序在SL4环境中运行,如何将PCM音频数据压缩成更容易传送到远程服务器的内容 本质上,我需要一个解决方案,我也可以部署/包括在Windows Phone Series 7应用程序中,以及一个在浏览器环境中工作的解决方案,所以我认为,只有托管代码解决方案 在对话中,人们建议使用Speex和WMA,但我没有发现任何不需要参考DLL就可以工作的库

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

鉴于我需要此应用程序在SL4环境中运行,如何将PCM音频数据压缩成更容易传送到远程服务器的内容

本质上,我需要一个解决方案,我也可以部署/包括在Windows Phone Series 7应用程序中,以及一个在浏览器环境中工作的解决方案,所以我认为,只有托管代码解决方案


在对话中,人们建议使用Speex和WMA,但我没有发现任何不需要参考DLL就可以工作的库或示例,这些库或示例在SL4项目中不起作用。

这篇关于在客户端保存音频的文章。例如,要将音频数据发送到服务器,您可以使用WebClient。

请参阅Mike Taulty博客中的
WavFileHelper
类(略低于页面中部,但全文值得一读),在该类中,Mike Taulty将PCM文件压缩为WAV


下面是另一个示例,说明在写入WAV时,可以更改单声道/立体声等值,这将直接更改WAV文件的大小:。还有一个提供了有关写入WAV的更多详细信息:

请查看。看起来他已经将Speex编码器移植到了C#上,以解决您正试图解决的问题。它是可用的。Speex是为语音而设计的,如果您只是对语音进行编码,那么它的性能应该比wma、mp3或其他专门为处理音乐而设计的音频编解码器要好,因为您是从麦克风抓取语音的。

您可以通过服务器进行编码,通过将所有流发送到WCF服务,并通过Microsoft Expression encoding SDK API进行编码

请查看我之前询问过的此url:

关于

仅是对以下内容的一点补充:


还有另一个Speex到.Net和Silverlight 4的端口叫做。

谢谢;不过,我想要的是一个纯.NET管理的解决方案,没有专门针对SL4平台的第三方组件。我需要一个能在WindowsPhoneSeries 7上运行的解决方案。谢谢,这些都是我看过的文章。这里需要记住的一件事是,我需要“将PCM音频数据压缩成可以更容易地传送到远程服务器的内容”。将PCM转换为WAV很容易,但压缩输出却不容易。WAV是不受欢迎的,因为它是如此臃肿,即使你把它编码为单声道。Mike Taulty的博客非常擅长展示如何使用接收器捕获PCM并转换为WAV,但我想我们这里真正需要的是一个MediaStreamSource或类似的输出为Speex或WMA的东西。@Otaku-我接受了你的答案;这是最全面的来源。尽管如此,仍然需要做更多的工作,我将尝试在将来的某个时候用我的实际答案更新这篇文章。谢谢你的意见。@Richard-谢谢!我听说你需要比WAV更紧凑的东西。当我遇到问题时,我会把这件事放在心上,如果有更好的事情发生,我会更新答案。@Richard-还没有机会详细讨论这个问题,但这看起来很有趣:谢谢你的指点,我会尽快尝试看一看!谢谢你,杰森。我以前见过这种情况——我将不得不重新审视它,看看它是否有效;我忘了第一次打折的确切原因了!Links obsolet:无法加载页面内容,谢谢,但关键是在将其发送到服务器之前对其进行压缩。