Записывайте звук с помощью оболочки NAudio Wasapi, вес звукового файла не равен 0, но звук пуст - PullRequest
0 голосов
/ 03 января 2019

Что работает - Сохранить файл

Что не является: - Аудио файл пуст (как длина, но нет слышимого звука, или звук пуст) Редактировать (для ясности): Вес файла не равен 0.

Уже реализовано решение с winmm.dll, но ищем что-то лучше, чем 16-битное качество.Уже используется оболочка NAudio для libmp3lame dll, поэтому использование NAudio является жизнеспособным вариантом.

public void Start()
        {
            if(this.isInitialized)
            {
                string outputFilePath = "...";
                this.capture = new NAudio.Wave.WasapiLoopbackCapture();
                this.writer = new NAudio.Wave.WaveFileWriter(outputFilePath, this.capture.WaveFormat);

                this.capture.DataAvailable += (s, a) =>
                {
                    this.writer.Write(a.Buffer, 0, a.BytesRecorded);
                };

                this.capture.RecordingStopped += (s, a) =>
                {
                    this.writer.Dispose();
                    this.writer = null;
                    this.capture.Dispose();
                };

                this.capture.StartRecording();
            }


        }

        public void StopAndSave()
        {
            if(this.isInitialized)
            {
                this.capture.StopRecording();
            }
        }

Ожидается: для записи звука в формате аудиофайла WAV

this.isInitialized проверка пути и соглашения об именовании файлов.Поскольку файл сохранить в ожидаемом месте не добавил код.Эта часть кода работает, как и ожидалось.

Примечание - при использовании NAudio 1.8.5 - целевой системой является Win10 x64 pro

1 Ответ

0 голосов
/ 23 января 2019

Вы используете WasapiLoopbackCapture, который пытается захватить звук, который воспроизводится на компьютере.Если вы хотите захватить устройство ввода (например, микрофон), вы должны использовать WasapiCapture вместо.

...