[ios] 미디어 파일의 재생 중 화면 조절과 화면 비율 관리

iOS 앱을 개발하다 보면 비디오나 음악과 같은 미디어 파일을 재생하는 기능을 구현해야 할 때가 있습니다. 사용자가 화면 조절이나 화면 비율을 조정할 수 있는 기능을 제공하면 사용성이 향상됩니다. 이를 위해서 AVPlayerViewController 및 AVPlayerLayer 클래스를 사용하여 미디어 파일의 재생 중 화면을 관리할 수 있습니다.

AVPlayerViewController를 사용한 화면 조절

AVPlayerViewController 클래스는 비디오 재생 화면을 관리하는 데 사용됩니다. 이 클래스를 사용하면 사용자가 비디오의 재생, 일시 중지, 빠른 순서로 재생, 속도 조절 등을 할 수 있습니다. 또한 사용자가 화면을 닫는 등의 제스처로 인터랙션할 수 있습니다.

AVPlayerViewController를 사용하여 화면 조절을 구현할 때, 다음 코드와 같이 contentOverlayView를 활용하여 추가적인 뷰나 컨트롤을 추가할 수 있습니다.

let playerController = AVPlayerViewController()
playerController.player = AVPlayer(url: videoURL)

// Add a view on top of the player
let customView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
customView.backgroundColor = UIColor.blue
playerController.contentOverlayView?.addSubview(customView)

self.present(playerController, animated: true) {
    playerController.player?.play()
}

위 코드에서 AVPlayerViewController를 사용하여 비디오를 화면에 나타내고, contentOverlayView를 통해 customView를 추가하여 사용자 지정 뷰를 화면에 표시하는 예제입니다.

AVPlayerLayer를 사용한 화면 비율 관리

AVPlayerLayer 클래스를 사용하여 비디오 또는 오디오 미디어 파일을 렌더링하고 화면 비율을 관리할 수 있습니다. 이것은 사용자가 커스텀화된 화면 처리를 원할 경우에 유용합니다. 예를 들어, 사용자가 비디오의 컨텐츠를 확대/축소하고, 화면 비율을 조절하고 싶을 때 사용할 수 있습니다.

AVPlayerLayer를 사용하여 화면 비율을 관리하는 예제는 다음과 같습니다.

let player = AVPlayer(url: videoURL)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.videoGravity = .resizeAspect

playerLayer.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
self.view.layer.addSublayer(playerLayer)
player.play()

위 코드에서 AVPlayerLayer를 사용하여 비디오를 화면에 렌더링하고, videoGravity 속성을 통해 비디오의 화면 비율을 조절하는 예제입니다.

이처럼 AVPlayerViewController 및 AVPlayerLayer 클래스를 사용하여 iOS 앱에서 미디어 파일의 재생 중 화면 조절과 화면 비율 관리를 구현할 수 있습니다.

참고 문헌