IOS - AVPlayer с использованием закрытых титров

Я работаю с AVPlayer при использовании iOS для свойства "closedCaptionDisplayEnabled"  показать субтитры или субтитры в фильме (hls или mp4), но заголовок ничего не показывает. Я не знаю почему?

Есть ли у вас решение отображать титры (субтитры) в фильме (hls, mp4)?

И я вижу несколько примеров про приложение, youtube, netflix, tvguide и что-то, что используется для закрытых титров.

Возможно, все приложение на iphone, ipad из netflix, youtube, используя один файл и вставляя субтитры внутри видео, я думаю,

Но я хочу использовать два файла (один файл hls или mp4, один файл srt или WebVTT)

image1, image2

Спасибо, что прочитали эту статью!!!!

Ответ 1

iOS AVPlayer поддерживает титры одним из двух способов: либо кодировать заголовки стандартом CEA-608 (модифицированную версию устаревшего кодирования CEA-708/ATSC) в сегментированные видеофайлы MPEG2-TS, либо путем предоставления титры в сегментированном файле WebVTT, который указан в главном плейлисте m38u для видео HLS. "Мягкие" субтитры (которые могут быть включены и выключены) поддерживаются стандартом WebVTT аналогично титрам (они оба классифицируются как временные метаданные); если вы предпочитаете "жесткие" субтитры (где они "сжигаются" в видео), вы должны предоставить данные субтитров вашему видеокодеру во время процесса перекодирования.

Для получения дополнительной информации см. следующие ссылки:

https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html

http://blog.zencoder.com/2012/07/13/closed-captioning-for-web-mobile-and-tv/

Ответ 2

Вы пытаетесь использовать srt файлы в качестве субтитров? Поскольку встроенный закрытый субтитр AVPlayer в iOS должен быть закодирован как часть потока (проверьте документацию AVPlayer). Найдите программное обеспечение для редактирования видео, которое может вставить srt в видео (обратите внимание: это не запеченные субтитры, которые являются частью видео, вы можете отключить их).

Теперь, если вы не можете этого сделать, единственное другое решение - реализовать собственные субтитры, проанализировав файл srt и отображая UILabel поверх видеоизображения.

Ответ 3

Очень быстрый и простой способ сделать это - загрузить его в веб-представление.

@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)
}