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

C# 不使用MediaPlayer或XACT在C中播放MP3,c#,audio,xna,background-music,C#,Audio,Xna,Background Music,我正在尝试为我的XNA游戏播放背景音乐,但XNA中的选项都要求将音频文件转换为.wav并作为项目资源包含。这对我不起作用有两个原因。首先,.wav文件非常庞大,对用户没有任何实际好处。第二,如果用户喜欢自己的音乐,他们将无法拥有一个MP3文件夹来替代。我可以选择哪些播放不属于项目一部分的MP3?经过大量搜索,我终于在App Hub论坛上找到了解决方案 您可以使用Song.FromUri加载歌曲,然后使用MediaPlayer.Playsong播放所述歌曲 Uri songPath = new U

我正在尝试为我的XNA游戏播放背景音乐,但XNA中的选项都要求将音频文件转换为.wav并作为项目资源包含。这对我不起作用有两个原因。首先,.wav文件非常庞大,对用户没有任何实际好处。第二,如果用户喜欢自己的音乐,他们将无法拥有一个MP3文件夹来替代。我可以选择哪些播放不属于项目一部分的MP3?

经过大量搜索,我终于在App Hub论坛上找到了解决方案

您可以使用Song.FromUri加载歌曲,然后使用MediaPlayer.Playsong播放所述歌曲

Uri songPath = new Uri("Songs/song.mp3", UriKind.Relative);
Song song = Song.FromUri("song", songPath);
MediaPlayer.Play(song);
在您的问题中,您很明显地说您不想使用MediaPlayer,但似乎原因是您首先需要转换歌曲,并且需要将其包含在项目资源中。这样,歌曲就只需要位于与可执行文件位于同一目录中的歌曲目录中


使用SoundEffect类也不行,因为你必须使用TitleContainer.OpenStream,当我尝试它时,它喜欢抱怨。

在做了大量搜索之后,我终于在App Hub论坛上找到了一个解决方案

您可以使用Song.FromUri加载歌曲,然后使用MediaPlayer.Playsong播放所述歌曲

Uri songPath = new Uri("Songs/song.mp3", UriKind.Relative);
Song song = Song.FromUri("song", songPath);
MediaPlayer.Play(song);
在您的问题中,您很明显地说您不想使用MediaPlayer,但似乎原因是您首先需要转换歌曲,并且需要将其包含在项目资源中。这样,歌曲就只需要位于与可执行文件位于同一目录中的歌曲目录中

使用SoundEffect类也不起作用,因为您必须使用TitleContainer.OpenStream,当我尝试它时,它喜欢抱怨