AVAudioPlayer坑

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从初始化到播放之间的耗时就越长。反之,越短。
所以放在子线程播放还是有必要的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容