AVAudioPlayer坑

2022-09-21  本文已影响0人  Fsn_soul

AVAudioPlayer初始化和播放耗时比较严重,会阻塞主线程

private func playVoice(fileURL: URL) {
        Loggo.debug(log: "init1")
        self.player = try? AVAudioPlayer.init(contentsOf: fileURL) //370ms
        Loggo.debug(log: "init2")
        self.player?.delegate = self
        Loggo.debug(log: "prepareToPlay1")
        self.player?.prepareToPlay() //70ms
        Loggo.debug(log: "prepareToPlay2")
        Loggo.debug(log: "duration1")
        self.duration = self.player?.duration ?? 0
        Loggo.debug(log: "duration2")
        Loggo.debug(log: "play1")
        self.play() //100ms
        Loggo.debug(log: "play2")
    }

一点播放要等差不多0.5秒才会播放,而且还卡主线程,坑啊,实在要用还是放子线程播放。
空工程差不多在120ms左右。
总结:
机型越差,或者播放前CPU占用率就已经很高,AVAudioPlayer从初始化到播放之间的耗时就越长。反之,越短。
所以放在子线程播放还是有必要的。

上一篇 下一篇

猜你喜欢

热点阅读