비디오 플레이어와 UIKit: 동영상 재생 기능 구현

작성일 :

비디오 플레이어와 UIKit: 동영상 재생 기능 구현하기

Swift와 UIKit을 사용해 iOS 애플리케이션에 비디오 플레이어 기능을 추가하려면 AVKit과 AVFoundation 프레임워크를 활용해야 합니다. 이 가이드에서는 간단한 비디오 플레이어를 만드는 과정을 단계별로 설명합니다. 주요 개념을 이해하고 실제 코드를 작성하는 방법을 배우게 될 것입니다.

프로젝트 설정

먼저, 새 Xcode 프로젝트를 생성합니다. 'Single View App' 템플릿을 선택하고, 프로젝트 이름과 기타 세부 사항을 입력한 후 프로젝트를 생성합니다. 이 튜토리얼에서는 UIKit을 사용하기 때문에 'User Interface' 옵션에서 'Storyboard'를 선택합니다.

프레임워크 임포트

비디오 플레이어를 구현하려면 프로젝트에서 AVKit과 AVFoundation 프레임워크를 임포트해야 합니다. ViewController.swift 파일을 열고 다음과 같이 선언합니다:

swift
import AVKit
import AVFoundation

AVPlayer 및 AVPlayerViewController 설정

다음으로, 비디오를 재생할 수 있는 AVPlayer와 AVPlayerViewController를 설정합니다. AVPlayer는 실제로 비디오를 재생하는 객체이며, AVPlayerViewController는 AVPlayer가 비디오를 표시할 수 있게 하는 뷰 컨트롤러입니다.

AVPlayer 인스턴스 만들기

비디오 파일을 프로젝트에 추가한 후, AVPlayer 객체를 초기화합니다. 아래와 같이 URL을 통해 초기화할 수 있습니다:

swift
// ViewController.swift
import UIKit
import AVKit
import AVFoundation

class ViewController: UIViewController {
    var player: AVPlayer?
    var playerViewController: AVPlayerViewController?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 비디오 파일 URL 설정
        if let filePath = Bundle.main.path(forResource: "sample", ofType: "mp4") {
            let fileURL = URL(fileURLWithPath: filePath)
            
            // AVPlayer 초기화
            player = AVPlayer(url: fileURL)
            
            // AVPlayerViewController 초기화 및 설정
            playerViewController = AVPlayerViewController()
            playerViewController?.player = player
        }
    }
}

AVPlayerViewController 설정

viewDidLoad 메소드 내에서 AVPlayerViewController를 설정하고 기본 뷰에 추가합니다. 다음 코드를 추가합니다:

swift
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    
    // 비디오 플레이어 뷰 컨트롤러 추가
    if let playerViewController = playerViewController {
        playerViewController.view.frame = self.view.bounds
        self.view.addSubview(playerViewController.view)
        self.addChild(playerViewController)
        playerViewController.didMove(toParent: self)
        
        // 비디오 재생 시작
        player?.play()
    }
}

사용자 인터페이스 커스터마이징

AVPlayerViewController는 기본적으로 사용자 인터페이스를 제공하지만, 필요한 경우 커스터마이징할 수 있습니다. 예를 들어, 재생 버튼을 추가하거나 사용자 정의 컨트롤을 배치할 수 있습니다.

재생 버튼 추가

Storyboard에서 UIButton을 ViewController에 추가하고, 다음 액션 메소드를 설정합니다:

swift
@IBAction func playButtonTapped(_ sender: UIButton) {
    player?.play()
}

일시정지 버튼 추가

마찬가지로, 버튼을 추가하고 일시정지 기능을 구현할 수 있습니다:

swift
@IBAction func pauseButtonTapped(_ sender: UIButton) {
    player?.pause()
}

비디오 플레이어 설정 기능

비디오 플레이어의 다양한 설정을 적용하여 원하는 동영상 재생 환경을 조성할 수 있습니다. AVPlayer의 속성을 변경하여 반복 재생, 자동 재생, 재생 속도 등을 조절할 수 있습니다.

반복 재생 설정

반복 재생을 구현하려면 AVPlayerItemDidPlayToEndTime 노티피케이션을 사용합니다:

swift
NotificationCenter.default.addObserver(self, selector: #selector(playerItemDidReachEnd), name: .AVPlayerItemDidPlayToEndTime, object: player?.currentItem)

@objc func playerItemDidReachEnd(notification: NSNotification) {
    player?.seek(to: .zero)
    player?.play()
}

자동 재생 설정

비디오가 자동으로 재생되도록 automaticallyWaitsToMinimizeStalling 속성을 false로 설정할 수 있습니다:

swift
player?.automaticallyWaitsToMinimizeStalling = false

재생 속도 조정

비디오 재생 속도를 조절하려면 rate 속성을 설정하십시오:

swift
player?.rate = 1.5 // 1.5배 속도로 재생

결론

이 가이드를 통해 Swift와 UIKit을 사용하여 비디오 플레이어 기능을 구현하는 방법을 배웠습니다. AVKit과 AVFoundation 프레임워크를 활용해 비디오 플레이어를 만들고, 기본 기능을 추가하고, 다양한 사용자 인터페이스를 커스터마이징하는 방법에 대해 이해하셨기를 바랍니다. 추가적으로, 비디오 플레이어의 설정을 변경하여 재생 경험을 조절하는 방법도 알아보았습니다.