EZAudio 停止获取音频

Posted

技术标签:

【中文标题】EZAudio 停止获取音频【英文标题】:EZAudio stopfetching audio 【发布时间】:2016-09-19 04:11:47 【问题描述】:

当我从 EZAudio 调用函数 .stopfetchingaudio() 时,我的应用程序崩溃了。

var microphone: EZMicrophone! 

func didMove(to view: SKView)

 /*
         * setup all dependencys for the fft analysis
         */

        //setup audio session
        session = AVAudiosession.sharedInstance()
        do
            try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
            try session.setActive(true)
        catch
            print("Audio Session setup Fails")
        

        //create a mic instance
        microphone = EZMicrophone(delegate: self)




func stopMic()
    microphone.stopFetchingAudio()

我收到此错误:

xyz-abv[435:35687] 致命错误:在展开可选值时意外发现 nil

但我不知道它是什么意思。

【问题讨论】:

你的麦克风是在哪里定义的? 它在来自 SpriteKit 的 GameScene 中定义。这个想法是当我切换到另一个视图控制器时,我将停止麦克风捕获。为此,我从父 viewController 调用 stop() 函数。但这给了我这个错误 【参考方案1】:

我认为应该是:

func stopMic()
    if let _ = microphone 
        microphone.stopFetchingAudio()
    

解释:原因是您从一个视图(使用麦克风的位置)移动到另一个视图而没有对其进行初始化。当你从第二个视图控制器调用 stop 方法时,它会导致错误,因为麦克风是 NIL。

【讨论】:

抱歉发帖失败 你在哪里初始化了麦克风? 它在来自 SpriteKit 的 GameScene 中定义。这个想法是当我切换到另一个视图控制器时,我将停止麦克风捕获。为此,我从父 viewController 调用 stop() 函数。但这给了我这个错误

以上是关于EZAudio 停止获取音频的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 EZAudio 框架播放音频文件

EZAudio - 如何使用 EZAudioPlotGL 根据视图大小更改相同的波形大小

EZAudio 自定义 AudioStreamBasicDescription 没有按我的预期工作

AudioBufferList to float ** 转换 EZAudio EZMicrophone for Visual Plotting

Apple tv 音频停止

EZAudio:如何将缓冲区大小与 FFT 窗口大小分开(希望更高的频率 bin 分辨率)。