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

如何在C# Web应用中通过URL播放MP3音频?SoundPlayer播放失败

解决C#中SoundPlayer无法播放MP3的问题

兄弟,你踩了个常见的坑——SoundPlayer这个类只支持WAV格式的音频文件,对MP3完全不兼容,这就是为啥你的代码播WAV正常,碰MP3就失效的原因。下面给你两个实用的解决方案:

方案1:用WindowsMediaPlayer控件(适合WinForms/WPF场景)

这个是系统自带的组件,不用额外装包,直接用就行:

  1. 先在项目里添加引用:找到COM组件里的Windows Media Player并添加
  2. 然后写代码:
using WMPLib;

// 创建播放器实例
WindowsMediaPlayer player = new WindowsMediaPlayer();
string soundUrl = "http://audio.oxforddictionaries.com/en/mp3/ranker_gb_1_8.mp3";
// 设置播放地址
player.URL = soundUrl;
// 开始播放
player.controls.play();

方案2:用NAudio库(更灵活,适合多数.NET场景)

如果你的项目是ASP.NET、控制台或者需要更自定义的播放逻辑,NAudio是个更好的选择,它支持多种音频格式:

  1. 先通过NuGet安装NAudio:在NuGet包管理器控制台输入Install-Package NAudio(或者在Visual Studio的NuGet界面搜索安装)
  2. 播放远程MP3的示例代码:
using NAudio.Wave;
using System.Net;

string soundUrl = "http://audio.oxforddictionaries.com/en/mp3/ranker_gb_1_8.mp3";

// 从远程获取音频流并播放
using (var client = new WebClient())
using (var stream = client.OpenRead(soundUrl))
using (var reader = new MediaFoundationReader(stream))
using (var waveOut = new WaveOutEvent())
{
    waveOut.Init(reader);
    waveOut.Play();
    // 如需同步播放,可等待播放完成
    while (waveOut.PlaybackState == PlaybackState.Playing)
    {
        System.Threading.Thread.Sleep(100);
    }
}

额外提醒(针对Web应用场景)

如果你是在ASP.NET这类Web应用里写的这段代码,要注意:服务器端播放音频的话,用户浏览器是听不到的!如果是要让前端用户听到音频,最好的方式是把MP3的URL返回给前端,用HTML5的<audio>标签在客户端播放,比如前端代码:

<audio src="http://audio.oxforddictionaries.com/en/mp3/ranker_gb_1_8.mp3" controls autoplay></audio>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:23