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

C#控制台应用能否同时播放多个音频轨道?实现音轨叠加播放

问题原因
  1. 你所使用的 System.Media.SoundPlayer 类本身不支持多音频重叠播放,它依赖的底层Win32 PlaySound 接口同一时间仅支持单音频流输出,因此播放新音效时会直接中断正在播放的背景音乐。
  2. 你的示例代码存在几处语法错误:相等判断需要用==而非赋值运算符=,方法调用末尾需要加(),C#中类名、Console类首字母需要大写。
解决方案

使用.NET生态常用的轻量音频处理库NAudio即可快速实现多音频同时播放,不需要复杂的底层调用:

  • 第一步:右键你的项目 → 选择「管理NuGet包」 → 搜索NAudio并安装到项目中
  • 第二步:使用如下封装好的音频播放逻辑替换原有代码:
using System;
using NAudio.Wave;

// 通用音频播放工具类,可直接复用
public static class AudioHelper
{
    /// <param name="filePath">音频文件路径</param>
    /// <param name="loop">是否循环播放,背景音乐传true即可</param>
    public static void PlayAudio(string filePath, bool loop = false)
    {
        var reader = new AudioFileReader(filePath);
        var player = new WaveOutEvent();
        player.Init(reader);
        player.Play();

        // 循环播放逻辑
        if (loop)
        {
            player.PlaybackStopped += (sender, args) =>
            {
                reader.Position = 0;
                player.Play();
            };
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.ReadLine();
        // 播放循环背景音乐
        AudioHelper.PlayAudio("你的背景音乐路径", loop: true);

        string input = Console.ReadLine();
        if (input == "has")
        {
            // 播放攻击/选择音效,不会中断背景音乐
            AudioHelper.PlayAudio("你的音效文件路径");
        }
        Console.ReadLine();
    }
}
  • 该方案支持wav、mp3等常见音频格式,所有播放操作都是异步非阻塞的,不会影响控制台其他业务逻辑运行,播放完成后会自动释放资源无需手动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:05