异步播放多个AVAudioPlayer?

问题描述 投票:1回答:1

我有一个背景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()
}

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

swift avfoundation avaudioplayer avkit dispatch-queue
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.