NAudio を使用すると、DirectX ソース エラーが発生します。私は DirectX に関してはそれほど知識がありませんので、いくつかの指針をいただければ幸いです。
DirectX 12 がインストールされた Windows 10 PC で NAudio を初期化するときに受け取るエラーは次のとおりです。
NAudio.Dmo.DmoResampler..ctor System.Runtime.InteropServices.COMException: CLSID {F447B69E-1884-4A7E-8055-346F74D6EDB3} を持つコンポーネントの COM クラス ファクトリの取得は、次のエラーにより失敗しました: 80040154 クラスが登録されていません (Exception from >HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))。
NAudio.Dmo.DmoResampler..ctor
NAudio.Wave.ResamplerDmoStream..ctor IWaveProvider inputProvider、WaveFormat outputFormat
NAudio.Wave.WasapiOut.Init IWaveProvider waveProvider
Sound.Support.AudioPlaybackEngine..ctor MMDevice デバイス、Int32 sampleRate、Int32 channelCount
Sound.Manager.PerformInitialization
Analyze.ViewModels.ApplicationViewModel.InitSoundManager
いくつかの COM オブジェクトが登録されていないことは明らかです。では、どうすればよいでしょうか?
NAudio を呼び出すコードは次のとおりです。
public AudioPlaybackEngine(MMDevice device, int sampleRate = 44100, int channelCount = 2)
{
Device = device;
mOutputDevice = new WasapiOut(device,
AudioClientShareMode.Shared,
true,
200);
mMixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, channelCount))
{
ReadFully = true
};
mMixer.MixerInputEnded += OnMixerInputEnded;
mOutputDevice.Init(mMixer);
mOutputDevice.Play();
}
最初の呼び出しで障害が発生します。
これは、どのプラットフォームの DirectX 11 でも問題なく動作します。
何かご意見は?