[swift] Swift에서 비디오 재생 준비 상태 표시하기

AVPlayerViewController를 이용한 비디오 재생 준비 상태 표시하기

AVPlayerViewController를 사용하면 간단하게 비디오를 재생하고 비디오 로딩 상태를 표시할 수 있습니다. AVPlayerViewController를 사용하려면 AVKit 프레임워크를 임포트해야 합니다.

먼저, AVKit 프레임워크를 임포트합니다.

import AVKit

다음으로 AVPlayerViewController를 초기화하고 비디오 URL을 설정합니다.

let videoURL = URL(string: "your_video_url_here")
let playerVC = AVPlayerViewController()
playerVC.player = AVPlayer(url: videoURL)
self.present(playerVC, animated: true) {
    playerVC.player?.play()
}

위의 코드에서는 AVPlayerViewController를 초기화하고 비디오 URL을 설정한 후, present 메서드를 사용하여 ViewController에 표시합니다. 그리고 비디오를 재생합니다.

비디오 로딩 상태 표시하기

AVPlayerViewController의 player 속성을 이용하여 현재의 로딩 상태를 확인할 수 있습니다. 로딩 상태를 감지하여 사용자에게 표시하기 위해 KVO(Key-Value Observing)를 사용할 수 있습니다.

playerVC.player?.addObserver(self, forKeyPath: "status", options: [.new], context: nil)

위의 코드에서는 AVPlayerViewController의 player 속성을 감시하여 상태의 변경을 감지합니다.

그리고 아래의 메서드를 통해 변경된 상태를 확인하여 원하는 동작을 수행할 수 있습니다.

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "status" {
        if playerVC.player?.status == .readyToPlay {
            // 비디오 재생 준비 완료
            // 로딩 상태 표시를 숨김
        } else if playerVC.player?.status == .failed {
            // 비디오 재생 준비 실패
            // 사용자에게 오류 메시지 표시
        }
    }
}

위의 코드에서는 observeValue(forKeyPath:of:change:context:) 메서드를 사용하여 player의 상태를 확인하고, 이에 따라 적절한 동작을 수행합니다. readyToPlay 상태일 때는 로딩 상태를 숨기고, failed 상태일 때는 사용자에게 오류 메시지를 표시합니다.

AVPlayerViewController를 이용하여 Swift에서 비디오 재생 준비 상태를 표시하는 방법에 대해 알아보았습니다. 이를 통해 사용자에게 비디오 로딩 상태를 명확히 전달할 수 있고, 좀 더 나은 사용자 경험을 제공할 수 있습니다.