Skip to content

потенциально слабо структурированное описание проекта

Notifications You must be signed in to change notification settings

kino-online/docs-public

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 

Repository files navigation

Описание

Онлайн кинотеатр, основной источник медиа - торрент.

Торренты качаются только локально, т.к. хостинги обычно запрещают bittorrent.

Для загрузки локальных файлов или архивных объектов использовать не торрент, а сразу s3.

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

Монетизация:

  • платный доступ в приватный кинотеатр
  • публикация в интернет на отдельный публичный домен для всех пользователей с рекламой на странице, без рекламы в самом видео
    • целого кинотеатра - сложно собрать материал, чтобы всем угодить, слишком большой объем
    • отдельных сериалов/серий фильмов/фильмографий актеров/режиссеров (отдельные домены/один домен)

Платформы

  • десктоп веб
  • андроид приложение
  • андроид ТВ приложение
  • мобильная веб версия - хотя бы для админки

Категории

  • фильмы
  • сериалы
  • мультфильмы
  • мультсериалы
  • документалки
  • аниме
  • тв шоу

Атрибуты каждого объекта

имя nullable
имя на русском not null
имя на английском nullable
имя на языке оригинала nullable
год выпуска not null
категория not null
вселенная nullable
список создателей nullable
список актёров nullable
рейтинг imdb nullable
рейтинг кинопоиска nullable
возрастное ограничение nullable
наличие матерных слов nullable
наличие насилия nullable

Вселенная - именованная или безымянная (именуется по первому фильму) Список создателей - с указанием типа -
режиссёры, продюсеры и т.д. Список актёров - с указанием типа -
игровые, актеры озвучки и т.д.

Атрибуты по категориям

  • сериалы:
  • кол-во сезонов с годами выхода, количеством серий и статусом (выходит, полностью вышел, запланирован)
  • документалки:
  • теги или произвольное описание темы/категории. желательно с выбором из существующих тегов/категорий. хранить отдельно для возможности изменения имени тега/категории

Дополнительные сущности

  • вселенные (Марвел/Гарри Поттер)
  • серии фильмов без названия (Сплит 2016 + 2 фильма 2000 и 2019)

Процесс добавления контента

  1. Скачивание торрента
  2. Преобразование файлов
  3. Загрузка в хранилище

или

  1. Распаковка локального архива с уже преобразованными файлами
  2. Загрузка в хранилище

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

Локальный архив - либо просто заранее подготовленные, либо ранее уже загруженные в кинотеатр медиа объекты, которые были удалены оттуда из-за ненадобности и/или дороговизны облачного хранилища. Сохранены локально, т.к. торрент раздачи с контентом могут стать когда-то недоступны, а хранить локально на обычных внешних дисках очень дешёво.

TODO

  • узнать поддерживаемые в video.js кодеки аудио и видео
  • освоить ffmpeg (перекодирование, нарезка, извлечение дорожек)
  • дополнить доку по основному процессу (из тегеграма)
  • дополнить доку по мониторингу (прометеус, спринг актуатор, bucket4j)

Потенциальный стек

  • java 17
  • vue 3
  • minio
  • docker compose
  • nginx
  • postgresql
  • ffmpeg
  • video.js videojs.com github
  • transmission - из-за наличия консольной версии и легкости

ffmpeg - подготовка медиа файлов

  • преобразование медиа файлов в формат HLS (формат m3u8 с мастер плейлистом)

Так как синтаксис ffmpeg довольно сложный (особенно для формирования master плейлиста из файла с несколькими дорожками аудио и субтитров), есть вариант использовать ffmpeg только для преобразования каждой дорожки отдельно в формат hls (нарезка на маленькие файлы и формирования списка в m3u8 файле), а master плейлист со всеми дорожками собирать уже вручную (может быть отдельный командой в ffmpeg если в нём есть такой функционал)

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

Так же полезно будет почитать FFmpeg libav

video.js - веб медиа плеер

  • умеет подгружать видео частями
    • даже если дать ссылку на один видео файл, его тоже будет грузить частями
  • умеет переключать аудио и субтитры
  • поддерживает кастомизацию
  • использует базовые html элементы
  • умеет в потоковое аудио???

transmission - торрент клиент

Инфраструктура

Хранилище медиа файлов для чтения на клиенте

  • должно хватить производительности s3 (multi node minio)
  • получение через апи:
    • с перенаправлением 301 на публичный s3 (непосредственно файлы качает сам клиент)
    • для регулирования расположения файлов, т.к. несколько инстансов s3

Дополнительно:

  • держать файлы сжатыми и производить декомпрессию на лету? через gzip
  • возможно ли такие разжимать файлы на клиенте???

Заметки

About

потенциально слабо структурированное описание проекта

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published