我将一个PlayList加载到我的WMP实例中,我希望它只循环一首歌。到目前为止,我用Google搜索的所有内容都告诉我这样做:
private AxWindowsMediaPlayer wmp;
wmp.settings.setMode("loop", true);
但是,这似乎只会使整个PlayList重复出现。我想要的行为是,如果我在播放列表中的歌曲5播放时启用“重复”,则歌曲5将在完成时自动重复(而不是继续播放歌曲6)。大多数车载MP3播放器已经以这种方式工作在我的C#程序中有一个很好的原生方式吗,或者我是否必须设计一个“黑客”解决方案,比如拦截下一首歌加载时发生的事件?
答案 0 :(得分:1)
尝试创建一个只有一首你想要一遍又一遍地播放的歌曲的新剧集。
答案 1 :(得分:1)
这是我的方法。对于我的播放列表,我创建了一个IWMPMedia类型的静态通用列表,而不是使用WMPLib播放列表。这使我能够毫无困难地将歌曲添加到我的播放列表中,因为通用列表会跟踪所有歌曲。所以要重复一首歌,我所做的就是把当前歌曲的当前索引放在播放列表中,并将其设置为等于整数,然后我做了一些事情:
int repeatSongIndex = index;//in this case, our index is the current song playing
player.URL = playlist[repeatSongIndex].sourceURL;//lets have player.URL point to the song object chosen to be repeated to its source url (the directory of the file).
bool isRepeat = true;//to keep track of whether the repeat option is enabled or not.
答案 2 :(得分:0)
您是否可以处理PlayStateChange事件并检测何时为当前曲目设置MediaEnded
状态并将其倒回?
答案 3 :(得分:0)
简短的回答是,WMP 不支持重复单曲!
所以你能做的最好就是遵循Machta的建议并动态编辑播放列表。例如,当您想要在播放列表中重复单个曲目时,编辑播放列表(例如它)仅具有该单个曲目并启用循环。不要忘记将旧的播放列表保存在其他地方。当用户禁用歌曲循环恢复旧播放列表并将其设置为不重复时。
不幸的是,您有一个缺点,即当您更改播放列表时,歌曲可能会从头开始:按照James的建议并安排将您的播放列表更改为MediaEnded
州。
这是我能告诉你的最好的事情。