Overview
:::info Source
Sourced from services/media-service/SERVICE_OVERVIEW.md in the documentation repo.
:::
1. Purpose
Media asset management: upload, AV scan, transcode, caption, subtitle, variant generation; AI image/audio generation and auto-captioning/transcription.
2. Bounded Context
Media (Generic). UL: MediaAsset, AssetVariant, TranscodeJob, CaptionTrack, SubtitleTrack, AIMediaArtifact.
3. Responsibilities
- Signed-URL uploads; multipart for large files.
- AV + content-safety scan before asset becomes addressable.
- Transcode video to ABR ladders (HLS/DASH); audio variants.
- Caption (STT) and transcript generation.
- AI image generation, AI TTS.
- Serve via CDN with signed URLs; per-tenant prefix.
- GDPR erasure + media retention policies.
4. Non-Responsibilities
- Does not own bundles (content-service does).
- Does not own player (delivery-service does).
- Does not grade (assessment).
5. Dependencies
- Upstream: authoring-service (uploads), delivery-service (caption requests), ai-gateway (image/TTS/STT).
- Downstream: content-service (bundle assets), search-service, analytics.
6. Slices
- S1 (M1): Upload + transcode for offline bundles.
- S2 (M2): Authoring integration.
- S4 (M3): AI image + TTS GA.
- S5 (M4): Advanced captioning + transcript search.
7. Architectural Freeze Points
- F24 — AssetReference schema: M1 start; additive only.
- F28 — CaptionTrack + Transcript schema: M3 start.
8. Key Invariants
- Asset lifecycle: uploading → scanning → transcoding → ready | failed | quarantined.
- Tenant-scoped storage prefix mandatory.
- Ready asset has ≥ 1 variant.
- Captions + transcripts tenant-scoped; never leak cross-tenant.