2011-07-07 50 views
4

是否有一些免費音頻庫用於商業用途(如NAudio),它能夠播放mp3(但不是NAudio!) 非常感謝! :)C#免費音頻庫的下載

+4

請問爲什麼不NAudio?我的意思是,你有什麼特別的功能? –

回答

3

您可以使用內置WMPLib - 請參閱此MSDN文章Creating the Windows Media Player Control Programmatically

在最基本的層面上,你需要這樣的代碼:

private void PlayFile(String url) 
{ 
    Player = new WMPLib.WindowsMediaPlayer(); 
    Player.URL = url; 
    Player.controls.play(); 
} 

但是,你也可以得到事件告訴大家,播放狀態已經改變,所以你可以開始玩一個新的軌道,或關閉(例如):

Player.PlayStateChange += 
    new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange) 

private void Player_PlayStateChange(int NewState) 
{ 
    if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped) 
    { 
     this.Close(); 
    } 
} 

這意味着您的應用程序與Windows綁定 - 因此您不能使用Mono。

1

您可以嘗試使用DirectSound。 DirectSound的條目從VS 2008或更高版本的「添加引用」對話框中刪除(我認爲),但仍然可以在GAC中瀏覽正確的DLL。尋找最新版本。這很容易,像這樣:

Device dev = new Device(); 
dev.SetCooperativeLevel(this.Handle, CooperativeLevel.Priority); // this refers to the form to which DirectSound is tied 
SecondaryBuffer sound = new SecondaryBuffer("path\\to\\file", dev); 
sound.Volume = /* volume */; 
sound.Play(0, BufferPlayFlags.Default); 
+0

DirectSound無法播放mp3 - http://social.msdn.microsoft.com/Forums/en-US/gametechnologiesdirectx101/thread/b38936aa-da3a-4deb-8cf2-a890e89ac674 – ChrisF

+0

@ChrisF:Oookay ...但它工作當我這樣做時(我仍然有這樣的遊戲),所以我不知道這意味着什麼,我讀過的每本書都說它可以。 – Ryan

+0

奇怪 - 當我正在研究這個爲我自己的應用程序時,我很擔心使用WMPlib開始和我發現的一切,說DirectSound無法播放MP3。所以我以前的評論可能不是100%準確;) – ChrisF