我正试图在.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个月了,所以我希望有新的东西?
现在有一种方法可以使用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。
作为.NET Core获得音频支持的解决方法,您可以尝试这样的方法:
public static void PlaySound(string file)
{
Process.Start(@"powershell", $@"-c (New-Object Media.SoundPlayer '{file}').PlaySync();");
}
当然,这只能在安装了PowerShell的Windows上运行,但您可以检测到您所在的操作系统并采取相应措施。
有一种独立于平台的方式。从本质上讲,.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如何工作。这真的很直截了当。