Запись экрана как видео, аудио на SharpAvi - Аудио не записывается - PullRequest
4 голосов
/ 15 февраля 2020

Требование:

Я пытаюсь захватить аудио / видео с экрана windows с помощью Пример SharpAPI с аудиотоком Loopback Пример NAudio .

Я использую C#, wpf для достижения того же.

Пара пакетов nuget. SharpAvi - для захвата видео NAudio - для захвата аудио

Что было достигнуто:

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

Проблема:

Что бы я ни писал аудиопоток в видео SharpAvi. На выходе, он был записан только с видео и аудио пуст. "output.wav" и был записан со звуком, как и ожидалось, и может слышать записанный звук. Итак, я пока заключаю, что проблема только в интеграции с видео через SharpApi

writterx = new WaveFileWriter("Out.wav", audioSource.WaveFormat);

Полный код для воспроизведения проблемы:

https://drive.google.com/open?id=1H7Ziy_yrs37hdpYriWRF-nuRmmFbsfe-

Проблеск кода из Recorder.cs

Инициализация NAudio:

audioSource = new WasapiLoopbackCapture();

audioStream = CreateAudioStream(audioSource.WaveFormat, encodeAudio, audioBitRate);

audioSource.DataAvailable += audioSource_DataAvailable;

Захват аудио-байтов и запись его в аудиопоток SharpAvi:

    private void audioSource_DataAvailable(object sender, WaveInEventArgs e)
    {
        var signalled = WaitHandle.WaitAny(new WaitHandle[] { videoFrameWritten, stopThread });
        if (signalled == 0)
        {
            audioStream.WriteBlock(e.Buffer, 0, e.BytesRecorded);               
            audioBlockWritten.Set();
            Debug.WriteLine("Bytes: " + e.BytesRecorded);
        }
    }

Не могли бы вы помочь мне в этом. Любой другой способ выполнить мое требование также приветствуется.
Дайте мне знать, если понадобятся какие-либо дополнительные детали.

...