【问题标题】:play multiple AVAudioPlayer at the same time asynchronously?异步同时播放多个 AVAudioPlayer?
【发布时间】:2019-03-17 16:43:15
【问题描述】:

我有一个通常可以正常工作的后台 AVAudioPlayer。现在我有一些事件会触发一个延迟的异步动作,在这里我想播放另一个声音,而另一个应该继续播放。所以我做了一个新的:

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    guard let urlStr = Bundle.main.path(forResource: "File1", ofType: ".mp3") else { fatalError() }
    self.player = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: urlStr), fileTypeHint: "mp3")
    self.player?.play()
}

DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
    guard let urlStr = Bundle.main.path(forResource: "File2", ofType: ".mp3") else { fatalError() }
    let p = try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: urlStr), fileTypeHint: "mp3")
    p?.play()
}

所以第一个运行正常(调度只是为了表明它也在异步工作)。第二个也运行,这意味着没有错误。但是,我只听到第一个...

【问题讨论】:

    标签: swift avfoundation avaudioplayer avkit dispatch-queue


    【解决方案1】:

    为什么要在异步调用中创建一个新播放器?我遇到了类似的问题,如果您在直接异步范围之外声明一个新 var,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多