[swift] CoreMedia 미디어 재생 이벤트 처리

CoreMedia Framework는 오디오 및 비디오 미디어 관련 기능을 제공하는 Apple의 프레임워크입니다. 이를 사용하여 미디어 파일의 재생, 편집, 변환 및 스트리밍을 처리할 수 있습니다. CoreMedia에서 제공하는 미디어 재생 이벤트를 처리하는 방법에 대해 알아보겠습니다.

이벤트 리스너 등록

CoreMedia 미디어 재생에 대한 이벤트를 처리하기 위해서는 AVPlayer 인스턴스에 이벤트 리스너를 등록해야 합니다. 다음은 AVPlayer 인스턴스에 이벤트 리스너를 등록하는 예시입니다.

let player = AVPlayer(url: videoURL)
player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 1), queue: DispatchQueue.main) { time in
    // 주기적으로 호출되는 이벤트 처리 로직
    print("현재 재생 시간: \(time.seconds)")
}

위의 예시에서 addPeriodicTimeObserver를 사용하여 1초 간격으로 주기적인 이벤트를 감지하고, 해당 이벤트가 발생할 때마다 주어진 클로저가 실행됩니다.

이벤트 타입

CoreMedia에서 제공하는 주요 미디어 재생 이벤트는 다음과 같습니다.

이벤트 처리

각각의 이벤트에 대해 적절한 처리를 수행할 수 있습니다. 예를 들어, 재생 완료 이벤트가 발생했을 때 다음 동작을 수행하도록 구현할 수 있습니다.

NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: player.currentItem, queue: .main) { notification in
    // 재생이 완료되었을 때의 처리 로직
    player.seek(to: .zero)
    player.play()
}

위의 예시에서 AVPlayerItemDidPlayToEndTime 노티피케이션을 이용하여 재생이 완료되었을 때의 로직을 구현하고 있습니다.

CoreMedia를 사용하여 미디어 파일의 재생 이벤트를 처리하는 방법에 대해 알아보았습니다. 적절한 이벤트 리스너 등록과 이벤트 처리를 통해 더 나은 사용자 경험을 제공할 수 있습니다.

참고 자료: Apple Developer Documentation - Core Media