web-dev-qa-db-ja.com

NET Coreでサウンドを再生する方法

.Net Coreコンソールアプリケーション内でサウンドを再生しようとしていますが、これを理解できません。

通常の.Netのように、.Net Core環境内で管理されているものを探しています。

// 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か月前なので、何か新しいものがあるといいのですが。

14
dbraillon

NAudioライブラリでこれを行う方法があります( 1.9.0-preview1 以降)が、Windowsでのみ機能します。

そこで、NAudioを使用して、Windows環境からサウンドを再生することを想定して、.NET Coreでサウンドを再生するコードを示します。

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

よりグローバルなソリューションについては、Node.jsを利用する@Fiodarのソリューションを使用する必要があります。

4
dbraillon

.NET Coreがオーディオをサポートするまでの回避策として、次のような方法を試すことができます。

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

もちろん、これはPowerShellがインストールされているWindowsでのみ機能しますですが、使用しているOSを検出して、それに応じて動作することができます。

2
joshcomley

それを行うには、プラットフォームに依存しない方法があります。基本的に、.NET Frameworkで利用できるすべてのサウンド再生機能はWindows固有のものでした。したがって、どれも.NET Coreにはなりませんでした。

ただし、朗報は、Node.jsにさまざまなシステムでサウンドを再生できる無数のライブラリがあり、ASP.NET Coreで使用できるライブラリがあることです。 Node.jsコードと直接通信できます。 NodeServicesと呼ばれます。 ASP.NET Coreでのみ利用できるという事実に気を取られないでください。基本的に、ASP.NETの.NET Frameworkバージョンとは異なり、ASP.NET Coreは、標準のコンソールアプリ上で実行されるWebホスティング機能の薄層にすぎません。必ずしもWebアプリとして使用する必要はありませんが、使いやすい依存関係注入ライブラリなど、多くの便利な追加機能が提供されます。

もっと

この記事 は、NodeServicesの仕組みを説明しています。それは本当に簡単です。

0