[swift] Swift에서 비디오 재생 시 자막 추가하기
비디오 재생 시 자막을 추가하는 것은 사용자 경험을 향상시키고 비디오 내용을 이해하는 데 도움이 될 수 있습니다. Swift에서 AVKit 및 AVFoundation 프레임워크를 사용하여 비디오에 자막을 추가하는 방법을 알아보겠습니다.
1. 비디오와 자막 파일 가져오기
먼저 비디오 파일 및 자막 파일을 프로젝트에 추가합니다. Xcode에서 프로젝트 네비게이터에서 비디오 및 자막 파일을 찾아 프로젝트에 드래그 앤 드롭합니다.
2. AVPlayerViewController 사용하기
AVPlayerViewController를 사용하여 비디오를 재생하고 그 위에 자막을 나타낼 것입니다. AVPlayerViewController의 인스턴스를 만들고 비디오 파일을 로드합니다.
import AVKit
import AVFoundation
guard let videoURL = Bundle.main.url(forResource: "video", withExtension: "mp4") else {
return
}
let player = AVPlayer(url: videoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
player.play()
}
3. 자막 파일 로드하기
이제 자막 파일을 AVPlayerViewController에 추가하여 자막을 표시할 수 있습니다. 자막 파일은 비디오 트랙에 연결되어야 하므로 AVPlayerItem에 자막 트랙을 추가하는 방법을 사용해야 합니다.
let subtitleURL = Bundle.main.url(forResource: "subtitle", withExtension: "vtt")
let asset = AVURLAsset(url: subtitleURL)
let subTitle = AVMutableComposition()
asset.loadValuesAsynchronously(forKeys: ["tracks"]) {
var error: NSError?
let status = asset.statusOfValue(forKey: "tracks", error: &error)
if status == .loaded {
let playerItem = AVPlayerItem(asset: asset)
let textTrack = asset.tracks(withMediaType: AVMediaType.subtitle).first
let playerItemMetadataOutput = AVPlayerItemMetadataOutput(identifiers: nil)
playerItemMetadataOutput.setDelegate(self, queue: DispatchQueue.main)
playerItem.seek(to: CMTime.zero)
playerItemMetadataOutput.setDelegate(self, queue: DispatchQueue.main)
playerItemMetadataOutput.setDelegate(self, queue: DispatchQueue.main)
playerItem.add(playerItemMetadataOutput)
}
}
4. 자막 표시하기
AVPlayerViewController의 contentOverlayView를 사용하여 자막을 표시합니다.
func metadataOutput(_ output: AVPlayerItemMetadataOutput, didOutputTimedMetadataGroups groups: [AVTimedMetadataGroup], from track: AVPlayerItemTrack?) {
for timedMetadataGroup in groups {
for metadata in timedMetadataGroup.items {
if let metadata = metadata as? AVMetadataItem {
if let value = metadata.value {
// Display the subtitle text
print(value)
}
}
}
}
}
이제 비디오를 재생하면 자막이 AVPlayerViewController 위에 표시될 것입니다.
자막 파일을 비디오에 추가하여 사용자가 비디오를 더 쉽게 이해할 수 있도록 도와주는 간단한 방법입니다. 이를 통해 Swift로 자막을 포함한 멋진 비디오 앱을 만들 수 있습니다.