feat(video): add video upload with remux/transcode playback
Add video as a media kind in photos: streaming upload with per-kind limits, ffprobe metadata, poster frame reusing the image variant pipeline, and a playback object (remux when web-compatible, else h264/yuv420p/aac transcode). Video jobs run on a separate pool with a long lease. Frontend gains a video viewer, grid badge/duration and video upload.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# Spec Delta
|
||||
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Загрузка фотографий из рабочего стола
|
||||
Загрузка SHALL запускаться действием в тулбаре; перетаскивание файлов над альбомом SHALL
|
||||
показывать оверлей и загружать их; пустой альбом SHALL показывать подсказку-зону загрузки.
|
||||
Загрузка SHALL быть доступна только ролям с правом загрузки; принимать SHALL изображения и
|
||||
видео.
|
||||
|
||||
#### Scenario: Перетаскивание
|
||||
- **WHEN** пользователь с правом загрузки перетаскивает файлы над альбомом
|
||||
- **THEN** показывается оверлей загрузки, и файлы загружаются
|
||||
|
||||
#### Scenario: Пустой альбом
|
||||
- **WHEN** пользователь открывает альбом без фото и имеет право загрузки
|
||||
- **THEN** в центре показана зона-подсказка загрузки
|
||||
|
||||
#### Scenario: Загрузка видео
|
||||
- **WHEN** пользователь с правом загрузки выбирает или перетаскивает видеофайл
|
||||
- **THEN** видео загружается в альбом наравне с изображениями
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Воспроизведение видео в просмотре
|
||||
Видео в режиме просмотра SHALL воспроизводиться встроенным плеером с нативными контролами и
|
||||
постером до готовности варианта; зум, панорамирование и режим панорамы SHALL к видео не
|
||||
применяться, а действия скачивания, переноса, копирования и удаления SHALL оставаться доступными.
|
||||
|
||||
#### Scenario: Плеер
|
||||
- **WHEN** пользователь открывает видео в режиме просмотра
|
||||
- **THEN** показывается встроенный плеер, а до готовности варианта — постер
|
||||
|
||||
#### Scenario: Перемотка
|
||||
- **WHEN** пользователь перематывает воспроизведение
|
||||
- **THEN** плеер показывает запрошенный момент видео
|
||||
|
||||
#### Scenario: Готовность на лету
|
||||
- **WHEN** вариант видео становится готов, пока просмотр открыт
|
||||
- **THEN** плеер становится доступен без перезагрузки страницы
|
||||
|
||||
#### Scenario: Действия над видео
|
||||
- **WHEN** открыто видео в режиме просмотра
|
||||
- **THEN** доступны скачивание оригинала, перенос, копирование и удаление по правам
|
||||
|
||||
### Requirement: Плитка видео в сетке
|
||||
Плитка видео в сетке SHALL показывать постер, признак видео и длительность; открытие плитки
|
||||
SHALL открывать режим просмотра.
|
||||
|
||||
#### Scenario: Постер и признак
|
||||
- **WHEN** видео показано в сетке
|
||||
- **THEN** плитка показывает постер, значок воспроизведения и длительность
|
||||
|
||||
#### Scenario: Постер не готов
|
||||
- **WHEN** постер ещё не готов
|
||||
- **THEN** плитка показывает плейсхолдер и сетка отображается корректно
|
||||
|
||||
#### Scenario: Открытие из сетки
|
||||
- **WHEN** пользователь открывает плитку видео
|
||||
- **THEN** открывается режим просмотра видео
|
||||
Reference in New Issue
Block a user