У меня есть 2 видео, размещенных на сервере.
В браузере Chromium (версия 65.0.3325.181) загружается https://server/index.html.
Используя Javascript, после window.onload вставляются 2 видеоэлемента и запускается 1-й.
Оба вставлены как:
let video = document.createElement('video');
video.setAttribute('width', '100%');
video.setAttribute('height', '100%');
video.setAttribute('preload', 'auto');
let source = document.createElement('source');
source.setAttribute('src', <http://server/video/path>);
source.setAttribute('type', 'video/mp4');
video.appendChild(source);
После завершения video.on('закончено') элемент видео становится скрытым. И следующий элемент видео становится видимым и запущенным.
Все отлично работает
Создано и скрыто 2 видеоэлемента. 1-й элемент видео сразу же запустился и начал воспроизводиться. 1-й видео закончилось - оно стало скрытым. Второе видео стало видимым и запущено... успешно достигло своего конца и снова скрылось...
затем начните снова с 1-го видео...
У меня есть следующие наблюдения.
Первое видео всегда воспроизводится плавно после первоначального кэширования.
Второе видео всегда проигрывается с глюками и зависаниями на несколько миллисекунд.
Я использую Chromium на Raspberry Pi 3.
Когда начинается первое видео: процессор как 40-50-60%
Каждый раз, когда начинается второе видео: загрузка процессора составляет 120-220%, с глюками и зависаниями.
Проблема не связана с видео или кодированием, потому что, когда я меняюсь местами: новое 2-е видео (которое было 1-м ранее) становится проблематичным. Всегда второе видео!
Почему это может быть? Можете ли вы дать мне некоторую подсказку или направление, что это может быть?
Одной из возможных причин является то, что в первом видео используется встроенный в Broadcom HW декодирование видео Broadcom PI Raspberry PI, а во втором - использование SW-декодирования.
То же самое можно наблюдать на многих компьютерах, если вы воспроизводите несколько видео и превышаете возможности декодирования, которые платформа может обрабатывать в HW - типичный подход заключается в том, чтобы использовать некоторую форму декодирования ПО или, возможно, просто отдать приоритет первому видео ( с) играть.