要求:
我正在尝试使用带有NAudio Example的 Loopback 音频流的SharpAPI Example捕获 Windows 屏幕的音频/视频。
我正在使用 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);
}
}
你能帮我解决这个问题吗?任何其他方式来达到我的要求也欢迎。
让我知道是否需要任何进一步的细节。