.NET Core 8.0播放MP3工具及AxWMPLib替代方案咨询
.NET Core 8.0 播放MP3的替代方案(替代AxWMPLib.AxWindowsMediaPlayer)
从.NET Framework 4.8迁移到.NET Core 8.0后,AxWMPLib.AxWindowsMediaPlayer这类基于COM的ActiveX控件不再兼容——.NET Core/.NET 5+是跨平台框架,不再默认支持旧的WinForms COM互操作组件,因此会出现你遇到的报错。
下面是几个可行的替代方案:
1. NAudio库(推荐,跨平台)
NAudio是.NET生态中成熟的音频处理库,原生支持MP3播放,兼容Windows、Linux、macOS等平台。
步骤:
- 安装NuGet包:
NAudio - 示例代码:
using NAudio.Wave; private IWavePlayer _audioPlayer; private AudioFileReader _mp3Reader; // 播放MP3文件 public void PlayMp3(string mp3FilePath) { // 清理之前的播放资源 _audioPlayer?.Stop(); _mp3Reader?.Dispose(); _mp3Reader = new AudioFileReader(mp3FilePath); _audioPlayer = new WaveOutEvent(); // 可根据平台选择WasapiOut等输出方式 _audioPlayer.Init(_mp3Reader); _audioPlayer.Play(); } // 窗体关闭时释放资源 protected override void OnFormClosing(FormClosingEventArgs e) { _audioPlayer?.Stop(); _mp3Reader?.Dispose(); _audioPlayer?.Dispose(); base.OnFormClosing(e); }
2. Windows Media Player的.NET Core兼容方案(仅Windows)
如果你的应用只需要支持Windows平台,可以使用Windows App SDK中的MediaPlayer类,它是原生的Windows音频播放API。
步骤:
- 安装NuGet包:
Microsoft.WindowsAppSDK - 示例代码:
using Windows.Media.Playback; using Windows.Storage; private MediaPlayer _mediaPlayer; // 异步播放MP3 public async Task PlayMp3Async(string mp3FilePath) { _mediaPlayer ??= new MediaPlayer(); var storageFile = await StorageFile.GetFileFromPathAsync(mp3FilePath); _mediaPlayer.Source = MediaSource.CreateFromStorageFile(storageFile); _mediaPlayer.Play(); }
3. 不推荐:System.Media.SoundPlayer
这个是.NET内置类,但仅支持WAV格式,不直接兼容MP3——如果要用来播放MP3,需要先将MP3转换为WAV格式,因此不推荐作为AxWindowsMediaPlayer的替代方案。
内容的提问来源于stack exchange,提问作者มงคล โพธิ์ชัยหล้า
相关产品推荐
相关产品推荐

