Как настроить потоковую передачу DASH?

Я пытался настроить потоковую передачу mpeg dash, но мне не повезло. У меня есть dash.all.debug.js, добавленный в html, но затем он запрашивает /dash.all.debug.js.map, который я нашел здесь. Но после этого ничего. Явно что-то работает, потому что запросил файл карты, но после этого ни Chrome, ни Firefox ничего не делают. Просят mpd, который я даю и проверен на случайном сайте, но запросов к серверу нет.

HTML-код:

 <html>
    <head>
    <script src="dash.all.debug.js"></script>
    <script>
        (function(){
            var url = "http://dash.edgesuite.net/envivio/Envivio-dash2/manifest.mpd";
            var player = dashjs.MediaPlayer().create(); 
            player.initialize(document.querySelector("#videoPlayer"), url, true);
        })();
    </script>
    </head>
    <body>
    <img src="Soranin.jpg" alt="not found" height=500>


    video:
    <video id="videoPlayer" src="media/movies/Demo/video.mpd" type="application/dash+xml"></video>
    </body>
</html>

В журнале консоли написано

[10] [dash.js 2.6.8] MediaPlayer has been initialized 

так что-то где-то должно работать, верно? Что мне не хватает?


person Neywiny    schedule 18.04.2018    source источник


Ответы (1)


Здесь есть пара проблем.

Основная проблема заключается в том, что querySelector в скрипте, инициализирующем проигрыватель, возвращает null, потому что скрипт запускается до того, как DOM будет готов. Переместите этот скрипт в конец тела, чтобы решить эту проблему, или убедитесь, что скрипт запускается, когда DOM готов, а не сразу.

Во-вторых, невозможно установить в качестве источника манифест DASH и получить воспроизведение видео, поскольку большинство браузеров (кроме Edge) не поддерживают собственное воспроизведение DASH. Если бы это было так, вам не понадобился бы dash.js. Удалите атрибуты src и type из тега видео и установите переменную url в приведенном выше сценарии инициализации на URL-адрес манифеста.

Подпишитесь на https://github.com/Dash-Industry-Forum/dash.js/#standard-setup для получения подробных инструкций. Существует также очень простая версия, в которой вам не нужно писать код: https://github.com/Dash-Industry-Forum/dash.js/#quick-start-for-users.

person Anonymous Coward    schedule 19.04.2018
comment
Спасибо. Я последовал этому, и, похоже, это сработало для чьего-то другого манифеста. Однако, когда я добавляю свой манифест, он говорит, что [ScheduleController][video] запуск запрещен и то же самое для аудио. Он получил все необходимые данные (я думаю), так что проблем быть не должно, верно? Я продолжу поиск и проверю, что весь файл был отправлен. - person Neywiny; 19.04.2018
comment
Да, я пытаюсь заставить это работать, и он продолжает запрашивать байты за пределами диапазона файла, и я не знаю, почему. Я продолжаю отправлять обратно 416 ошибок, пока он не остановится, но потом ничего. - person Neywiny; 20.04.2018
comment
Наиболее вероятная причина, по которой проигрыватель будет запрашивать диапазоны вне файла, заключается в том, что манифест неверен :-) - person Anonymous Coward; 20.04.2018
comment
Спасибо. Я так и думал, но нигде в манифесте не могу найти длину файла в байтах? Например, хром явно запрашивает остановку после окончания своих запросов, например. 1500-3000/2000 И продолжительность правильная. Мне нужно больше точности, чем секунды? - person Neywiny; 21.04.2018