You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WMPLib实现背景音乐播放结束后自动循环

WMPLib实现背景音乐自动循环播放方案

你可以根据实际需求选择以下两种实现方式:

  • 方案一:开启内置循环模式(推荐,代码最简洁)
    WMP原生自带单曲循环配置,不需要额外编写事件监听逻辑,只需要在启动播放前开启循环开关即可,修改后的完整代码如下:
WindowsMediaPlayer musicPlayer = new WindowsMediaPlayer();
// 开启播放器内置循环播放规则
musicPlayer.settings.setMode("loop", true);
musicPlayer.URL = "themeSong.mp3";
musicPlayer.controls.play();

setMode方法接收两个参数,第一个传入"loop"表示要修改循环相关配置,第二个参数传true即为开启循环,歌曲播放到末尾后会自动回到开头重新播放,全程由播放器内核处理逻辑,没有额外性能开销。

  • 方案二:监听播放状态手动重播(适合需要自定义扩展的场景)
    如果你需要在每次歌曲播放结束时插入自定义逻辑(比如插播音效、统计播放次数、判断是否切歌),可以通过监听播放状态变更事件,在检测到播放结束时手动触发重播:
WindowsMediaPlayer musicPlayer = new WindowsMediaPlayer();
musicPlayer.URL = "themeSong.mp3";
// 绑定播放状态变化事件
musicPlayer.PlayStateChange += newState =>
{
    // WMPPlayState.wmppsMediaEnded 对应枚举值为8,代表当前媒体已播放到末尾
    if (newState == (int)WMPPlayState.wmppsMediaEnded)
    {
        // 将播放进度重置到音频起始位置
        musicPlayer.controls.currentPosition = 0;
        // 重新触发播放
        musicPlayer.controls.play();
    }
};
musicPlayer.controls.play();

如果你的项目中没有引入WMPPlayState枚举的相关引用,直接把判断条件改成if (newState == 8)也可以正常生效。

注意:两种方案都需要确保你传入的themeSong.mp3路径正确、文件未损坏,能被播放器正常加载,否则会因为媒体加载失败无法触发循环逻辑。

内容的提问来源于stack exchange,提问作者MajorAnonymous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:01:02