【问题标题】:Play continuous short sound without lagging UI animation播放连续的短声音而不滞后 UI 动画
【发布时间】:2017-05-12 04:03:09
【问题描述】:

故事就是这样。

我有一个计时器,当我点击一个按钮时,timer.setEventHandler 会渲染动画(类似于每 125 毫秒在 UI 中添加 10 个圆圈)。动画运行流畅,到目前为止一切顺利。

现在我想在每次添加圆圈时添加声音(声音像哔哔声一样播放 10 毫米,但来自 mp3 文件)。我尝试了两种方法:

  1. AudioServicesPlaySystemSound

    动画流畅,但声音播放不均匀。至少声音播放不会滞后于 UI。

  2. 使用AVAudioPlay

    我在单例类中准备了 AVAudioPlay 实例,并且每次动画逻辑在 DispatchedQueue 中调用 play() 以确保声音在单独的线程中播放。第一次按下按钮时,动画滞后。但是,当我在动画完成后不久(2秒内)再次按下按钮时,动画和声音将完美播放。但是,如果我在播放最后一个声音后等待更长的时间(例如 10 秒),则动画会滞后并且声音有点爆裂。

我想知道 iOS(我在 iPad Air 2 上运行 iOS 10)是否真的在 AVAudioPlay 实例不活动时将其置于睡眠状态。除非我在播放最后一个声音后的短时间内(2 秒)内按下按钮,否则 AVAudioPlay 线程将一直处于活动状态。

有什么想法吗?

【问题讨论】:

  • 它是 AVAudioPlayer。并在询问之前尝试搜索。这已经出现了很多很多。搜索“AVAudioPlayer 延迟”。例如,您的问题与 stackoverflow.com/questions/14162805/… 非常接近。
  • @matt 不。没有发布的解决方案适用于我的情况。

标签: ios swift3 avaudioplayer


【解决方案1】:

我想通了。

使用计时器以 0 音量每 1 秒永久播放一次,以保持音频会话保持活跃。这听起来很愚蠢,但它就像一个魅力!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 2017-08-15
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多