Обложка: Создаём локальный видеохостинг. Часть 2: Тестирование

Создаём локальный видеохостинг. Часть 2: Тестирование

Максим Кузнецов
Максим Кузнецов

Senior Python Developer в Akvelon

В данной статье я рассмотрю различные библиотеки видеоплееров и сделаю некоторые выводы по проделанной работе. Ссылка на репозиторий.

Используемые библиотеки:

  • Plyr;
  • VideoJs;
  • MediaElement;
  • HTML5 Video (стандартный тэг HTML5).

Выбор пал именно на эти библиотеки путём небольшого опроса фронтендеров и запросов в гугле.

Первый вывод, ни один плеер не справился с задачей воспросизведения AVI формата. Также здесь был применён обход и попытка использовать wasm-ffmpeg для декодирования на странице в mp4 формат. Сcылка на проект.

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

Также немного были оформленны страницы. Каждый плеер находится на своей странице, чтобы избежать одновременной предзагрузки видео.

Основной экран со списком видео

Страница с плеером Plyr

Страница с плеером Video_js

Страница с плеером MediaElement

Страница со стандартным HTML5 плеером

Требования к системе возрастают

При попытке развернуть на Raspberry Pi Zero w, обнаружился неприятный просчёт со скоростью передачи данных. При попытке скачать файл через наш сервер скорость колебалась около 50 кб/с, чего явно недостаточно. Размер файла sample.mp4 — 18 МБ, для его передачи за время его воспроизведения потребуется поток не менее (18 * 1024 / 30 = 614.4 кб/с), что более чем в 12 раз меньше необходимого. Поэтому речи о том, чтобы смотреть видеопоток в режиме «реального времени» идти уже не может.

Для сравнения опубликовал данный репозиторий на heroku, и, чудо, оно работает с нормальной скоростью, после чего мы делаем вывод, что проблема в самом Raspberry Pi и его скорости работы. Но что меня удивило — использование оперативной памяти, в запущенным сервером и ssh сервером ~40 МБ оперативной памяти из 500. Тесторовал на дистрибутиве DietPi. Хотя в сравнении с Raspbian это позволяет выйграть нам лишние 40-50 МБ, что составляет 10% от всей доступной оперативной памяти.

На текущий момент в репозитории отсутствуют полноценные тесты с использованием wasm-ffmpeg, поэтому если вас заинтересует эта тема, в следующей части я могу подробнее описать как он работает и как это может быть применено.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации