mod fastpix
| mod fastpix | |
|---|---|
| Type | Activity module |
| Set | N/A |
| Downloads | https://moodle.org/plugins/mod_fastpix |
| Issues | https://github.com/FastPix/moodle-mod_fastpix/issues |
| Discussion | https://github.com/FastPix/moodle-mod_fastpix/discussions |
| Maintainer(s) | Tharun Budidha (FastPix Inc) |
Plugins
- local_fastpix — foundation plugin
- mod_fastpix — FastPix Video activity
- filter_fastpix — video embeds filter
Resources
The mod_fastpix plugin adds a FastPix Video activity type to Moodle. Teachers can upload a video or pull one from a URL directly from a course, set a completion threshold based on how much of the video a learner has watched, and have Moodle write the grade automatically when the threshold is met.
It is a consumer plugin built on local_fastpix, which owns the FastPix credentials, the HTTP gateway, the asset cache, webhook ingestion, and playback-token signing. mod_fastpix never talks to FastPix directly — every video operation goes through local_fastpix. It provides the activity edit form, the player view, the watch tracker, the fraud checks, completion handling, gradebook integration, and backup and restore.
Requirements
Before you begin, make sure you have:
- A Moodle site running version 4.5 LTS or later.
- PHP 8.1 or later (tested through PHP 8.3).
- Site administrator access (to install) and editing-teacher access (to add activities).
- local_fastpix 1.0.0 or later, installed and connected to a FastPix account. The Test connection button on the FastPix settings page must return a green Authenticated result.
- A short test video (MP4, under 100 MB) for verification.
- Note: mod_fastpix cannot be installed standalone. Moodle blocks the install with a dependency error until local_fastpix is present. If you have not set up the foundation plugin yet, see local_fastpix first. The plugin has no runtime Composer dependencies.
Installation
The plugin follows standard Moodle installation guidelines. You can install it from the Moodle plugins directory or from a ZIP file.
Install from the Moodle plugins directory
- Sign in to Moodle as a site administrator.
- Go to Site administration -> Plugins -> Install plugins.
- Search for FastPix Video and follow the prompts.
Install from a ZIP file
- Download the latest release from the GitHub releases page.
- Sign in to Moodle as a site administrator.
- Go to Site administration -> Plugins -> Install plugins.
- Drag the ZIP onto the drop zone, or select Choose a file to upload it. Do not unzip the file first; Moodle installs the package directly from the ZIP.
- Select Install plugin from the ZIP file, then continue through the validation screen.
- On the Plugins requiring attention screen, select Upgrade Moodle database now.
- When the upgrade finishes, select Continue.
To confirm the install, go to Site administration -> Plugins -> Activity modules -> Manage activities. FastPix Video appears in the list. More information on how to install a plugin can be found here.
Adding a video activity
Teachers add videos directly from a course; no admin involvement is needed once local_fastpix is connected.
- Open a course and turn Edit mode on.
- Select Add an activity or resource, then FastPix Video. It appears under the Assessment group, because the activity supports completion and writes a grade.
- Enter a Name and an optional Description.
- Set the access policy and captions in Media settings.
- Add the video in the Video source section.
- Set the playback, completion, and grade options.
- Select Save and display.
- Important: The video is uploaded to FastPix when you save the activity, not while you are still filling in the form. If you choose a file and then leave without saving, nothing is uploaded.
Media settings
Choose how the video is protected and captioned before you add it. These choices are applied when the video is uploaded to FastPix.
- Access policy — Private (default, recommended): only signed-in learners can play. Public: anyone with the link can play. DRM: encrypted playback on licensed devices, selectable only when local_fastpix has DRM configured.
- Captions & transcript — off by default. When enabled, either auto-generate (FastPix transcribes the audio in the chosen language; subtitles match the spoken language and are not translated) or upload your own WebVTT (.vtt) file.
Adding the video
You can add a video by uploading a file or by pulling one from a URL.
- Upload a video. Drag a file onto the drop zone in Video source. The upload runs in resumable chunks with a live progress bar, so large files survive a flaky connection. Uploading requires the
mod/fastpix:uploadmediacapability, which editing teachers hold by default. - Pull from a URL. Paste a direct video URL into the Video URL field and select Upload; FastPix fetches the file. local_fastpix includes an SSRF guard that rejects malformed or unreachable URLs.
Playback options
| Setting | Effect |
|---|---|
| Disable seeking | Blocks forward seeks during playback, so learners watch through. Backward seeks are still allowed. |
| Show captions by default | Turns captions on when the player loads. Learners can still toggle them off. |
Completion and grading
Completion and grading work through Moodle's standard activity-completion and grade APIs. The activity adds one custom completion condition.
- In the Activity completion section, set Completion tracking to Show activity as complete when conditions are met.
- Select Students must watch the video and enter a percentage (the default is 90%).
- In the Grade section, set the maximum grade (the default is 100).
When a learner crosses the threshold, Moodle marks the activity complete and writes the grade once, at the maximum. Watching past the threshold does not rewrite the grade.
- Note: Completion is based on coverage — the unique seconds a learner actually watched, merged and deduplicated — not on the position of the playhead. Dragging the timeline to the end does not complete the activity, and rewatching the same minute counts only once.
Verifying your installation
After you save the activity, run these checks to confirm that the integration is healthy.
- From the course, open the activity you just created. You should see a Preparing your video card. It swaps to the player automatically when the video is ready, usually within a minute.
- Switch to a learner view through Switch role to -> Student, or sign in as a test student in a different browser.
- Open the activity and play past the completion threshold. The activity should be marked complete.
- Open Grades for the course and confirm that the test student has a grade for the activity.
How playback and completion work
Learners see a modern adaptive player that works across browsers, mobile, and slow networks, with a progress indicator and a Completed marker after the threshold is met. Watch progress is saved server-side every 10 seconds and on tab close, so the video resumes where the learner left off on any device. A freshly uploaded video shows a Preparing your video card until processing finishes.
Coverage drives completion: it only ever grows, rewinding does not change it, and seeking forward past unwatched content does not count those seconds.
Fraud prevention
Each watch-progress callback runs six server-side checks. A failed check does not silently block the learner; it increments a per-attempt fraud counter and records a typed reason.
- Watched time cannot exceed the video duration.
- Watched time cannot exceed wall-clock time since the session started, with a 10-second tolerance.
- Coverage cannot decrease.
- A single callback's gain cannot exceed the elapsed time, with a 10-second tolerance.
- The learner's view capability is re-verified on every callback.
- On activities with Disable seeking enabled, the server rejects any forward seek.
When the per-attempt fraud counter passes 20, a badge appears on the learner's attempt, visible to anyone with the mod/fastpix:viewallattempts capability. Any correction is a human decision, made with mod/fastpix:graderoverride.
Watch report
Teachers with the mod/fastpix:viewallattempts capability can open a read-only Watch report tab on any FastPix Video activity. It surfaces already-recorded watch data with no extra tracking and no calls to FastPix.
- Per-video view — unique viewers, average watched percentage, completion rate, the biggest drop-off point, an engagement curve, and a per-student table.
- Per-user view — a single learner's engagement across every FastPix Video activity in the course.
Both views can be exported to CSV.
Backup and restore
The plugin supports Moodle's standard course backup and restore. A backup captures the activity settings and the per-user attempt rows, and preserves the asset reference. It does not capture the video bytes, which stay on FastPix.
- Restoring onto the same Moodle site, pointing at the same FastPix account, plays normally.
- Restoring onto a site that points at a different FastPix account shows Video unavailable, because the asset does not exist in the new account. This is expected behaviour, not a bug.
Deleting an activity, including through the recycle bin, soft-deletes the underlying asset through local_fastpix.
Privacy
The plugin includes a full Moodle Privacy API provider declaring every personal-data column in the attempt table — watch progress, seek count, fraud count, completion state, and session timestamps. GDPR export and per-user delete requests are handled from Moodle's standard data-request UI. For full details, go to Site administration -> Users -> Privacy and policies -> Data registry.
Troubleshooting
- The video stays on "Preparing your video". The asset is not ready yet. Confirm Moodle cron is running and that the local_fastpix webhook is registered with its signing secret saved.
- The player is a blank box. Usually a transient asset-loading issue — reload the page. If it persists, confirm the page is served over HTTPS (DRM playback requires a secure context).
- A video shows "Video unavailable". The course was restored onto a site pointing at a different FastPix account, or the asset was deleted on the FastPix side.
- Seek buttons still appear after enabling "Disable seeking". Save the activity again, reload the player, and purge caches at Site administration -> Development -> Purge caches.
- The completion condition does not appear. Set Completion tracking to Show activity as complete when conditions are met, and confirm completion is enabled at both site and course level.
- Private videos do not play, but public ones do. The issue is on the foundation-plugin side. Confirm local_fastpix has minted its signing key and that the asset carries a playback ID.
See also
- local_fastpix - foundation plugin (required)
- filter_fastpix - short-code video embeds
- Source code on GitHub
- Release notes