Как автоматически переключать разрешение видео в зависимости от скорости интернета?

Есть небольшая страничка с платным контентом в виде видеороликов.
Я разместил несколько видео на отдельном сервере с разрешением 1920px, скорость прекрасная, но если соединение у пользователя медленное, то видео конечно же начинает останавливаться каждые несколько секунд.

Самыйпростой способ решить эту проблему, это загрузить видео на платный хостинг типа JWplayer там видео сразу преобразуется в разные форматы, дается плеер и при воспроизведении автоматически выбирается качество видео в зависимости от скорости соединения. Но не совсем всё хорошо, потому что даже на хорошем соединении у пользователя видео начинает переключаться то на 180px, то на 720 и выглядит это не очень стабильно.

Следующий вариант, который мне пришел в голову это загурзить всё-таки на свой сервер, но уже несколько файлов с разными разрешениями (480, 720, 1920)
Но теперь вопрос, как заставить переключаться между ними?
Можно это сделать на JS в зависимости от разрешения экрана и для мобильных включать видео 480px, но это не совсем то потому что у кого-то может и дома на большом мониторе быть мдленное соединение.

Есть ли какие-то решения? Может быть какой-нибудь видео-плеер на JS умеет отслеживать загрузку и переключать разрешение или есть какое-то более лучшее решение этой проблемы?
  • Вопрос задан
  • 576 просмотров
Пригласить эксперта
Ответы на вопрос 3
olejkazubov
@olejkazubov
SpaseInvader
Почему бы просто не использовать в качестве хостинга YouTube или Vimeo?) Там есть необходимый функционал и при необходимости можно закрытый ак сделать (:
Ответ написан
Astatroth
@Astatroth
Я тут случайно
Конвертируйте свои видео в HLS, современные плееры типа videojs, поддерживают стриминг HLS
Ответ написан
Комментировать
dimasmagadan
@dimasmagadan
единственно надежный и реализуемый способ - разместить видео на специальном хостинге типо ютуба и прочего

другой вариант, использовать сервисы типо https://www.wowza.com
но это сложнее в настройке

если вам достаточно будет на фронте смотреть сеть пользователя, можно взять что-то такое
const connection = window.navigator.connection.effectiveType;
if ((connection === '4g' && likelihood > .25) ||
    (connection === '3g' && likelihood > .5) ||
    (connection === '2g' && likelihood > .75)) {
  // грузим разные большие файлы
} else {
  // грузим маленький файл или ничего не грузим
}

но это сработает не во всех браузерах

или попробуйте, как советуют в другом ответе, HLS
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 нояб. 2024, в 15:52
3000 руб./за проект
25 нояб. 2024, в 15:43
1500 руб./за проект