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

.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,提问作者มงคล โพธิ์ชัยหล้า

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:06:23