Skip to main content

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.