Создаём локальный видеохостинг. Часть 2: Тестирование
Во второй части рассмотрим различные библиотеки видеоплееров и сделаем некоторые выводы по проделанной работе.
3К открытий3К показов
Максим Кузнецов
Senior Python Developer в Akvelon
В данной статье я рассмотрю различные библиотеки видеоплееров и сделаю некоторые выводы по проделанной работе. Ссылка на репозиторий.
Используемые библиотеки:
- Plyr;
- VideoJs;
- MediaElement;
- HTML5 Video (стандартный тэг HTML5).
Выбор пал именно на эти библиотеки путём небольшого опроса фронтендеров и запросов в гугле.
Первый вывод, ни один плеер не справился с задачей воспросизведения AVI формата. Также здесь был применён обход и попытка использовать wasm-ffmpeg для декодирования на странице в mp4 формат. Сcылка на проект.
Решение рабочее, но для больших видеофайлов занимает очень много времени. Также были рассмотрены решения с декодированием частями, что тоже не удовлетворяет требованиям и требует очень много ресурсов от клиента.
Также немного были оформленны страницы. Каждый плеер находится на своей странице, чтобы избежать одновременной предзагрузки видео.
Требования к системе возрастают
При попытке развернуть на 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, поэтому если вас заинтересует эта тема, в следующей части я могу подробнее описать как он работает и как это может быть применено.
3К открытий3К показов