Gop*_*dar 5 c# wpf audio-recording naudio screencast
我正在尝试使用带有NAudio Example的环回音频流的SharpAPI Example捕获 Windows 屏幕的音频/视频。
我正在使用 C#、wpf 来实现相同的功能。
几个 nuget 包。 SharpAvi - 用于视频捕获 NAudio - 用于音频捕获
我已经成功地将它与提供的示例集成在一起,我正在尝试通过NAudioSharpAPI 视频流捕获音频,以便将视频与音频实现一起录制。
无论我在 SharpAvi 视频中编写音频流。 输出时,仅录制视频,音频为空。
但是当我尝试将音频捕获为名为“output.wav”的单独文件时,它按预期录制了音频,并且能够听到录制的音频。所以,我现在得出的结论是,问题仅在于通过 SharpApi 与视频集成
writterx = new WaveFileWriter("Out.wav", audioSource.WaveFormat);
https://drive.google.com/open?id=1H7Ziy_yrs37hdpYriWRF-nuRmmFbsfe-
NAudio 初始化:
audioSource = new WasapiLoopbackCapture();
audioStream = CreateAudioStream(audioSource.WaveFormat, encodeAudio, audioBitRate);
audioSource.DataAvailable += audioSource_DataAvailable;
Run Code Online (Sandbox Code Playgroud)
捕获音频字节并将其写入 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);
}
}
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?也欢迎任何其他方式来达到我的要求。
如果需要任何进一步的细节,请告诉我。
显然,作者不需要它,但由于我遇到了同样的问题,其他人可能需要它。
我的问题是,我每 0.1 秒获取一次音频,并尝试同时写入新的视频和音频。获取新的视频数据(截图)花了我太长时间。导致每帧每 0.3 秒添加一次,而不是 0.1 秒。这导致了一些问题,音频流与视频不同步,并且视频播放器(或其他任何东西)无法正确播放。稍微优化代码到0.1秒以内后,问题就消失了
| 归档时间: |
|
| 查看次数: |
642 次 |
| 最近记录: |