Design Subtitles System

Medium40 min
1 / 30
understanding6 min read

Subtitles Context and Accessibility Mandate

How Subtitles Context and Accessibility Mandate (understanding) informs Subtitles System architecture and interviewer depth.

Subtitles Context and Accessibility Mandate

Problem framing

Design a global subtitle platform for YouTube/Netflix/Rev scale: timed text that is legally required in many markets, toggled per language, and cheap to deliver at billions of fetches per day.

Design choices
  1. Treat captions as first-class media assets, not player afterthoughts
  2. Anchor on 500M catalog videos with ~40% having ≥1 published track
  3. Target p95 track manifest load < 80ms and ±40ms player sync tolerance
  4. Tier automation: ASR draft → MT locale → human QC by content risk
Deep dive

Personas: deaf/hard-of-hearing viewers needing SDH, international viewers needing translation, creators uploading community captions, compliance officers auditing WCAG/FCC coverage. Success = accurate timing, fast publish after upload, and CDN-friendly read path.

Operational detail
  • WCAG 2.1 expects captions for prerecorded video with few exceptions
  • FCC CVAA influences US streaming compliance timelines
  • YouTube popularized community contribution with owner publish gate
  • Netflix ships forced narrative (FN) separate from SDH tracks
  • Rev sells human transcription SLAs for premium accuracy
  • Soft subs enable language toggle without re-encoding mezzanine
  • Interviewers probe whether you separate ingest, edit, and delivery
  • Caption traffic is read-heavy; pipeline is write-bursty on upload
  • Accessibility defects create regulatory and brand risk, not just UX bugs
  • Frame-accurate timing matters for fast dialogue and music lyrics
  • Kids content may require stricter human review before auto-publish
  • Live captions differ from VOD—defer unless interviewer asks
  • Clarify OTT web/TV scope vs broadcast encoder burn-in early
  • State catalog scale before drawing microservices
  • Quantify daily caption fetches separately from video segment QPS
  • Call out immutable revisions for safe rollback after bad publish
  • Mention drift when audio master changes after caption publish
  • Position FinOps: storage per language revision vs CDN egress
  • Note search/indexing as optional extension, not MVP blocker
  • Success metric: percent videos with compliant captions per locale
  • Anti-goal: burning 40 languages into every mezzanine encode
  • Anti-goal: blocking play on ASR failure—degrade gracefully
javaOne Dark Pro
1public final class CueWindow {
2 private final double startSec;
3 private final double endSec;
4 private final String text;
5 public boolean activeAt(double playheadSec) {
6 return playheadSec >= startSec && playheadSec < endSec;
7 }
8}
pythonOne Dark Pro
1from dataclasses import dataclass
2
3@dataclass(frozen=True)
4class CaptionCue:
5 start_ms: int
6 end_ms: int
7 text: str
8
9def active_cue(cues: list[CaptionCue], t_ms: int) -> CaptionCue | None:
10 return next((c for c in cues if c.start_ms <= t_ms < c.end_ms), None)
typescriptOne Dark Pro
1interface CaptionTrack {
2 videoId: string;
3 language: string;
4 revision: number;
5 vttUrl: string;
6}
7
8export function pickTrack(
9 tracks: CaptionTrack[],
10 preferredLang: string,
11): CaptionTrack | undefined {
12 return tracks.find((t) => t.language === preferredLang) ?? tracks[0];
13}
Interviewer positioning

Open with accessibility mandate and scale numbers before APIs; interviewers reward measurable NFRs early.

Why interviewers care

Subtitles System interviews reward crisp scope, explicit trade-offs, and failure stories—not generic microservice diagrams.

Interview checkpoint

Name one failure story for Subtitles Context and Accessibility Mandate that proves you understand real outages, not happy-path diagrams.

Key Highlights

  • Sidecar WebVTT decouples languages from video encode
  • Immutable revisions enable safe publish/rollback
  • ASR+MT+human review tiered by content risk class
Interview Tip
State cue-fetch QPS and p95 manifest latency before drawing boxes.
What Impresses
Immutable track revisions, sidecar WebVTT on CDN, and drift correction hooks.
Avoid This
Do not burn subtitles into mezzanine for every language at upload time.

Section Rescue Kit

Buzzwords to use:

WebVTTForced narrative

Safe statements:

  • "I will separate ASR draft quality from published track pointers."
  • "Let me quantify caption fetch QPS separately from video segment traffic."
Design Subtitles System - System Design | WinJob | WinJob