我的代码非常简单,如下所示:
import UIKit
import AVFoundation
class VC: UIViewController {
var player:AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("audioName", ofType: "mp3")!)
do{
try player = AVAudioPlayer(contentsOfURL: url)
print("duration", player.duration)// duration 200
player.prepareToPlay()
player.playAtTime(50.0)
}catch{
}
}
}
调用player.play()时,音频可以正常播放。 我不知道为什么 playAtTime 函数不起作用。 请帮忙!
playAtTime 在未来某个时间播放声音,相对于设备的当前时间指定。所以时间参数需要是当前设备时间加上您所需的延迟(以秒为单位):
player.playAtTime(player.currentDeviceTime + 50)
当您初始化播放器时,player.currentTime 将为 0,因此这不是要使用的属性。
Apple 文档在这里
func playAtTime(time: NSTimeInterval) -> Bool
这个函数的目的是在未来的某个时间播放声音,基于并大于 deviceCurrentTime,我建议尝试:
player.playAtTime(player.currentTime + 50.0)
我遇到了加里·艾伦(Gary Allen)描述的类似问题。
我发现以下应该有效:
在player.prepareToPlay()部分之后....
let currentTime = player.currentTime
let infuturetime = (currentTime ?? 0.00) + 50.0
player.currentTime = infuturetime
player.play()
我希望这会有所帮助!