如何在NET Core中播放声音?

问题描述 投票:8回答:3

我正试图在.Net Core控制台应用程序中播放声音,我无法解决这个问题。

我正在寻找.Net Core环境中管理的东西,也许就像普通的.Net:

// Not working on .Net Core    
System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();

在dotnet核心Github上发现了一个问题,他们在那里谈论它。

https://github.com/dotnet/core/issues/74

他们说没有用于音频播放的高级API,但这个问题已经有9个月了,所以我希望有新的东西?

c# .net-core audio-player
3个回答
2
投票

现在有一种方法可以使用NAudio库(从1.9.0-preview1开始),​​但它只适用于Windows。

因此,使用NAudio,这里的代码是在.NET Core中播放声音,假设您是从Windows环境中执行此操作。

using (var waveOut = new WaveOutEvent())
using (var wavReader = new WavFileReader(@"c:\mywavfile.wav"))
{
   waveOut.Init(wavReader);
   waveOut.Play();
}

对于更全面的解决方案,你应该去@Fiodar利用Node.js。


1
投票

作为.NET Core获得音频支持的解决方法,您可以尝试这样的方法:

public static void PlaySound(string file)
{
    Process.Start(@"powershell", $@"-c (New-Object Media.SoundPlayer '{file}').PlaySync();");
}

当然,这只能在安装了PowerShell的Windows上运行,但您可以检测到您所在的操作系统并采取相应措施。


1
投票

有一种独立于平台的方式。从本质上讲,.NET Framework中可用的所有声音播放功能都是特定于Windows的;因此它们都没有成为.NET Core。

然而,好消息是Node.js有无数的库可以在各种系统上播放声音,并且有一个可用于ASP.NET Core的库,它可以直接与Node.js代码通信。它叫做NodeServices。不要因为它仅在ASP.NET Core上可用而被推迟。从本质上讲,与.NET Framework版本的ASP.NET不同,ASP.NET Core只不过是在标准控制台应用程序之上运行的薄层Web托管功能。您不一定非必须将其用作Web应用程序,但它将为您提供许多有用的附加功能,例如易于使用的依赖注入库。

更多

This article描述了NodeServices如何工作。这真的很直截了当。

© www.soinside.com 2019 - 2024. All rights reserved.