Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wasapi音频质量_C#_Audio_Wasapi_Cscore - Fatal编程技术网

C# Wasapi音频质量

C# Wasapi音频质量,c#,audio,wasapi,cscore,C#,Audio,Wasapi,Cscore,我对在Naudio中使用Wasapi还不熟悉,我对音质有问题。当我录制时,大约1/10倍的音频听起来会很完美,另外9倍的音频会很模糊。我想知道这是否有什么原因 这是我用来录制音频的代码: public void CaptureAudio(String Name) { capture = new WasapiLoopbackCapture(); capture.Initialize(); w = new WaveWriter(Name

我对在Naudio中使用Wasapi还不熟悉,我对音质有问题。当我录制时,大约1/10倍的音频听起来会很完美,另外9倍的音频会很模糊。我想知道这是否有什么原因

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

    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();
    }

关于您的代码的一些评论:

首先,您是否以某种方式修改了WasapiLoopbackCapture?
DataAvailable
上的
WaveInEventArgs
没有代码中显示的属性。我希望你有一些块对齐错误,所以你的模糊声音不是在准确的样本边界上读取的。NAudio也没有名为
WaveWriter
的类-它是
WaveFileWriter
。你确定你在用NAudio吗


其次,不需要在
StartRecording
中启动新线程。WasapiLoopbackCapture将已使用后台线程。

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

        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();
                }
            }
        }
private static void Main(字符串[]args)
{
对于(int i=0;i<20;i++)
{
控制台写入线(i);
捕获(i);
}
}
私有静态无效捕获(int索引)
{
字符串名称=string.Format(“dump-{0}.wav”,索引);
使用(WasapiCapture=new WasapiLoopbackCapture())
{
capture.Initialize();
使用(var w=新的WaveWriter(名称,capture.WaveFormat))
{
capture.DataAvailable+=(s,capData)=>w.Write(capData.Data,capData.Offset,capData.ByteCount);
capture.Start();
睡眠(10000);
capture.Stop();
}
}
}

问题是xbox music或windows media player在后台运行,显然它们占用了所有声卡资源