首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wasapi音频质量

Wasapi音频质量
EN

Stack Overflow用户
提问于 2014-05-22 21:05:45
回答 3查看 1.9K关注 0票数 0

我是新的使用Wasapi在N音频和我有问题的声音质量。大约1/10倍的音频将听起来完美的时候,我记录,而其他9次,它将是模糊的。我想知道这有什么原因。

下面是我用来录制音频的代码:

代码语言:javascript
复制
    public void CaptureAudio(String Name)
    {
        capture = new WasapiLoopbackCapture();
        capture.Initialize();
        w = new WaveWriter(Name, capture.WaveFormat);
        capture.DataAvailable += (s, capData) =>
        {
            w.Write(capData.Data, capData.Offset, capData.ByteCount);
        };

        capture.Start();

    }

    public void StartRecording(String Name)
    {
        new Thread(delegate(){CaptureAudio(Name); }).Start();
    }

    public void StopCapture()
    {
        capture.Stop();
        capture.Dispose();
        w.Dispose();
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-13 16:30:36

问题是xbox音乐或windows媒体播放器在后台运行,显然它们占用了所有的声卡资源。

票数 1
EN

Stack Overflow用户

发布于 2014-05-23 12:08:08

首先。正如Mark已经说过的,您的代码看起来不像NAudio。看起来像CSCore。如果您正在使用CSCore,请创建一个新的控制台应用程序并复制粘贴以下代码(我已经修改了您的代码)。我刚刚在三个不同的系统上试用了这个代码,没有任何错误,所有20个文件都很好,没有模糊。

代码语言:javascript
复制
        private static void Main(string[] args)
        {
            for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(i);
                Capture(i);
            }
        }

        private static void Capture(int index)
        {
            string Name = String.Format("dump-{0}.wav", index);

            using (WasapiCapture capture = new WasapiLoopbackCapture())
            {
                capture.Initialize();
                using (var w = new WaveWriter(Name, capture.WaveFormat))
                {
                    capture.DataAvailable += (s, capData) => w.Write(capData.Data, capData.Offset, capData.ByteCount);
                    capture.Start();

                    Thread.Sleep(10000);

                    capture.Stop();
                }
            }
        }
票数 1
EN

Stack Overflow用户

发布于 2014-05-22 22:09:10

关于您的代码的几点评论:

首先,您是否以某种方式修改了WasapiLoopbackCaptureWaveInEventArgs on DataAvailable没有代码中显示的属性。我希望你有某种块对齐的错误,这样你的模糊声音就不会在精确的样本边界上读取。另外,NAudio没有一个名为WaveWriter的类-它是WaveFileWriter。你确定你在使用NAudio吗?

其次,没有必要在StartRecording中启动一个新线程。WasapiLoopbackCapture已经在使用后台线程了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23817044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档