在使用DirectX时,我得到了一个NAudio源错误。对于DirectX,我没有那么多的知识,所以我会欣赏一些指点。
在windows 10 PC上使用NAudio 12安装初始化DirectX时,收到的错误如下:
NAudio.Dmo.DmoResampler..ctor System.Runtime.InteropServices.COMException:使用CLSID检索组件的COM类工厂(F447B69E-1884-4A7E-8055-346F74D6DB3}由于以下错误而失败: 80040154类未注册( >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 device,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都能很好地工作。
有什么想法吗?
发布于 2017-01-02 20:36:27
Windows 10具有DirectX 9.0c,通过DirectX 12并行进行.这可能是一个更好的媒体基金会的问题。
GUID ({F447B69E-1884-4A7E-8055-346F74D6EDB3})似乎是Resampler (DirectX媒体对象)。DMOs是传统DirectShow技术的一部分,这些技术今天主要被媒体基金会API所使用--我不会进入"DirectShow“最初被称为"ActiveMovie”的痛苦历史,它最终被贴上了DirectX的品牌,但不用说,这一技术是2005年DirectX SDK中的删除。
因此,我的问题是:您使用的是Windows 10的N版还是KN版?如果是,那么默认情况下它不包含媒体基础。您必须通过还原包安装它。见是谁移动了我的Windows媒体奶酪?。
您可以尝试使用这个示例程序来确保GUID存在于您的计算机上。
如果您正在开发一个通用Windows平台(,UWP)应用程序,而不是传统的Win32桌面应用程序,那么对可用的转换也可能有一些可能影响您的限制。
https://stackoverflow.com/questions/41424212
复制相似问题