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

如何用NAudio在.NET Core(IoT Core)中从Stream播放音频?

用NAudio替代System.Media在.NET Core IoT Core中从Stream播放音频

我来帮你搞定这个迁移问题!既然.NET Core IoT Core没有内置System.Media,用NAudio确实是个靠谱的替代方案,它对WAV音频的处理和SoundPlayer类似,但灵活性更高。下面是具体的改造步骤和代码示例:

第一步:安装NAudio NuGet包

首先得把NAudio引入你的项目,用NuGet包管理器或者CLI命令都可以:

# .NET CLI命令
dotnet add package NAudio

或者在Visual Studio里通过NuGet包搜索直接安装NAudio。

第二步:改造你的PlayAudio方法

原来的SoundPlayer是封装好的简易播放类,NAudio需要我们手动处理音频流和播放组件。这里推荐用WaveOutEvent(适合非UI线程场景,IoT Core环境下适配性更好),配合WaveFileReader来读取WAV格式的流。

假设你的args.EventData是标准WAV格式的Stream,改造后的代码如下:

using NAudio.Wave;

public void PlayAudio(object sender, GenericEventArgs<Stream> args)
{
    // 重置流的位置到起始处(如果流之前被读取过,这一步很重要)
    args.EventData.Position = 0;

    // 使用WaveFileReader解析WAV流的头信息和音频数据
    using var waveReader = new WaveFileReader(args.EventData);
    // 初始化播放设备,WaveOutEvent适合无UI的IoT环境
    using var waveOut = new WaveOutEvent();

    // 关联音频流和播放设备
    waveOut.Init(waveReader);
    // 开始播放
    waveOut.Play();

    // 同步等待播放完成(如果不需要阻塞线程,可以用异步事件监听)
    while (waveOut.PlaybackState == PlaybackState.Playing)
    {
        System.Threading.Thread.Sleep(100);
    }
}

关键注意事项

  • 流格式要求:WaveFileReader只支持带标准WAV头的音频流,如果你的流是原始PCM数据(无WAV头),需要改用RawSourceWaveStream,并手动指定采样率、位深度、声道数等参数。
  • 资源释放:一定要用using语句包裹WaveFileReader和WaveOutEvent,确保播放完成后及时释放音频资源,避免内存泄漏。
  • IoT设备音频选择:如果你的IoT设备有多个音频输出设备,可以通过WaveOut.DeviceCount获取设备列表,初始化WaveOutEvent时指定DeviceNumber参数来切换设备。
  • 异步播放优化:如果不想阻塞当前线程,可以监听PlaybackStopped事件来处理播放完成后的逻辑,示例如下:
public void PlayAudioAsync(object sender, GenericEventArgs<Stream> args)
{
    args.EventData.Position = 0;
    var waveReader = new WaveFileReader(args.EventData);
    var waveOut = new WaveOutEvent();

    // 播放完成后自动释放资源
    waveOut.PlaybackStopped += (s, e) =>
    {
        waveReader.Dispose();
        waveOut.Dispose();
        // 这里可以添加播放完成后的业务逻辑
    };

    waveOut.Init(waveReader);
    waveOut.Play();
}

这样改造后,就能在.NET Core IoT Core环境下顺利从Stream播放音频啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:06