Chrome / Firefox не будет воспроизводить видео HLS / mp2t в HTML проигрывателе - PullRequest
0 голосов
/ 01 мая 2020

В настоящее время я работаю над веб-приложением, основной целью которого является потоковое / временное переключение телеканалов. Приложение написано на Javascript React Framework и для веб-плеера мы используем CookPete ReactPlayer со встроенным hls. js. Нам удалось успешно воспроизвести прямые телевизионные каналы, но, к сожалению, у нас возникли некоторые проблемы с каналами с временным сдвигом

Прямые потоки распределяются по серверу XtreamUI в виде списков m3u8 и имеют такой формат example.org/live/username/password/channel_1.m3u8 Таким образом, когда пользователь смотрит Live TV, этот вид URL-адреса переходит к исходному тексту проигрывателя, а игрок CookPete + hls. js выполняет свои магические действия c с анализом / обработкой Список m3u8, который приводит к безупречному воспроизведению видео.

Здесь возникает проблема, поскольку временное смещение XtreamUI использует этот вид URL example.org / streaming / timeshift. php? username = XXX & password = XXX & stream = 2 & start = 2020-04-26: 19-23 & duration = 7 Как вы можете видеть в сценарии PHP, который STREAMS передает необработанные байты в проигрыватель. Вот заголовки ответа от /streaming/timeshift.php

Web inspector

Как вы можете заметить, тип контента - video / mp2t, который по некоторым причинам не может быть воспроизведен в среда браузера. (Google Chrome, Mozilla Firefox, IE 11). Это предупреждение появляется.

Console warning

С другой стороны, браузер Safari на видео Ma c воспроизводится совершенно нормально, но запрос от Safari немного отличается. Это скриншот с вкладки сети консоли Safari. Как вы можете видеть, есть несколько запросов с разными байтовыми диапазонами.

Network tab

Мы ищем решение, которое обеспечит воспроизведение видео со сдвигом во времени (контент video / mp2t) в Google Chrome, Mozilla Firefox и IE 11. Все предложения / советы приветствуются.

1 Ответ

0 голосов
/ 02 мая 2020

Тип контента - video / mp2t, который по какой-то причине не может быть воспроизведен в среде браузера

Это связано с тем, что chrome и Firefox не поддерживают транспортные потоки MPEG. и сафари. hls. js работает, потому что знает, как читать двоичный ts-файл и переписывать его как фрагмент mp4 перед отправкой в ​​буфер расширений источника мультимедиа. Вам нужно будет сделать то же самое. Взгляните на мультиплекс. js.

...