AVPlayerはかなりシンプルです。ここでは、URLまたはファイル名からinitに拡張し、オーディオをループします:
extension AVPlayer {
convenience init?(url: URL) {
let playerItem = AVPlayerItem(url: url)
self.init(playerItem: playerItem)
}
convenience init?(name: String, extension ext: String) {
guard let url = Bundle.main.url(forResource: name, withExtension: ext) else {
return nil
}
self.init(url: url)
}
func playFromStart() {
seek(to: CMTimeMake(0, 1))
play()
}
func playLoop() {
playFromStart()
NotificationCenter.default.addObserver(forName: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.currentItem, queue: nil) { notification in
if self.timeControlStatus == .playing {
self.playFromStart()
}
}
}
func endLoop() {
pause()
NotificationCenter.default.removeObserver(self, name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self)
}
}