C#免费音频库下载

4
有一些免费的音频库可用于商业用途(例如NAudio),能够播放mp3(但不包括NAudio!)。非常感谢! :)

4
我可以为您翻译。这句话的意思是:“我可以问一下为什么不使用NAudio吗?我的意思是,您是否正在寻找一些特殊的功能?” - Avada Kedavra
2个回答

3

您可以使用内置的WMPLib - 参见这篇MSDN文章:以编程方式创建Windows Media Player控件

在最基本的层面上,您将需要类似以下的代码:

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。在VS 2008或更高版本中,“添加引用”对话框中的DirectSound条目已被删除(我想),但您仍然可以浏览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);

DirectSound无法播放mp3 - http://social.msdn.microsoft.com/Forums/en-US/gametechnologiesdirectx101/thread/b38936aa-da3a-4deb-8cf2-a890e89ac674 - ChrisF
@ChrisF:好的...但是我这样做时它确实起作用了(我仍然拥有我那样构建的游戏),所以我不知道那意味着什么,而且我读过的每一本书都说它可以。 - Ry-
有趣的是,当我为自己的应用程序进行研究时,一开始我对使用WMPlib持怀疑态度,并且我找到的所有内容都说DirectSound无法播放mp3。因此,我的先前评论可能不是100%准确的;) - ChrisF
@ChrisF:是的,我发现使用 WMPLib 很麻烦,所以我四处寻找,只是尝试播放 MP3 ... 结果成功了!很奇怪,我知道。 - Ry-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接