Разработать video player для видеофайлов на сервере

Цена договорная
24 февраля 2021, 23:44 • 5 откликов • 48 просмотров
На сервере лежат видео-файлы.
Нужно написать
1) сервер, который будет отдавать список видео-файлов и сами эти файлы (прямые ссылки на них)
2) клиента, который будет получать от сервера список видео-файлов и будет их проигрывать
Вся система - публичная. Никой авторизации, пользователей, админки и т.д.

Детали сервера:
- Чем проще, тем лучше. Чем примитивней - тем лучше.
- Может быть PHP (предпочтительно), Java, NodeJS. Может быть и что-то другое по согласованию со мной. Python - не надо.
- Пользователь выкладывает видео-файлы самостоятельно, без участия сервера (например по rsync). Файлы могут меняться. Сервер просто отдаёт те файлы, что видит на диске в данный момент.
- На сервере не должно быть DB. Вся система - stateless. Может быть со временем будет добавлен какой-то кэш.
- Файлы лежат в иерархической файловой системе. Object Store использоваться НЕ БУДЕТ. Это будет что-то похожее на то, как Nginx отдаёт индекс файлов, например вот здесь: https://nazidanie.propovednik.com/. То есть файлы будут лежать в папках (folders).
- не видео-файлы - игнорировать. Определять - по расширению файла. Список поддерживаемых форматов можно взять здесь: https://en.wikipedia.org/wiki/HTML5_video#Browser_...

Детали клиента:
- Чем проще, тем лучше. Чем примитивней - тем лучше. Желательно без использования навороченных фрэймворков. В ответе напишите какой стек планируете использовать. Чем меньше зависимостей - тем лучше.
- клиент получает от сервера список файлов и папок и показыват этот список. Пользователь может
1) перейти в другую папку (это будет hyperlink на другую страницу).
2) проиграть любой отдельный видео-файл
3) проиграть все видео-файлы в текущей папке (не рекурсивно, то есть без подпапок).
- при проигрывании всех файлов должен показываться список проигрываемых файлов
- при проигрывании всех файлов нужны контролы:
a) PREV
b) NEXT
c) STOP/PLAY
d) SPEED: x0.5 / x1 / x1.5 / x2 / x3 (video.playbackRate)
- видео-player - HTML5-based.
- если есть несколько файлов с одинаковым именем, но с разными расширениями, то показывать надо только один елемент, и при проигрывании оба файла нужно отдать, чтобы браузер сам решил, какой играть, как описано вот здесь: https://en.wikipedia.org/wiki/HTML5_video#Multiple...
- UI: должен работать как на Desktop, так и на мобильниках

Общие требования:
- система должна поддерживать URL, которые соответствуют файловой структуре. что-то типа такого
www.videos.site/
www.videos.site/folder1/
www.videos.site/folder1/folder15/

При открытии такой ссылки - показывается список подпапок и видео-файлов в данной конкретной папке. А также контролы, что проиграть видео-файлы в этой папке.

Один из вариантов использования будет: сделать докер-контейнер этой системы. Примонтировать папку с видео-файлами, и отдавать видео-библиотеку через HTTP.

Во второй версии:
- Вместе со списком видео-файлов сервер будет отдавать иконки (thumbnails), взятые из видео-файлов. Это иконки надо будет как-то генерировать.
- Будут добавлены СОГЛАШЕНИЯ, что в конце имени файла можно добавить строки определяющие кодек или resolution. Например file1_720.mp4 и file2_1080.mp4. Пользователю тогда будет показан один элемент для этого файла, но в видео-плеере появится возможность выбрать разрешения (720 или 1080...). Или похожим образом file2_x264.mp4 и file2_x265.mp4. В этом случае надо будет добавить оба файла в видео-элемент с разным type, чтобы браузер сам решал, какой файл использовать.

Напишите вашу оценку для первой версии: или общую, или почасовую и количество часов.