Estoy tratando de reproducir un sonido dentro de una aplicación de consola .Net Core y no puedo resolver esto.
Estoy buscando algo administrado dentro del entorno .Net Core, tal vez como .Net normal:
// Not working on .Net Core System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav"); player.Play();
Encontré un problema en dotnet core Github donde hablan al respecto.
https://github.com/dotnet/core/issues/74
Dicen que no hay una API de alto nivel para la reproducción de audio, pero el problema tiene 9 meses, así que espero que haya algo nuevo.
Ahora hay una manera de hacerlo con la biblioteca NAudio (desde 1.9.0-preview1 ) pero solo funcionará en Windows.
Entonces, usando NAudio, aquí el código para reproducir un sonido en .NET Core, asumiendo que lo está haciendo desde un entorno de Windows.
using (var waveOut = new WaveOutEvent()) using (var wavReader = new WaveFileReader(@"c:\mywavfile.wav")) { waveOut.Init(wavReader); waveOut.Play(); }
Para una solución más global, debe optar por la de @Fiodar aprovechando Node.js.
Como solución alternativa hasta que .NET Core tenga soporte de audio, puede probar algo como esto:
public static void PlaySound(string file) { Process.Start(@"powershell", $@"-c (New-Object Media.SoundPlayer '{file}').PlaySync();"); }
Por supuesto, esto solo funcionaría en Windows con PowerShell instalado , pero podría detectar en qué sistema operativo se encuentra y actuar en consecuencia.
Hay una forma de hacerlo independiente de la plataforma. Básicamente, toda la funcionalidad de reproducción de sonido que estaba disponible en .NET Framework era específica de Windows; por lo tanto, nada de eso llegó a .NET Core.
Sin embargo, la buena noticia es que Node.js tiene innumerables bibliotecas que pueden reproducir sonido en varios sistemas y hay una biblioteca disponible para ASP.NET Core que puede comunicarse directamente con el código de Node.js. Se llama NodeServices. No se desanime por el hecho de que solo está disponible en ASP.NET Core. Esencialmente, ASP.NET Core, a diferencia de la versión .NET Framework de ASP.NET, no es más que una capa delgada de funcionalidad de alojamiento web que se ejecuta sobre una aplicación de consola estándar. No necesariamente tiene que usarlo como una aplicación web, pero le proporcionará muchos extras útiles, como una biblioteca de inyección de dependencia fácil de usar.
Este artículo describe cómo funcionan los NodeServices. Es realmente sencillo.