快速按顺序播放音频文件
Posted
技术标签:
【中文标题】快速按顺序播放音频文件【英文标题】:Play audio file in a sequence in swift 【发布时间】:2016-03-07 13:17:18 【问题描述】:我有两个功能。第一个循环播放要播放的音频的名称列表,第二个是实际的播放器函数。问题是它只播放最后一个。它不会一个一个地播放,直到下一个完成。怎么可能按顺序执行?我尝试添加: dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ) ... 仍然不起作用。任何可能的解决方案。先感谢您!
func startGame()
audioPlay("NowListen")
for i in 0...self.soundArray.count - 1
print(self.soundArray[i])
self.audioPlay(self.soundArray[i])
func audioPlay(name: String)
var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("\(name)", ofType: "mp3")!)
print(alertSound)
// try to play sound
do
self.audioPlayer = try AVAudioPlayer(contentsOfURL: alertSound)
self.audioPlayer.prepareToPlay()
self.audioPlayer.play()
catch
【问题讨论】:
【参考方案1】:使用 AVQueuePlayer(在开始时使用 Items 初始化它,它将在队列中一个接一个地播放)类而不是 AVAudioPlayer。
在您的开始游戏中,您可以执行以下操作:
var audioItems: [AVPlayerItem] = []
for audioName in soundsArray
let url = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(audioName, ofType: "mp3")!)
let item = AVPlayerItem(URL: url)
audioItems.append(item)
let player = AVQueuePlayer(items: audioItems)
player.play()
【讨论】:
请提供简单的例子 将播放器保存在某处,否则在此方法/块/函数之后将被释放 谢谢!我将它保存在函数之外,作为全局变量,似乎可以工作!以上是关于快速按顺序播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 JavaScript 按顺序播放 MP3 文件,无需 HTML5 音频