【问题标题】:Microphone start function freezes unity app麦克风启动功能冻结统一应用程序
【发布时间】:2018-05-04 21:19:04
【问题描述】:

启动麦克风会使整个应用程序完全冻结 5 秒(始终为 5 秒)。统一 5.6.0f3

代码:

public void StartRecording()
    {
        System.Diagnostics.Stopwatch sw1 = new System.Diagnostics.Stopwatch();
        sw1.Start();
        if (!Microphone.IsRecording(null))
        {
            m_ForcedStopRecording = false;
            m_RecordingStartTime = Time.time;
            Debug.Log("ms before start microphone 2: " + sw1.ElapsedMilliseconds);
            m_RecordedAudio = Microphone.Start(null, false, m_MaxRecordingLengthInSeconds, m_RecordingFrequency);
            Debug.Log("ms after start microphone: " + sw1.ElapsedMilliseconds);
            StartCoroutine(WaitForRecordingTimeout());
        }
        Debug.Log("total StartRecording: " + sw1.ElapsedMilliseconds);
    }

启动麦克风 2 前的毫秒数结果为 0 启动麦克风后的毫秒数为 5011 有什么建议吗?

【问题讨论】:

  • m_MaxRecordingLengthInSeconds 有什么价值? Microphone.Start 是阻塞呼叫(我敢打赌)吗?如果是这样,那么该调用只是阻塞了您的主线程。
  • 临时冻结是一个错误。提交错误报告。看起来他们没有在另一个线程上进行调用。这应该是一个带有麦克风启动时回调函数的异步函数。
  • @Programmer 即使是因为不异步而导致的错误,为什么总是需要 5 秒才能启动?但并非总是如此,因为如果我重新启动计算机需要 2 毫秒,然后突然没有任何模式,它开始需要 5 秒来启动麦克风,这听起来很奇怪
  • 该功能是枚举您计算机上的麦克风然后启动它。它应该在另一个线程中完成。这不是你的错。这是 API 的问题。您必须提交错误报告然后等待修复,或者您可以为最常用的平台(Windows、iOS、Android)构建原生麦克风插件。

标签: c# unity3d audio audio-recording microphone


【解决方案1】:

您应该尝试将您的麦克风连接到不同的端口,如果是 USB,则可能是您的计算机无法找到您的麦克风的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多