iOS - AVPlayer, использующий закрытые заголовки
Я работаю с AVPlayer на iOS, использую свойство "closedCaptionDisplayEnabled", чтобы показывать заголовки или субтитры к фильму (hls или mp4), но заголовок ничего не показывает. Не знаю почему?
У вас есть какое-либо решение для показа титров (субтитров) в фильме (hls,mp4)?
И я вижу несколько примеров про app, youtube, netflix, tvguide и что-то, что используется для скрытой подписи.
Может быть, все приложения на Iphone, Ipad от Netflix, YouTube, используя один файл и вставьте субтитры в видео, я думаю,
Но я хочу использовать два файла (один файл hls или mp4, один файл srt или WebVTT)
Спасибо, что прочитали эту статью!!!!
2 ответа
IOS AVPlayer поддерживает подписи одним из двух способов: либо кодирование подписей со стандартом CEA-608 (модифицированная версия устаревшего кодирования CEA-708/ATSC) в сегментированные видеофайлы MPEG2-TS, либо путем предоставления подписей в виде Сегментированный файл WebVTT, который указан в основном списке воспроизведения m38u для видео HLS. "Мягкие" субтитры (которые можно включать и выключать) поддерживаются стандартом WebVTT аналогично заголовкам (они оба классифицированы как синхронизированные метаданные); если вы предпочитаете "жесткие" субтитры (где они "записаны" в видео), вы бы предоставили данные субтитров вашему видеокодеру во время процесса транскодирования.
Смотрите следующие ссылки для получения дополнительной информации:
http://blog.zencoder.com/2012/07/13/closed-captioning-for-web-mobile-and-tv/
Вы пытаетесь использовать файлы SRT в качестве субтитров? Поскольку встроенные субтитры AVPlayer в iOS должны быть закодированы как часть потока (см. Документацию AVPlayer). Найдите программное обеспечение для редактирования видео, которое может вставить srt в видео (обратите внимание: это не встроенные субтитры, которые являются частью видео; вы можете включить или выключить их).
Теперь, если вы не можете сделать это, единственное другое решение - реализовать ваши собственные субтитры, проанализировав файл srt и отобразив UILabel поверх представления видео.
Очень быстрый и простой способ сделать это - загрузить его в webView.
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let html = """
<video playsinline controls width="100%" autoplay src="https://example.com/xyz.mp4">
<track default src="https://example.com/abc.vtt">
</video>
"""
webView.loadHTMLString(html, baseURL: nil)
}