[swift] Swift 비디오 플레이어

이번 글에서는 Swift를 사용하여 비디오 플레이어를 만드는 방법에 대해 알아보겠습니다. 비디오 플레이어는 앱 내에서 동영상을 재생하는 데 사용되며, 사용자가 비디오를 볼 수 있는 편리한 기능을 제공합니다.

AVPlayer

AVPlayer는 AVFoundation 프레임워크에서 제공되는 클래스로, 비디오 재생을 담당합니다. AVPlayer를 사용하여 비디오 파일을 로드하고 재생할 수 있습니다.

import AVFoundation

// 비디오 파일 URL
let videoURL = URL(string: "https://example.com/video.mp4")!

// AVPlayer 인스턴스 생성
let player = AVPlayer(url: videoURL)

// AVPlayer를 사용하여 비디오 재생
let playerViewController = AVPlayerViewController()
playerViewController.player = player
present(playerViewController, animated: true) {
    player.play()
}

위의 코드에서는 AVPlayer를 사용하여 비디오 파일의 URL을 로드하고, AVPlayerViewController를 사용하여 비디오를 재생합니다.

사용자 인터페이스 추가

AVPlayerViewController는 비디오 재생을 위한 기본적인 사용자 인터페이스를 제공합니다. 그러나 필요에 따라 사용자 지정 인터페이스를 추가할 수도 있습니다. 예를 들어, 비디오 재생 상태를 표시하는 슬라이더를 추가해보겠습니다.

let playerSlider = UISlider()
playerSlider.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(playerSlider)

NSLayoutConstraint.activate([
    playerSlider.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    playerSlider.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    playerSlider.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])

// 슬라이더를 사용하여 비디오 재생 시간 설정
playerSlider.addTarget(self, action: #selector(sliderValueChanged), for: .valueChanged)

@objc func sliderValueChanged(sender: UISlider) {
    // 사용자가 슬라이더를 조작하여 비디오 재생 시간 변경
    let videoDuration = CMTimeGetSeconds(player.currentItem?.duration ?? .zero)
    let seekTime = CMTime(seconds: Double(sender.value) * videoDuration, preferredTimescale: 1)
    player.seek(to: seekTime)
}

위의 코드는 UISlider를 사용하여 비디오 재생 시간을 조작하는 기능을 추가합니다. 비디오 재생 시간이 변경되면 AVPlayer를 사용하여 새로운 시간으로 이동합니다.

결론

이렇게 Swift를 사용하여 비디오 플레이어를 만들 수 있습니다. AVPlayer를 사용하여 비디오를 로드하고 재생하며, AVPlayerViewController를 사용하여 기본적인 사용자 인터페이스를 제공할 수 있습니다. 필요한 경우 사용자 정의 인터페이스를 추가하여 비디오 플레이어를 더욱 풍부하게 만들 수도 있습니다.

참고 자료: