NAudio AudioMeterInformation работает только если открыто управление звуками mmsys.cpl

Я пытаюсь захватить звук MIC (DataFlow.Capture), но AudioMeterInformation.PeakValues ​​работает, только если открыты свойства звука (управление звуками mmsys.cpl)

Рабочий пример

Работает

Но когда я закрываю свойства звука..

Не работает

Мой код

    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);
        }

    }

Я использовал (-100) в результате, потому что мой индикатор выполнения перевернут (черные цвета на самом деле являются прогрессом)

DataFlow.Render работает нормально, даже без открытых свойств.

Как я могу это исправить?


person Renan Cavalieri    schedule 08.02.2017    source источник


Ответы (1)


Я нашел решение. Мне пришлось поместить WaveInEvent в мой конструктор, чтобы включить устройство.

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

Теперь это работает.

person Renan Cavalieri    schedule 09.02.2017