Hooking a Mic with Unity via NAudio MMDeviceEnumerator - Getting a null reference exception in Unity

问题描述 投票:0回答:0

我试图绕过 Unity AudioSource(因为麦克风输入的延迟问题)并让 Unity 直接从 Windows 获取麦克风输入。我正在使用 NAudio.dll.

问题是,当我在 Unity 中运行时,出现空引用异常错误 - 在“var deviceEnum = new MMDeviceEnumerator();”之后

“NullReferenceException:对象引用未设置到对象的实例 System.Text.StringBuilder.AppendFormatHelper(System.IFormatProvider 提供程序、System.String 格式、System.ParamsArray 参数)(在 :0)。

using System;
using System.Collections.Generic;
using UnityEngine;
using NAudio.CoreAudioApi;
using System.Linq;


public class WasapiMic : MonoBehaviour
{

    private void Start()
    {
        WasapiCapture();
    }

    public void WasapiCapture()
    {
        var deviceEnum = new MMDeviceEnumerator();

        foreach (var device in deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active))
        {
            Debug.Log($"{device.ID}: {device.DeviceFriendlyName} / {device.FriendlyName}");
        }
    }
}

我遗漏了一些明显的东西,但我不知道是什么。如果你能帮忙,谢谢!

我预计 var deviceEnum = new MMDeviceEnumerator();将使用连接到 Windows 计算机的任何和所有麦克风设备填充数组。但它似乎是空的,尽管尝试了两个不同的 USB 麦克风(都通过统一 AudioSource 工作)。

unity3d audio naudio
© www.soinside.com 2019 - 2024. All rights reserved.