2017-01-02 1 views
0

NAudio를 사용할 때 DirectX 소스 오류가 발생합니다. 나는 DirectX에 관해서 지식이 없기 때문에 약간의 조언을 고맙게 생각할 것입니다.NAudio 및 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 개체가 등록되지 않은, 그래서해야 할 일 :이

다이렉트 X 12과 10 PC 설치 윈도우에서 초기화 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(); 
    } 

결함은 최초의 호출시에 발생

여기 NAudio를 호출하는 코드입니다.

모든 플랫폼에서 DirectX 11에서 정상적으로 작동합니다.

의견이 있으십니까?

답변

3

Windows 10에는 DirectX 9.0c에서 DirectX 12까지가 모두 나란히 있습니다. 이것은 아마 미디어 파운데이션 질문으로 간주됩니다.

그 GUID ({F447B69E-1884-4A7E-8055-346F74D6EDB3})는 리 샘플러 DMO (DirectX Media Objects) 인 것으로 보입니다. DMOs은 Media Foundation API에서 주로 사용되는 레거시 DirectShow 기술의 일부입니다. "DirectShow"가 원래 "ActiveMovie"라고 불려지는 방식으로 DirectX라는 브랜드가 된 고문의 역사에 빠지지는 않겠지 만 불필요한 기술은 2005 년 DirectX SDK의 removed이었습니다.

그러므로 제 질문은 입니다. Windows 10의 N 또는 KN 버전을 사용하고 있습니까? 그렇다면 기본적으로 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.

당신은 또한 당신에 영향을 수 있습니다 사용할 수 변환에 일부 제한이있을 수 있습니다, 범용 윈도우 플랫폼 (UWP) 응용 프로그램이 아니라 고전에서 Win32 데스크톱 응용 프로그램을 개발하는 경우.

+0

문제가 발생한 고객이 미국에 있고 다른 두 대의 컴퓨터에서보고 있기 때문에 이상하지 않습니다. 최소한 이것은 문제를 찾기 시작할 수있는 길을 제공합니다. (이런 일이 있다면 그것은 평범한 구식 WPF 앱이다.) 포인터를 가져 주셔서 감사합니다. – WyomingDoug