Moodle plays video, but it does not do much with it. Upload a lecture and Moodle stores the file, serves it as-is, and records that the activity was opened. It does not stream adaptively, protect the file, caption it, or tell you whether a student watched ten minutes or ten seconds. The FastPix Moodle video plugin fills that gap, and it installs straight from the Moodle Plugins Directory.
TL;DR
- What it is: a four-plugin family that connects Moodle to FastPix for hosting, streaming, captions, and analytics.
- What it does that Moodle can't: adaptive playback, auto-captions, DRM, and completion based on the seconds a student actually watched, written to the gradebook.
- Install: from the Moodle Plugins Directory or a ZIP, foundation plugin first. About 15 minutes for a site admin.
- Cost: the plugins are free and open source; you pay FastPix usage-based pricing for the video (storage and delivery), with a free tier to start.
- Requirements: a Moodle site administrator account, Moodle 4.5 LTS or later, PHP 8.1 or later, and a shared cache (Redis, Memcached, or the file store).
What the FastPix Moodle plugin is
It is not one plugin. It is a small family of four, each doing one job, so you install only the parts you need. The foundation is `local_fastpix`, which holds your credentials, the connection to FastPix, the webhook endpoint, and token signing. `mod_fastpix` is the FastPix Video activity teachers add to a course; it handles upload, playback, and graded or completion-tracked video. `filter_fastpix` turns a short code into a player anywhere Moodle renders rich text, and `tiny_fastpix` adds an Insert FastPix Video button to the editor.
1flowchart TD
2 A["local_fastpix<br/>foundation: gateway, webhooks, token signing"] --> B["mod_fastpix<br/>FastPix Video activity: upload, completion, gradebook"]
3 A --> C["filter_fastpix<br/>short-code embeds in rich text"]
4 A --> D["tiny_fastpix<br/>Insert FastPix Video button"]
5 B --> C
6 B --> D
7 style A fill:#14CC80,color:#ffffff
8 style B fill:#5D09C7,color:#ffffff
9 style C fill:#F0EAF5,color:#000000
10 style D fill:#F0EAF5,color:#000000Install in this order only: `local_fastpix`, then `mod_fastpix`, then `filter_fastpix`, then `tiny_fastpix`. Each depends on the ones before it, and Moodle enforces the dependencies for you.
What the FastPix Moodle plugin does
The plugin is built around the things a course actually needs from video, beyond just playing it.
Upload without the storage penalty. Videos upload in resumable chunks straight to FastPix, so a large lecture recording survives a flaky connection and never lands in Moodle's own storage or its backups. FastPix transcodes each one into an adaptive stream.
Adaptive playback on any device. The video plays through an adaptive player that adjusts to the viewer's network, so a student on mobile data and one on campus fibre both get a clean stream. This is the Moodle video player experience people expect and Moodle's raw file delivery does not provide.
Completion based on real watch time. The FastPix Video activity tracks coverage, the unique seconds a student actually watched, deduplicated. Skipping to the end does not count. When coverage crosses the threshold you set (90% by default), Moodle marks the activity complete and writes the grade. Six server-side checks catch the obvious gaming, and a no-seek option blocks forward skips for strict assessments.
Captions in the spoken language. Turn captions on and FastPix transcribes the audio (English, Spanish, Italian, Portuguese, German, and French fully, more in beta), or upload your own WebVTT. See auto-captioning Moodle course videos for the full picture.
Protection when content needs it. Each video carries an access policy: public, private with signed playback tokens, or DRM with Widevine and FairPlay for paid or confidential material.
Embeds beyond activities. A welcome clip on a course summary or a quick answer in a forum does not need its own activity; the short code or the TinyMCE button drops a player in place.
A watch report for teachers. Unique viewers, average watched percentage, completion rate, the biggest drop-off point, and a per-student breakdown, exportable to CSV.
FastPix vs Moodle's native video
Moodle has two built-in ways to put video in a course, and both have a ceiling.
Uploading the file into Moodle works for one short clip. At scale it hits Moodle's upload size limit, inflates your backups, serves a single heavy file with no adaptive streaming, and offers no analytics. Completion is view-based, so opening the activity marks it done whether or not anyone watched.
Embedding a YouTube or external link is free and instant, but it moves your course content onto a public platform outside the private course boundary, brings that platform's ads and recommendations, and gives you no completion tracking tied to the learner.
The plugin removes both ceilings: the video lives on FastPix instead of in your backups, it streams adaptively, it stays private or DRM-protected when you need it, and completion is measured on real watch coverage and written to the gradebook. You keep Moodle for what it is good at, the course and the grading, and let FastPix handle the video.
How to install, use, and grade
A first install takes a site administrator about 15 minutes; after that, teachers add videos on their own.
Step 1: Install the plugins
In Site administration > Plugins > Install plugins, search the Moodle Plugins Directory for FastPix. You will see the family: FastPix Video (mod_fastpix), FastPix (local_fastpix), and FastPix video embeds (filter_fastpix), plus the editor picker.

