[swift] CoreMedia 자동 회전 처리

CoreMedia 프레임워크는 오디오, 비디오 및 이미지 처리를 위한 Apple의 핵심 프레임워크 중 하나입니다. iOS 앱에서 비디오를 다루거나 재생할 때, 사용자가 장치를 회전시킬 때 비디오도 자동으로 회전되어야 합니다. 이를 위해서는 CoreMedia를 적절하게 다루는 방법을 알아야 합니다.

CoreMedia란 무엇인가?

CoreMedia는 iOS 및 macOS에서 미디어 처리 기능을 제공하는 프레임워크입니다. 비디오 및 오디오 데이터의 효율적으로 처리하고 재생할 수 있는 기능을 포함하고 있습니다.

CoreMedia에서 자동 회전 처리하기

비디오 트랙의 회전 정보를 확인하고, 해당 정보에 따라 비디오를 회전하는 것은 CoreMedia에서 간단하게 처리할 수 있습니다. 아래의 예시 코드는 AVAsset와 AVAssetTrack을 사용하여 비디오 트랙의 회전 정보를 확인하고, 그에 따라 CGAffineTransform을 적용하여 화면에 비디오를 표시하는 방법을 보여줍니다.

if let videoTrack = asset.tracks(withMediaType: .video).first {
    let transform = videoTrack.preferredTransform
    let videoSize = videoTrack.naturalSize.applying(transform)
    let layer = AVSynchronizedLayer(playerItem: playerItem, videoGravity: .resizeAspectFill)
    layer.bounds = CGRect(origin: .zero, size: videoSize)
    layer.setAffineTransform(transform)
    playerLayer = AVPlayerLayer(player: player)
    playerLayer.addSublayer(layer)
}

위의 코드에서 asset은 AVAsset 객체, playerItem은 AVPlayerItem 객체, player는 AVPlayer 객체입니다.

마무리

CoreMedia 프레임워크를 사용하여 비디오를 다룰 때, 화면 회전에 대한 고려가 필요합니다. CoreMedia를 이용하여 비디오를 자동으로 회전시키는 방법에 대해 알아봤습니다. 비디오 재생 화면의 회전에 관련된 기능을 구현할 때, CoreMedia를 잘 활용하여 사용자에게 더 나은 사용 경험을 제공할 수 있습니다.

참고 자료