在C#中播放mp3不使用MediaPlayer或XACT

时间:2012-03-22 03:36:13

标签: c# audio xna background-music

我正在尝试为我的XNA游戏获取背景音乐,但XNA中的选项都要求将音频文件转换为.wav并作为项目资源包含在内。这对我来说不起作用有两个原因。首先,.wav文件非常庞大,对用户没有任何实际好处。其次,如果他们更喜欢自己的音乐,用户将无法拥有一个mp3替换文件夹。我有什么选择播放实际上不属于该项目的mp3?

1 个答案:

答案 0 :(得分:5)

经过大量搜索后,我终于在App Hub论坛上找到了this线程,这给了我一个解决方案。

您可以使用Song.FromUri加载歌曲,然后使用MediaPlayer.Play(song)播放该歌曲。

Uri songPath = new Uri("Songs/song.mp3", UriKind.Relative);
Song song = Song.FromUri("song", songPath);
MediaPlayer.Play(song);

在你的问题中你(非常明显地)说你想要使用MediaPlayer,但似乎原因是因为你首先需要转换歌曲它需要被列入项目资源。有了这个,这首歌只需要在“歌曲”目录中(与可执行文件位于同一目录中)。

使用SoundEffect课程也不行,因为您必须使用TitleContainer.OpenStream,我尝试时会抱怨。