Сервис конвертации видео в «зеркала» для AR-очков: одно видео (480p, H.264, без звука) + N аудиодорожек (Vorbis/ogg) отдельными файлами. Воркеры на GPU-машинах молотят очередь из Postgres, готовые файлы лежат в S3 (SeaweedFS).
## Базовый URL
| Окружение | URL |
|-----------|-----|
| Прод (из интернета) | `https://mirror.binom.pw` |
Сколько аудио — столько дорожек было в исходнике (все без исключения). Мета каждой дорожки (`title`, `language`) — в ответе `by-item`, берётся из ffprobe исходника.
## Скачивание файлов (S3)
Клиент качает файлы **напрямую из S3** (SeaweedFS), не через координатор:
Права клиентского ключа: **только чтение**`media/mirror/*` — писать/удалять/листать нельзя. Подписывать запросы по S3 SigV4 (AWS SDK, region `us-east-1`). Поддержка Range-запросов есть (видео можно качать/играть по кускам).
## Пример полного цикла клиента
```text
1. GET https://mirror.binom.pw/api/mirror/by-item/{itemId} [X-API-Key]
→ 404 → 2а
→ files → 4
2а. POST /api/mirror {"itemId": "..."} [X-API-Key]
2б. GET by-item, пока status != done (поллинг раз в 5-10с)
3. status == done → берём files.video.url + files.audios[].url
4. Качаем по url с mirror-client кредами (SigV4) → играем
(видео — на очки, выбранную аудио-дорожку — на телефон)
```
## Health
```
GET /actuator/health
```
Открыт без ключа. `{"status": "UP"}` — сервис жив.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.