[swift] Swift와 AVPlayerLayer를 이용한 비디오 백그라운드 애니메이션 구현하기

이번 글에서는 Swift와 AVPlayerLayer를 사용하여 비디오 백그라운드 애니메이션을 구현하는 방법에 대해 알아보겠습니다.

AVPlayerLayer란?

AVPlayerLayer는 AVFoundation 프레임워크에서 제공하는 클래스로, 비디오를 재생하고 표시하기 위한 Core Animation 레이어입니다. AVPlayerLayer를 사용하면 비디오를 효율적으로 관리하고, 애니메이션 효과와 함께 비디오를 백그라운드에서 재생할 수 있습니다.

프로젝트 설정

먼저 Xcode에서 새로운 프로젝트를 생성합니다. 프로젝트에 AVFoundation 프레임워크를 추가해야 하므로, 프로젝트 설정에서 Build Phases 탭으로 이동한 후, Link Binary With Libraries 옵션에 AVFoundation.framework을 추가합니다.

비디오 파일 추가

프로젝트 내에 재생하고자 하는 비디오 파일을 추가합니다. 비디오 파일은 .mp4 형식이어야 합니다. 프로젝트 내의 앱 번들에 비디오 파일을 추가하려면, 비디오 파일을 클릭하고 Target Membership 옵션에서 해당 프로젝트를 선택합니다.

코드 작성

이제 코드를 작성해보겠습니다. 먼저 ViewController 클래스를 생성한 후, 다음 코드를 추가합니다:

import AVFoundation
import AVKit

class ViewController: UIViewController {
    
    private var player: AVPlayer!
    private var playerLayer: AVPlayerLayer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 비디오 파일 URL 설정
        guard let videoURL = Bundle.main.url(forResource: "video", withExtension: "mp4") else {
            return
        }
        
        // AVPlayer 생성 및 설정
        player = AVPlayer(url: videoURL)
        player.actionAtItemEnd = .none
        player.isMuted = true
        player.play()
        
        // AVPlayerLayer 생성 및 설정
        playerLayer = AVPlayerLayer(player: player)
        playerLayer.videoGravity = .resizeAspectFill
        playerLayer.frame = view.bounds
        view.layer.addSublayer(playerLayer)
        
        // NotificationCenter를 사용하여 비디오 단방향 재생 설정
        NotificationCenter.default.addObserver(self, selector: #selector(playerItemDidReachEnd(notification:)), name: .AVPlayerItemDidPlayToEndTime, object: player.currentItem)
    }
    
    @objc func playerItemDidReachEnd(notification: NSNotification) {
        player.seek(to: CMTime.zero)
    }
}

위의 코드는 ViewController 클래스에서 AVPlayer와 AVPlayerLayer를 생성하고 설정하는 방법을 보여줍니다. 해당 코드를 viewDidLoad() 함수에 추가하면, 앱이 시작될 때 비디오가 자동으로 재생됩니다.

앱 실행

이제 프로젝트를 실행하여 비디오 백그라운드 애니메이션을 확인할 수 있습니다. 비디오가 제대로 로드되었고, 재생되는 것을 확인할 수 있을 것입니다.

결론

Swift와 AVPlayerLayer를 사용하여 비디오 백그라운드 애니메이션을 구현하는 방법에 대해 알아보았습니다. AVPlayerLayer를 이용하면 비디오를 쉽게 제어하고 앱의 백그라운드에서 멋진 애니메이션 효과를 적용할 수 있습니다. 이를 응용하여 다양한 비디오 애니메이션을 구현할 수 있으니, 참고하여 자신만의 창의적인 앱을 개발해보세요.

참고문서: AVPlayerLayer - Apple Developer Documentation