📖
【iOS】AVPlayerで連続で動画を再生する
複数のメディアアイテムの連続再生の実装
この記事では、Swiftを使ったiOS開発において、AVPlayer
を利用して複数のメディアファイルを順番に自動再生する方法に焦点を当てます。具体的には、AVPlayerWrapper
クラス内で実装された連続再生のメカニズムについて解説します。
連続再生の仕組み
連続再生の核となるのは、現在再生中のAVPlayerItem
が終了した際に、自動的に次のAVPlayerItem
へ切り替えることです。これを実現するために、AVPlayerWrapper
クラスではNotificationCenter
を使用して、メディアアイテムの再生終了イベントを監視しています。
再生終了イベントの監視
private func setupEndPlaybackObserver() {
itemDidPlayToEndObserver = NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: nil,
queue: .main) { [weak self] _ in
self?.loadNextItem()
}
}
このコードスニペットでは、.AVPlayerItemDidPlayToEndTime
通知を購読しています。この通知は、現在のAVPlayerItem
の再生が終了した時に発火します。通知が発火すると、loadNextItem
メソッドが呼び出され、次のアイテムのロードと再生が行われます。
次のアイテムへの自動切り替え
private func loadNextItem() {
if !playerItems.isEmpty {
let nextItem = playerItems.removeFirst()
player.replaceCurrentItem(with: nextItem)
player.play()
} else {
stop()
}
}
loadNextItem
メソッドでは、まずplayerItems
配列が空でないかを確認します。空でなければ、配列から次のAVPlayerItem
を取り出し、AVPlayer
の現在のアイテムをこれに置き換え、再生を開始します。すべてのアイテムが再生された後、配列が空になると、stop
メソッドが呼び出され、再生が停止します。
こちらのサンプルを参考にしてみてください
Discussion