2010-10-19 22 views
2

我想從客戶端(Silverlight)規範PCM WAV文件。我在服務器端使用ASP.NET MVC。我發現這裏有一個C程序是否有.NET庫來規範化PCM WAV

https://neon1.net/prog/normalizer.html 有誰知道如果有類似的C#庫,我可以直接使用嗎?

+0

這裏有幾個關於C#音頻庫的問題。其中之一肯定可以做到。 NAudio甚至有一臺壓縮機:http://naudio.codeplex.com/ – bzlm 2010-10-19 11:21:27

+0

感謝你。我看着NAudio。但我的意思是,如果有一個庫可以立即調用:Lib.Normalize(soundfile,..),就像我在那裏提到的C版本一樣。 – 2010-10-19 12:26:07

+0

@nnn NAudio不是如何工作的?無論哪種方式,另一個圖書館可能會做到這一點。如果不是的話,那麼自己動手就不是火箭科學。 :) – bzlm 2010-10-19 12:48:44

回答

0

的一些想法(不談試圖NAudioBass.NET

  1. 調用編譯的C可執行
  2. 編譯爲一個DLL和使用的P/Invoke
  3. 轉換C代碼到C#
+1

P/Invoke不會在Silverlight中工作 – Denis 2010-10-19 21:09:08

+0

謝謝你。我考慮過這些可能性,但只是想看看是否有一個即時可用的調用來進行規範化工作。我想沒有。我會嘗試使用NAudio來實現它。 – 2010-10-20 07:39:15

+0

@Denis,沒錯,我會在服務器端完成。 – 2010-10-20 07:39:54

1

「標準化」音頻文件通常不是一個好主意,因爲如果全音量只有一個採樣,那麼它將不起作用。更好的方法是在音頻上運行dynamic range compressor

Skype Voice Changer我寫了使用NAudio的示例代碼,並通過動態範圍壓縮器傳遞音頻。但是,正如其他人所說,由於互操作性,NAudio不能直接用於Silverlight。但是,您應該能夠將WaveFileReader,WaveFormat和WaveFileWriter複製出來並進行編譯,而無需進行太多的代碼更改。此外,您將無法使用WaveBuffer機制在字節數組和短褲/浮點數之間進行投射,因此您需要以較慢的方式進行轉換(例如,使用BitConverter)。

+0

謝謝。它有助於。我將研究「動態範圍壓縮器」和「Skype Voice Changer」 – 2010-10-20 14:53:54