Microsoft XNA MediaPlayer.Play(song) 不播放某些歌曲

Posted

技术标签:

【中文标题】Microsoft XNA MediaPlayer.Play(song) 不播放某些歌曲【英文标题】:Microsoft XNA MediaPlayer.Play(song) does not play some songs 【发布时间】:2012-08-13 12:34:13 【问题描述】:

我对 XNA 很陌生,我一直在尝试解决这个问题。不用说,我不能(因此问题!!)

我一直在尝试使用 XNA 来处理音频,它似乎运行良好。但是,尽管我尝试播放的所有音乐文件都是 MP3 格式,但仍有一些歌曲无法播放。

我做的简单测试的结果如下(假设“SongB”是不播放的歌曲)

MediaPlayer.Play(SongA) --> 工作 MediaPlayer.Play(SongB) --> 没有声音 MediaPlayer.Play(SongC) --> 工作

如果我有一个列出歌曲的列表,以及一个在调用“next()”时播放下一首歌曲的程序:

int playingIdx = 0;

SongList[0] = SongA;
SongList[1] = SongB;
SongList[2] = SongC;

void next()

    PlayingIdx++;
    MediaPlayer.Play(SongList[PlayingIdx]);

那么当PlayingIdx = 1时,跳过SongB,程序播放SongC。有没有人遇到过类似的事情?或者有没有某种类型的 MP3 可以 XNA 播放?

【问题讨论】:

我猜您没有收到任何错误,并且您确定其他应用程序可以播放该文件? 您确定playingidx 的值正确吗? 请注意,如果MediaPlayer上一首歌曲还没有播放完,下一首歌曲就不会播放了。 playIdx 和 next() 示例只是我注意到的。我写了一个快速程序,我可以在其中搜索一首歌曲并播放它。虽然我的 Windows Media Player 可以播放一些歌曲(我也可以将它们流式传输到我的 xbox 中播放),但我无法播放一些歌曲,这就是我的问题。 为了澄清playingIdx问题,代码段:MediaPlayer.Play(SongsList[1])和代码段MediaPlayer.Play(SongsList[2])都导致播放SongC 【参考方案1】:

我的猜测是,XNA 播放器比大多数音频播放器对某些格式不一致的问题过于敏感。尝试解码然后重新编码导致问题的歌曲。对于此任务,您可以使用LAME,例如:

lame --mp3input --strictly-enforce-ISO song.mp3 fixed_song.mp3

除此之外会尝试重新排列歌曲的顺序只是为了检查它是否无关紧要。

【讨论】:

以上是关于Microsoft XNA MediaPlayer.Play(song) 不播放某些歌曲的主要内容,如果未能解决你的问题,请参考以下文章

XNA Mediaplayer.Play()开始在计算机上的不同时间播放?

音乐重复时 WP7 XNA 游戏“断断续续”

C# 无法从 'float' 转换为 'Microsoft.Xna.Framework.Point'

XNA中的一首歌被切断了

尝试使用 Microsoft.Xna.Framework 将 wma 文件加载为 SoundEffect 时发生 InvalidOperationException

XNA - 视频和VideoPlayer缺少命名空间?