[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