Почему субтитры SRT не появляются в моих видео MP4 на iPhone?

Я использую videojs на HTML-странице для публикации видео с субтитрами VTT. Проблема в том, что iPhone не воспроизводит mp4 в проигрывателе videojs - он отображает полный проигрыватель videojs, но когда вы нажимаете кнопку «Воспроизвести», он открывает mp4 в своем родном проигрывателе (предположительно, в проигрывателе QT). Это нормальное поведение для видео на iPhone, но в этот момент я теряю подписи, которые вставляются в проигрыватель videojs через css.

Поэтому я прогнал MP4 через Handbrake с импортированными файлами .srt. В моем локальном проигрывателе VLC появляются подписи. Но когда я помещаю те же файлы (MP4 + SRT) в тот же каталог на своем веб-сервере, субтитры не появляются на видео в iPhone. На самом деле, субтитры — или любой параметр субтитров — также не отображаются в родных проигрывателях настольных Firefox, Chrome или IE 11 (который использует плагин QT для видео).

Это не проблема кодирования (используется UTF-8) или конфигурации сервера - если я вставлю два <tracks>в <video>элемент videojs - один файл vtt, один файл srt - оба воспроизводятся вместе в проигрывателе videojs.

Рад, что ты что-то нашел. Не стесняйтесь публиковать его как ответ и отмечать как отвеченный, если он решил проблему. Таким образом, мы можем проголосовать за него в качестве благодарности за то, что поделились.

Ответы (1)

Обновить с ответом

Это может быть сделано. Запустите исходные файлы через Handbrake после импорта нужных файлов субтитров. Затем экспортируйте как Mp4. Я читал, что (а) вы должны поместить файлы SRT в ту же папку, что и Mp4 на вашем сервере, и (b) SRT должен иметь то же имя, что и mp4. Но (а), вероятно, неверно (в текстовом редакторе вы можете видеть, что субтитры были закодированы в mp4 с помощью Handbrake) и (б) определенно неверно - два файла SRT на разных языках, очевидно, будут иметь разные имена файлов.

Тестирование... На iPhone в правой части панели управления проигрывателем QT появился небольшой речевой пузырь, когда он загружал мой MP4. При нажатии на это появилось два варианта языка субтитров. Итак, это сработало. Но это сработало только потому, что сначала мой тестер должен был включить «скрытые титры» на своем iPhone:

Settings > General > Accessibility > Subtitles & Captioning > Closed Captions + SDH

Другими словами, это дополнительная рутинная работа для пользователей, а в результате субтитры выглядят паршиво. И все это потому, что, в отличие от Samsung и большинства других мобильных телефонов, на которых я тестировал, iPhone переопределяет проигрыватель videojs и воспроизводит ваши видео в собственном проигрывателе Quicktime от Apple.