Protected video hosting for Teachable
Teachable is where the course lives — curriculum, checkout, student accounts. StreamVault is where the video lives when you need it protected: studio DRM on every plan, a moving identity watermark, signed playback URLs and a domain lock that makes the embed useless outside your school. This guide takes about ten minutes per school, not per lecture.
What you keep: Teachable checkout, members and lesson structure. What changes: the player inside the lesson. Teachable hosts lecture videos itself, without DRM, watermarking or signed playback.
DRM on every plan
Widevine, PlayReady and FairPlay from $12/mo, switched on per project. No enterprise contract.
Locked to your domains
Playback only on yourschool.teachable.com and your custom domain. A copied embed is inert elsewhere.
Watermark that names the viewer
A moving identity watermark on protected videos — leaked recordings carry the member's email.
Set-up in five steps
- 1
Allow your school's domains in StreamVault
In StreamVault go to Settings → Allowed Domains and add both your Teachable subdomain (for example yourschool.teachable.com) and your custom domain if you use one. Playback is refused everywhere else, including on a copied embed code.
- 2
Upload or import the videos
Drag the files into a project with Studio DRM switched on, or paste your Vimeo links on the import page and let StreamVault fetch and convert them. Subtitles are generated automatically.
- 3
Copy the embed code
Open the video, click Embed, and copy the responsive embed code. It is a standard iframe with allow="encrypted-media", which DRM playback requires.
- 4
Add it to the lecture
In the Teachable curriculum editor, open the lecture and add a Code block (Teachable's custom HTML block), then paste the embed code. Save and preview the lecture as a student — the player loads inside the lecture page.
- 5
Keep free previews native if you like
Lectures marked as free previews can stay on Teachable's own player; protection matters on the lectures people paid for. Mixing the two per lecture is fine.
The embed code, for reference
This is what StreamVault gives you per video. The allow attribute is what lets DRM play inside Teachable.
<div style="position:relative;padding-top:56.25%">
<iframe src="https://streamvault.one/embed/VIDEO_ID"
style="position:absolute;top:0;left:0;width:100%;height:100%;border:none"
allow="accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture"
allowfullscreen></iframe>
</div>Frequently asked questions
Does DRM work inside an embedded player?
Yes. The StreamVault embed code is an iframe with allow="encrypted-media", which is what browsers need to negotiate Widevine, PlayReady and FairPlay licences inside a third-party page. Chrome, Edge, Firefox, Safari and every iOS browser play protected video inside the lesson without a plugin.
Does StreamVault replace the platform's checkout or membership?
No, and it is not meant to. Your platform keeps taking payments and deciding who can open a lesson. StreamVault protects the video once someone is on that page: the domain lock stops the embed working anywhere else, signed URLs expire, and DRM stops downloads and blanks screen recorders. The two layers do different jobs.
Will the embed work on my custom domain and on the teachable.com address?
Only if both are in Allowed Domains. Students reach a Teachable school through whichever address you share, so list both; a domain that is not listed gets a clear "not permitted on this domain" message instead of the video.
I already have videos uploaded to the platform. Do I have to re-upload?
Upload the originals to StreamVault once (or paste Vimeo links and let the importer fetch them), then replace each lesson's video with the embed code. Your existing lesson structure, pricing and students are untouched — only the player inside the lesson changes.
Other platforms
Try it on one lesson
7-day trial, no card. Upload one video, embed it in Teachable, try to download it.