Skip to content
Novus Examples
webm40.8 KB

Multi-Track Subtitles — Embedded WebVTT (WebM)

WebVTT muxed inside a WebM container, which the Matroska specification allows and almost nothing consumes. No browser surfaces an embedded WebVTT track through the HTML TextTrack API — the web platform expects a separate <track> element pointing at a sidecar file — so this is the fixture for the gap between what a container is permitted to hold and what a player will actually give you. One caveat about this file specifically. Every other fixture in this phase carries byte-identical H.264 video, but the WebM muxer accepts only VP8, VP9 or AV1 video and WebVTT subtitles — that restriction is the container's definition, not a limitation of the tooling — so the picture here is re-encoded to VP9 from the same source frames. Same content, different bytes.

Browser-playable test video · 7.999 seconds

Specifications

Subtitle Tracks
1
Subtitle Codec
WebVTT (D_WEBVTT/SUBTITLES)
Video Codec
VP9 — re-encoded, not remuxed like the rest of this group
Browser Support
no browser exposes embedded WebVTT tracks natively
Cues
8
Duration
8s

Testing contract

Expected to pass
Scenario
Open the WebM in a browser and try to expose its embedded subtitle track through the TextTrack API.
Expected result
1 WebVTT (D_WEBVTT/SUBTITLES) track of 8 cues alongside VP9 video - re-encoded rather than remuxed like the rest of this group. The assertion is a negative one: no browser exposes embedded WebVTT tracks natively, so the track is visible to ffprobe and invisible to the page, and captions must be attached as a separate <track> element.

What is a .webm file?

WebM is a deliberately narrow profile of Matroska, restricted to codecs anyone may implement royalty-free. It keeps Matroska's EBML structure but permits only VP8, VP9, or AV1 video with Vorbis or Opus audio, which is what made it the open counterpart to MP4 in an HTML5 `<video>` element. Google announced it at I/O in 2010 alongside the newly open-sourced VP8 and added VP9 and Opus in 2013. That restriction is also its limit: a WebM cannot carry H.264 or AAC at all.

How to use this file

Use an example WebM to test HTML5 `<video>` playback, EBML demuxing, and VP8/VP9 decoding, checking that a converter turning an MP4 into WebM re-encodes rather than attempting a stream copy, since neither H.264 nor AAC has any place in the container.

How to use this file for testing

“Multi-Track Subtitles — Embedded WebVTT (WebM)” is a deterministic Novus Examples fixture for Media accessibility, Subtitle testing, Subtitle parsing, Video QA. Containers carrying several subtitle and audio tracks at once, with real language tags and the default, forced, hearing-impaired and visual-impaired flags actually set, for testing track pickers, accessibility menus, and the flag handling that only shows up when more than one track exists.

Documented properties for this file: 8 cues · 8s. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.

Media fixtures are short and synthetic by design. Prefer waveform or transcript ground truth in the same group when measuring ASR, trim, upscale, or sync tools; do not assume broadcast-quality masters.

Code examples

<video controls preload="metadata" width="640" src="webm-webvtt.webm"></video>

Generated by generation/video_accessibility.py. Free for any use, no attribution required, license.