Загрузка данных
# Техническое задание на проект «Dub Online»
## 1. Общее описание проекта
### 1.1. Назначение
**Dub Online** — веб-платформа для совместного и индивидуального озвучивания видеоматериалов. Пользователь загружает готовые dub-паки (файлы с нарезанными фрагментами видео и субтитрами с таймингами) или создаёт собственные, а затем озвучивает их — самостоятельно или совместно с другими пользователями в режиме реального времени через сетевые лобби.
### 1.2. Целевая аудитория
- Любители фанатского дубляжа и озвучки
- Команды переводчиков и дикторов-любителей
- Пользователи, желающие потренироваться в озвучке в игровой форме
- Сообщества, занимающиеся локализацией видео
### 1.3. Платформа и доступность
Сайт реализуется как веб-приложение с адаптивной вёрсткой под мобильные устройства. Доступ возможен с ПК, планшетов и смартфонов.
---
## 2. Функциональные требования
### 2.1. Регистрация и авторизация
- Регистрация по электронной почте с подтверждением
- Авторизация по логину/паролю
- Восстановление пароля
- Разделение ролей: **Пользователь** и **Администратор**
### 2.2. Каталог даб-паков
#### Главная страница
- Витрина готовых даб-паков, загруженных администратором
- Карточки паков с превью, названием, тематикой, рейтингом
- Сортировка по:
- популярности (по количеству озвучек и оценкам)
- тематике (категории/теги)
- Поиск по названию
#### Страница даб-пака
- Просмотр информации о паке: описание, тематика, длительность, количество фрагментов
- Оценка пака по шкале (например, 1–5 звёзд)
- Раздел комментариев с возможностью отвечать на другие комментарии (древовидная структура)
- Кнопки: «Озвучить в одиночку», «Создать лобби», «Скачать»
### 2.3. Студия дубляжа
Студия дубляжа — основной рабочий интерфейс для озвучивания даб-паков. Доступна в двух режимах: одиночном и сетевом (через лобби).
#### Базовый функционал (бесплатный)
| Функция | Описание |
|---|---|
| Воспроизведение фрагментов | Последовательный показ видеофрагментов с субтитрами |
| Отсчёт до начала записи | Обратный отсчёт (3–2–1) перед стартом записи голоса |
| Запись голоса | Запись с микрофона с привязкой к таймингу фрагмента |
| Встроенный переводчик | Перевод субтитров с любого языка на русский |
| Воспроизведение результата | Прослушивание записанной дорожки поверх оригинальной |
| Нормализация звука | Автоматическая подстройка громкости записанной дорожки относительно оригинальной |
| Экспорт результата | Скачивание готового видео с наложенной озвучкой или отдельной аудиодорожки |
#### Продвинутый функционал (PRO)
| Функция | Описание |
|---|---|
| Обрезка звуковой дорожки | Разделение дорожки на фрагменты с перетаскиванием границ (drag-and-drop) |
| Удаление фрагментов | Удаление отдельных участков звуковой дорожки |
| Сдвиг всей дорожки | Смещение записанной дорожки по таймингу для синхронизации |
| Ручная нормализация | Тонкая настройка уровней громкости по фрагментам |
#### Сетевой режим (лобби)
- Создание лобби: выбор даб-пака, настройка количества участников
- Подключение к лобби по ссылке или коду
- Распределение ролей/фрагментов между участниками
- Синхронизация воспроизведения между участниками
- Запись голосов каждого участника с наложением в общий микс
- Чат внутри лобби (текстовый)
### 2.4. Студия создания паков
Отдельная страница, доступная только пользователям с подпиской PRO. Предназначена для создания собственных даб-паков из произвольных медиафайлов.
#### Процесс создания
1. **Загрузка исходного файла** — пользователь загружает видеофайл
2. **Разбиение звуковой дорожки** — разделение дорожки на голосовые и шумовые/музыкальные компоненты
3. **Нарезка на фрагменты** — разбиение видео на фрагменты по таймингу (с возможностью перетаскивания границ)
4. **Подстановка субтитров** — если файл субтитров (.srt) не предоставлен, пользователь может создать субтитры вручную с привязкой к фрагментам
5. **Экспорт даб-пака** — упаковка фрагментов, субтитров и таймингов в единый даб-пак
### 2.5. Озвучка произвольных медиафайлов
- Пользователь может загрузить любой видеофайл и файл субтитров в формате .srt
- Система автоматически разбирает файл на фрагменты по таймингам субтитров
- Дальше работает стандартный процесс озвучки через студию дубляжа
- **Ограничение:** функция полностью недоступна без подписки PRO
### 2.6. Загрузка и скачивание
- **Скачивание готового результата**: видео с наложенной озвучкой или отдельная аудиодорожка
- **Загрузка даб-паков администратором**: через панель администратора с указанием атрибутов (название, тематика, описание)
- **Загрузка пользовательских даб-паков**: через студию создания паков (PRO)
---
## 3. Пользовательские роли
### 3.1. Пользователь (базовый)
| Возможность | Лимит (бесплатно) | Лимит (PRO) |
|---|---|---|
| Озвучка готовых даб-паков в одиночку | без ограничений | без ограничений |
| Онлайн-озвучка готовых паков (в лобби) | 10 в день | без ограничений |
| Озвучка своих даб-паков в одиночку | 10 в день | без ограничений |
| Онлайн-озвучка своих паков | 5 в день | без ограничений |
| Озвучка произвольных файлов с .srt | недоступно | без ограничений |
| Студия создания паков | недоступно | полный доступ |
| Продвинутые настройки студии дубляжа | недоступно | полный доступ |
**Дополнительно пользователь может:**
- Оценивать даб-паки (рейтинг по звёздам)
- Сортировать паки по популярности и тематике
- Оставлять комментарии и отвечать на чужие
- Создавать лобби для совместной озвучки
- Скачивать результаты озвучки
- Просматривать свой профиль и статистику
- Участвовать в рейтинговой системе
### 3.2. Администратор
- Загрузка новых даб-паков на главную страницу
- Редактирование даб-паков: изменение названия, атрибутов для сортировки, тематики
- Удаление даб-паков
- Модерация комментариев: удаление, редактирование
- Доступ ко всему функционалу пользователя
---
## 4. Рейтинговая система
### 4.1. Метрики качества
Система автоматически оценивает качество дубляжа по показателю **процент попадания в оригинальную звуковую дорожку** — то есть насколько по времени и уровню записанная речь совпадает с ожидаемыми таймингами оригинальной дорожки.
### 4.2. Лидерборд
Лидерборд формируется по двум показателям:
1. **Количественный показатель** — суммарное количество озвученных фрагментов, взвешенное по продолжительности озвучки
2. **Качественный показатель** — средний процент попадания в оригинальную дорожку
### 4.3. Награды
- **Топ-10** пользователей по каждому показателю получают:
- Специальный значок в мини-профиле
- Подписку PRO на 6 месяцев
---
## 5. Монетизация
### 5.1. Бесплатный доступ
Базовая озвучка готовых даб-паков в одиночку бесплатна и без ограничений. Все остальные функции ограничены лимитами (см. таблицу в разделе 3.1).
### 5.2. Подписка PRO
**Стоимость:**
| Период | Цена | Скидка |
|---|---|---|
| 1 месяц | 150 ₽ | — |
| 3 месяца | ~400 ₽ | ~11% |
| 6 месяцев | ~600 ₽ | ~33% |
| 12 месяцев | 799 ₽ | ~56% |
**Подписка PRO даёт:**
- Снятие всех дневных лимитов
- Полный доступ к студии создания даб-паков
- Доступ к озвучке произвольных файлов с .srt
- Продвинутые настройки студии дубляжа (обрезка, удаление фрагментов, сдвиг дорожки)
- Дополнительный значок в нике
- Дополнительные параметры кастомизации профиля
---
## 6. Структура страниц
| Страница | Описание |
|---|---|
| Главная | Витрина даб-паков, сортировка, поиск |
| Страница даб-пака | Информация, оценка, комментарии, кнопки озвучки |
| Студия дубляжа | Рабочий интерфейс озвучки (одиночно/онлайн) |
| Студия создания паков | Конструктор даб-паков (PRO) |
| Лобби | Комната для совместной озвучки |
| Профиль пользователя | Статистика, награды, история озвучек |
| Лидерборд | Рейтинговая таблица |
| Панель администратора | Управление паками, модерация комментариев |
| Регистрация/авторизация | Вход и регистрация |
---
## 7. Технические требования (предварительные)
- **Frontend:** SPA-приложение, адаптивная вёрстка (mobile-first)
- **Backend:** REST API, обработка медиафайлов на сервере
- **Хранилище медиа:** объектное хранилище для видеофайлов и даб-паков
- **WebRTC:** для синхронизации лобби и записи голоса в реальном времени
- **База данных:** реляционная (пользователи, паки, комментарии, рейтинги)
- **Переводчик:** интеграция с внешним API перевода
---
Это описание покрывает весь заявленный функционал. Если нужно, могу детализировать любой раздел — например, проработать сценарии взаимодействия в лобби, спецификацию формата даб-пака или ER-схему базы данных.