# Proposal ## Why Альбом задуман как общее пространство для медиа семьи или команды, но сегодня принимает только изображения: загрузка отклоняет всё, что не `image/*`, генерация вариантов и вьюер работают исключительно с картинками. Видео с телефонов и камер остаётся вне системы — теряется в мессенджерах и разрывает контекст альбома. Пользователю нужно загружать видео в те же альбомы и гарантированно воспроизводить его в браузере. ## What Changes - Загрузка видео в альбом наравне с фото: стриминг multipart, отдельный лимит 2 ГБ (картинки остаются 100 МБ). - Сущность фото становится медиа-записью: `kind` (`image` | `video`), `duration_ms`, `playback_url`; набор ролей объекта пополняется ролью `playback`. - Асинхронная подготовка видео в фоне: извлечение метаданных (ffprobe), постер-кадр (переиспользует существующую генерацию WebP-вариантов thumb/medium/preview) и воспроизводимый mp4 — remux без перекодирования для web-совместимых источников, иначе транскод в h264/yuv420p/aac с `faststart`. - Очередь заданий различает вид задачи и отделяет длительные (транскод) задания от коротких (картинки): длительный лизинг, таймаут и отдельный малый пул, чтобы транскод не вытеснял генерацию вариантов изображений. - Внешняя зависимость `ffmpeg`/`ffprobe` (без Docker — бинарник на хосте): путь конфигурируется, доступность отражается в health, при отсутствии видео-функции отключаются. - UI: плеер `