AVPlayerの再生ステータス(playing/pause/end)を取得する

play or pause

再生中かどうかの判定にはAVPlayer.rateとAVPlayer.errorを使う。

var isPlaying: Bool {
    return player.rate != 0 && player.error == nil
}

end

再生が終わったかどうかの判定には、NotificationCenterにAVPlayerItemDidPlayToEndTimeのobserverを登録して判定する。

let asset = AVURLAsset(url: videoURL)
let playerItem = AVPlayerItem(asset: asset)
NotificationCenter.default.addObserver(self, selector: #selector(didPlayToEndTime), name: .AVPlayerItemDidPlayToEndTime, object: playerItem)

...

@objc func didPlayToEndTime() {
    // 再生が終了したら呼ばれる
}

参考記事

stackoverflow.com