如何在C# Web应用中通过URL播放MP3音频?SoundPlayer播放失败
解决C#中SoundPlayer无法播放MP3的问题
兄弟,你踩了个常见的坑——SoundPlayer这个类只支持WAV格式的音频文件,对MP3完全不兼容,这就是为啥你的代码播WAV正常,碰MP3就失效的原因。下面给你两个实用的解决方案:
方案1:用WindowsMediaPlayer控件(适合WinForms/WPF场景)
这个是系统自带的组件,不用额外装包,直接用就行:
- 先在项目里添加引用:找到COM组件里的
Windows Media Player并添加 - 然后写代码:
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是个更好的选择,它支持多种音频格式:
- 先通过NuGet安装NAudio:在NuGet包管理器控制台输入
Install-Package NAudio(或者在Visual Studio的NuGet界面搜索安装) - 播放远程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
相关产品推荐
相关产品推荐

