Добавление субтитров к видео AVPlayer

Я использую AVPlayerView чтобы показать некоторые локальные видео из моего каталога Apps Bundle. Теперь я хочу добавить возможность отображения субтитров для большей доступности моего контента.

Поскольку я программист, режиссер, а также тот, кто должен создавать субтитры, я открыт для любых форматов и решений субтитров. Я обнаружил несколько распространенных форматов (.srt, .scc), но мне интересно, как работать с ними "программно", используя AVPlayer,

Я инициализирую видео как:

let myVideoPlayer = AVQueuePlayer(url: URL(fileURLWithPath: "/myPath"))

Например, если вы воспроизводите видео с субтитрами в QuickTime, достаточно иметь оба файла (субтитры и видео) в одном каталоге. Я не мог найти никаких подсказок или решений, таких как добавление файла субтитров-URL к AVPlayer, чего я и ожидал. Кажется, это не правильный подход?

Другие темы упоминают, что AVPlayers closedCaptionDisplayEnabled хорошо работает с Closed Caption дорожек. Но опять же это подводит меня к вопросу: как я могу отображать субтитры с помощью AVPlayer из отдельного файла (например,.srt, .scc)?

3 ответа

Решение

В итоге я нашел следующий способ: экспортировать материал из Final Cut Pro X как.m4v, создавая субтитры вручную с SRT Edit Pro а затем добавив их в видеофайл с SublerИтак, у меня есть только один файл в конце. Таким образом, AVPlayer / QuickTime автоматически определяет дорожку субтитров.

Я использовал предложение ixany(добавить субтитры в видеофайл), но затем мне пришлось заставить AVPlayer отображать субтитры, используя этот код:

let playerItem = AVPlayerItem(asset: asset)
if let group = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) {
    let locale = Locale(identifier: "en-EN")
    let options = AVMediaSelectionGroup.mediaSelectionOptions(from: group.options, with: locale)
    if let option = options.first {
        playerItem.select(option, in: group)
    }
}

И остерегайтесь тестирования этого в симуляторе. Для меня это работает только на реальном устройстве.

Это идеальный ответ для добавления субтитров в AVPlayer. Нужно просто вставить этот код в свой код. Спасибо

      let playerItem = AVPlayerItem(asset: asset)
if let group = playerItem.asset.mediaSelectionGroup(forMediaCharacteristic: .legible) {
    let locale = Locale(identifier: "en")
    let options = AVMediaSelectionGroup.mediaSelectionOptions(from: group.options, with: locale)
    if let option = options.first {
        playerItem.select(option, in: group)
    }
}
Другие вопросы по тегам