【问题标题】:Screen recording as video, audio on SharpAvi - Audio not recording在 SharpAvi 上将屏幕录制为视频、音频 - 音频未录制
【发布时间】:2020-05-30 23:18:37
【问题描述】:

要求:

我正在尝试使用SharpAPI ExampleNAudio 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);
        }
    }

你能帮我解决这个问题吗?也欢迎任何其他方式达到我的要求。
让我知道是否需要任何进一步的细节。

【问题讨论】:

  • edit您的问题将您拥有的源代码包含为minimal reproducible example,其他人可以编译和测试。
  • 您能否添加When I try capture the audio as separate file called "output.wav" 的代码以便我们可以看到它在哪里?我不熟悉它,但是查看文档它从哪里开始录制到视频中?
  • 您知道您录制的音频源是否正确吗?
  • @JimmySmith 谢谢你的时间。您可以在 `Bin\Debug` 文件夹(可执行位置)中找到视频和单独的音频。
  • @theWongfonSemicolon 是的,是WasapiLoopbackCapture通过naudio捕获环回音频。

标签: c# wpf audio-recording naudio screencast


【解决方案1】:

显然,作者不需要它,但由于我遇到了同样的问题,其他人可能需要它。

就我而言,问题是我每 0.1 秒获取一次音频,并尝试同时编写新的视频和音频。获取新的视频数据(截屏)花了我太长时间。导致每帧每 0.3 秒而不是 0.1 秒添加一次。这导致了音频流与视频不同步并且视频播放器(或其他任何内容)无法正常播放的一些问题。稍微优化一下代码到0.1秒以内,问题就消失了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    相关资源
    最近更新 更多