2017-02-08 1 views
0

J'essaie de capturer le son de MIC (DataFlow.Capture), mais AudioMeterInformation.PeakValues ​​ne fonctionne que si les propriétés du son est ouvert (contrôle mmsys.cpl sons)NAudio AudioMeterInformation ne fonctionne que si "contrôle mmsys.cpl sons" est ouvert

exemple de travail

Working

Mais quand je ferme les propriétés sonores ..

Not working

Mon code

private void calculateChannels(Object source, ElapsedEventArgs e) 
    { 
     dev = devEnum.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia); 

     try 
     { 
      double currentLeftChannel = 100 - (dev.AudioMeterInformation.PeakValues[0] * 100); 
      double currentRightChannel = 100 - (dev.AudioMeterInformation.PeakValues[1] * 100); 

      // this function just "smooth" the progress bar 
      this.leftChannel = round(this.leftChannel, currentLeftChannel); 
      this.rightChannel = round(this.rightChannel, currentRightChannel); 

     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex); 
     } 

    } 

Je suis habitué (-100) sur le résultat parce que ma barre de progression est inversé (couleurs noir sont en fait les progrès)

DataFlow.Render fonctionne bien, même sans propriétés ouvrir.

Comment puis-je résoudre ce problème?

Répondre

1

J'ai trouvé la solution. J'ai dû mettre WaveInEvent sur mon constructeur pour activer l'appareil.

waveInStream = new WaveInEvent(); 
waveInStream.WaveFormat = new WaveFormat(44100, 1); 
waveInStream.StartRecording(); 

Maintenant, cela fonctionne.