[ios] 미디어 파일의 재생 중의 자막 및 다국어 오디오 관리

iOS 애플리케이션을 개발할 때, 미디어 파일의 재생 중에 자막과 다국어 오디오를 관리해야 하는 경우가 있습니다. 이를 위해 iOS에서는 AVFoundation 프레임워크를 사용하여 이러한 요구사항을 충족시킬 수 있습니다. 다음은 미디어 파일의 재생 중에 자막과 다국어 오디오를 관리하는 방법에 대한 설명입니다.

1. 자막 관리

1.1 자막 파일 추가

AVFoundation 프레임워크를 사용하여 비디오 파일에 자막 파일을 추가할 수 있습니다. 이를 위해서는 각 비디오 클립에 해당하는 자막 파일을 지정하여 연관시켜야 합니다.

let subtitleURL = URL(fileURLWithPath: "subtitleFile.srt")
let subtitleAsset = AVURLAsset(url: subtitleURL)
let subtitleItem = AVMutableMetadataItem()
subtitleItem.locale = Locale(identifier: "en") // 자막 언어 설정
subtitleItem.key = AVMetadataKey.identifierQuickTimeMetadataHREF
subtitleItem.keySpace = AVMetadataKeySpace.QuickTimeMetadata
subtitleItem.value = subtitleURL
videoAsset.commonMetadata.append(subtitleItem)

1.2 자막 표시

사용자가 자막을 표시하도록 한다면, AVPlayerLayer에서 텍스트를 표시하는 레이어를 추가하여 자막을 표시할 수 있습니다.

let subtitleLayer = CATextLayer()
subtitleLayer.string = "Subtitle text"
// Add subtitles to the video player layer
playerLayer.addSublayer(subtitleLayer)

2. 다국어 오디오 관리

2.1 다국어 오디오 파일 추가

비디오 파일에는 여러 다국어 오디오 트랙을 추가할 수 있습니다. 각 오디오 트랙은 해당하는 언어로 된 오디오 파일을 지정하여 연관시킵니다.

let audioURL = URL(fileURLWithPath: "audioFile_spanish.mp3")
let audioAsset = AVURLAsset(url: audioURL)
let audioItem = AVMutableMetadataItem()
audioItem.locale = Locale(identifier: "es") // 오디오 언어 설정
audioItem.key = AVMetadataKey.identifierQuickTimeMetadataHREF
audioItem.keySpace = AVMetadataKeySpace.QuickTimeMetadata
audioItem.value = audioURL
videoAsset.commonMetadata.append(audioItem)

2.2 사용자 언어 설정에 따른 오디오 재생

사용자가 기기의 언어 설정을 변경하면, 애플리케이션은 해당 언어에 맞게 비디오의 오디오 트랙을 선택하여 재생합니다.

if let preferredLanguage = Locale.preferredLanguages.first {
    // Select audio track based on user's preferred language
    let preferredAudioTrack = videoAsset.tracks(withMediaType: .audio).filter { $0.languageCode == preferredLanguage }.first
    playerItem.select(preferredAudioTrack, for: .audio)
}

위의 예시 코드는 AVFoundation 프레임워크를 사용하여 미디어 파일의 재생 중에 자막과 다국어 오디오를 관리하는 방법을 설명하고 있습니다. 이를 참고하여 iOS 애플리케이션에서 다국어 미디어 콘텐츠를 효과적으로 관리할 수 있습니다.