[swift] Swift에서 비디오 재생 시 재생 위치 기능 추가하기

Swift를 사용하여 iOS 앱을 개발하고 있다면, 비디오를 재생하는 기능은 중요한 부분입니다. 사용자가 비디오를 뒤로 감거나 앞으로 감는 등의 조작을 할 수 있도록 하는 것이 사용자 경험에 매우 중요합니다. 이번 포스트에서는 Swift를 사용하여 비디오 재생 중 재생 위치를 조절하는 방법에 대해 알아보겠습니다.

AVFoundation Framework의 활용

비디오 재생에는 AVFoundation 프레임워크를 사용할 수 있습니다. AVFoundation은 오디오와 비디오 더하기, 믹싱, 플레이백, 녹화 등과 관련된 기능을 제공하는 프레임워크입니다.

AVPlayer와 UISlider 활용

import AVKit
import AVFoundation

class VideoPlayerViewController: UIViewController {
    
    @IBOutlet weak var videoPlayerView: UIView!
    @IBOutlet weak var videoProgressSlider: UISlider!
    
    var player: AVPlayer!
    var playerLayer: AVPlayerLayer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let videoURL = URL(string: "your_video_url_here.mp4")!
        player = AVPlayer(url: videoURL)
        
        playerLayer = AVPlayerLayer(player: player)
        playerLayer.videoGravity = .resizeAspectFill
        playerLayer.frame = videoPlayerView.bounds
        videoPlayerView.layer.addSublayer(playerLayer)
        
        player.play()
        
        player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 1), queue: .main) { [weak self] time in
            guard let self = self else { return }
            let currentTime = CMTimeGetSeconds(time)
            let duration = CMTimeGetSeconds(self.player.currentItem?.duration ?? CMTimeMake(value: 1, timescale: 1))
            self.videoProgressSlider.value = Float(currentTime / duration)
        }
    }
    
    @IBAction func videoProgressChanged(_ sender: UISlider) {
        if let duration = player.currentItem?.duration {
            let totalSeconds = Float(CMTimeGetSeconds(duration))
            let value = Float(videoProgressSlider.value) * totalSeconds
            let seekTime = CMTime(value: CMTimeValue(value), timescale: 1)
            player.seek(to: seekTime)
        }
    }
}

위의 코드는 AVFoundation 프레임워크를 사용하여 비디오를 재생하고, UISlider를 사용하여 재생 위치를 조절하는 방법을 보여줍니다. player.addPeriodicTimeObserver를 사용하여 일정 시간 간격마다 재생 위치를 업데이트하고, videoProgressChanged 메서드를 통해 UISlider의 값을 변경하여 비디오의 재생 위치를 조절할 수 있습니다.

이제 Swift를 사용하여 비디오 재생 중에 재생 위치를 조절하는 기능을 추가할 수 있게 되었습니다. 사용자에게 좀 더 편리한 비디오 재생 환경을 제공하기 위해 이 기능을 활용해 보세요.

참고: Apple Developer - AVFoundation