2017-01-02 7 views
0

Я получаю ошибку DirectX при использовании NAudio. Я не настолько осведомлен, когда речь заходит о DirectX, поэтому я бы по достоинству оценил некоторые указатели.NAudio и DirectX 12

Там ошибки я получаю при получении NAudio инициализирован через окна 10 ПК с DirectX 12 установить это:

NAudio.Dmo.DmoResampler..ctor System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {F447B69E-1884-4A7E-8055-346F74D6EDB3} failed due to the following error: 80040154 Class not registered (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 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, на любой платформе

Любые мысли?

ответ

3

Windows 10 имеет DirectX 9.0c через DirectX 12 все бок о бок. Вероятно, это лучше рассмотреть вопрос о Фонде СМИ.

Этот GUID ({F447B69E-1884-4A7E-8055-346F74D6EDB3}) представляется Resampler DMO (объекты DirectX Media Objects). DMOs были частью унаследованных технологий DirectShow, которые в основном используются сегодня API-интерфейсами Media Foundation. Я не буду впадать в мучительную историю того, как «DirectShow», первоначально называвшийся «ActiveMovie», в конечном итоге был заклеймен DirectX, но, разумеется, технология была removed из DirectX SDK еще в 2005 году.

Таким образом, мой вопрос будет таким: Вы используете N или KN версию Windows 10? Если это так, то по умолчанию он не содержит Media Foundation. Вы должны установить его через Restore Pack. См. Who moved my Windows Media Cheese?.

You can try using this sample program to ensure the GUID is present on your machine.

Если вы разрабатываете приложение Универсальные платформы Windows (UWP), а не классический настольное приложение Win32, также могут быть некоторые ограничения на имеющихся преобразований, которые могут быть влияющими вас.

+0

Странно, так как клиент испытывает проблему в США и видит ее на двух разных машинах. По крайней мере, это дает мне дорогу, чтобы опуститься, чтобы начать находить проблему. (Это простое приложение WPF, если есть такая вещь). Спасибо за указатели. – WyomingDoug