Video
Video without the YouTube tax — no ads, no recommendation rabbit hole, no "your video is unavailable in your region." Eduskript hosts your videos via Mux, which means adaptive streaming on every device, plus auto-generated subtitles. YouTube embeds are also supported, for material that already lives there.
Upload and embed
Drop an .mp4 or .mov file into your skript's Videos drawer. Mux processes it for adaptive streaming (this takes a minute or two for the first viewing — the file becomes available in the videos list with a "processing" indicator until ready).
Once ready, embed it in markdown like an image:

The video player gets:
- Poster (preview frame)
- Play / pause / scrubber
- Volume
- Captions toggle (auto-generated subtitles)
- Fullscreen
- Adaptive quality selection
All automatically. No configuration needed for any of it.
Custom thumbnails (posters)
By default, the poster is the very first frame of the video — which is often a black frame or a logo. Pick a better one by adding a markdown image-title:

The poster value can be:
- A filename of an image you've uploaded to the same skript (resolved like any other image)
- An absolute URL (
https://...) — used as-is
The same thing in HTML:
<muxvideo src="lecture.mp4" poster="thumbnail.jpg" />
Both syntaxes converge on the same player. If you don't specify a poster, the auto-generated Mux thumbnail (frame at time=0) is used as a fallback.
Auto-generated subtitles
Every uploaded video gets English subtitles auto-generated by Mux during processing. Students toggle them on with the captions button on the player. Multi-language subtitle support is on the roadmap.
If the auto-generated subtitles are wrong (technical jargon, accents), you can override by uploading a custom .vtt file via the Video panel's settings (per-video).
Inline playback flags
Two flags in the alt text change playback behavior:

autoplay— start playing on page load (muted, browser policy)loop— restart automatically when finished
Useful for short demo loops in the page background, intro animations, or visual hooks at the top of a lesson.
Adaptive streaming, every device
Mux automatically generates multiple quality renditions (240p, 480p, 720p, 1080p, 4K depending on source). The player picks the right quality based on the student's connection and device:
- Phone on cellular → 480p, ~1MB / minute
- Laptop on WiFi → 1080p, ~10MB / minute
- TV on fast WiFi → 4K, ~30MB / minute
Students can override via the player's quality menu if they want to force a specific resolution.
YouTube
For material that already lives on YouTube, embed it directly instead of re-uploading. The simplest form is a markdown image link where the URL is a YouTube link — the alt text becomes the caption:

?t=120 starts playback 120 seconds in.
The HTML form gives more explicit control:
<youtube id="dQw4w9WgXcQ" startTime={120} caption="Intro to recursion" />
or the underlying element it compiles to:
<youtube-embed data-id="dQw4w9WgXcQ" data-start-time="120" data-caption="Intro to recursion"></youtube-embed>
Use playlist (data-playlist on the underlying element) to embed a playlist instead of a single video.
Unlike Mux uploads, a YouTube embed pulls in YouTube's own player — ads, recommended-next-video, and any regional availability restrictions are YouTube's, not Eduskript's. Upload to Mux instead when you want full control over the viewing experience.
When to use video, when not to
Video shines for
- Step-by-step walkthroughs of complex procedures
- Lab demonstrations that can't be replicated digitally
- Instructor introductions for online/hybrid courses
- Anything that's genuinely a sequence of motions you need to see
Video doesn't shine for
- Static "talking head explains a concept" — text + diagrams + an interactive demo are usually more engaging and easier to update later
- Code walkthroughs — a live
python editor(where the student can pause, edit, run) beats watching someone type- Anything you might need to fix later — editing video takes 100x longer than editing markdown
Cost and storage
Videos count against your Mux usage (storage + minutes streamed). The free tier covers a fair amount of teaching content. For institutional usage with hundreds of videos, talk to your org admin about Mux billing tier.
Videos use the same content-addressed deduplication as files — if you upload the same video to two skripts, it's stored once.
YouTube embeds cost nothing on the Eduskript side — the video plays from YouTube's own infrastructure.
Video cheat sheet
| Goal | Syntax |
|---|---|
| Embed a Mux video |  |
| Custom poster from skript files |  |
| Custom poster from URL |  |
| Autoplay + loop (silent background) |  |
| Direct HTML form (Mux) | <muxvideo src="x.mp4" poster="thumb.jpg" ></muxvideo> |
| Embed a YouTube video |  |
| YouTube with explicit options | <youtube id="VIDEO_ID" startTime={120} caption="..." ></youtube> |
| YouTube playlist | <youtube id="VIDEO_ID" playlist="PLAYLIST_ID" ></youtube> |