The FastPix plugin family in the Moodle Plugins Directory. (Screenshot to add.)
Open the foundation plugin and use Install now to push it to a registered site, or Download for the ZIP.

Or upload the ZIP yourself in the plugin installer. Install the four plugins in this order only: local_fastpix, then mod_fastpix, then filter_fastpix, then tiny_fastpix. Each one depends on the ones before it, so installing out of order fails; Moodle blocks an install that is missing a dependency.

Step 2: Connect FastPix and configure
Go to Site administration > Server and click FastPix.
In the FastPix Dashboard, open Access Tokens, generate a token, and copy the Access token ID and Secret Key.

Paste them into the API credentials on the Moodle settings page and select Test connection.

Set the upload defaults: the default access policy, maximum resolution, and the public health endpoint.

Set retention and cleanup: how long abandoned uploads and unattached videos live before they are swept.

Turn on DRM only if you need it, with a DRM Configuration ID. Full setup is in Set up DRM encryption.
Register the webhook so Moodle learns when a video finishes processing. Copy the webhook URL from Moodle into the FastPix Dashboard's Webhooks, generate the webhook, and reveal its signing secret.


Paste the signing secret into Moodle and select Save changes first. The webhook and the Send test event button only start working once the settings are saved, so save before you test, then send a test event to confirm the pipeline end to end.
Step 3: Add a course and a FastPix video
Create the course the standard Moodle way (see Adding a new course).
On the course page, turn on Edit mode, select the plus icon in a section, and choose Activity or resource.


Choose FastPix Video from the activity chooser.

Name the activity, then in Media settings set the access policy and turn on caption auto-generation if you want it.


In Video source, upload a file or paste a video URL, and under Playback options set behaviour like disable seeking or show captions by default.

Step 4: Track completion and grade
Under Completion conditions, choose Add requirements, turn on Students must watch the video with a percentage, and add Receive a grade. Save.

Students see the player with a "must watch at least 90%" note, and the activity is marked Completed once their watch coverage passes the threshold.

A grade is written only when a student meets the percentage, so the grader report reflects who genuinely watched.

How a K-12 provider set this up
The plugin came out of a real pattern. A FastPix client running K-12 education courses on Moodle wanted graded video without building and maintaining their own platform. Before the plugin, their options were the same two everyone has: upload files into Moodle, which bloated their site and gave no sense of who watched, or embed YouTube, which put school content on a public platform with no completion tracking.
With the plugin, the setup was the walkthrough above: an admin installed the four plugins, connected the FastPix account, and registered the webhook. After that, teachers add a FastPix Video activity, drop in a recording, set "students must watch 90%," and the gradebook fills itself in as students watch. The video lives on FastPix instead of in the school's Moodle backups, captions are generated on upload, and the completion data is real rather than a checkbox. The same work that used to mean stitching a video pipeline together by hand is now a few minutes per lesson.
FAQ
Is the FastPix Moodle plugin free?
The plugins are free and open source. You pay FastPix usage-based pricing for the video itself (storage and delivery), and there is a free tier to start, so you can test the whole flow before spending anything.
Which plugin do I actually need?
Start with local_fastpix; nothing works without it. Add mod_fastpix for upload, playback, and graded or completion-tracked video, which covers most course use. Add filter_fastpix and tiny_fastpix only if you also want quick embeds in forums, Pages, and summaries.
How is this different from just uploading a video to Moodle?
Moodle stores and plays the file but does not stream it adaptively, protect it, caption it, or track real watch time, and it bloats your backups. The plugin moves the video to FastPix, streams it adaptively, adds captions and DRM, and grades students on the seconds they actually watched.
Does it track real watch time or just whether the video was opened?
Real watch time. Completion is based on coverage, the unique seconds a student watched, deduplicated, so skipping to the end does not count toward the grade.
Can I protect paid or confidential course videos?
Yes. Set the access policy to private for signed-token playback, or DRM for Widevine and FairPlay. DRM is per video, so you only pay for protection where you need it.
