2010-03-19 251 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