LearnPlug Video Tracker
Reliable video progress, completion and engagement reporting inside Moodle
Video Tracker is a Moodle activity module that lets teachers add video-based learning to a course, save each learner’s watched progress, resume playback and complete or grade the activity using a configured viewing threshold.
What the activity does
- Adds uploaded or externally hosted video to a Moodle course.
- Records watched percentage, duration, last position and completion state per learner.
- Resumes playback from the last recorded position.
- Supports a fixed maximum grade of 100 and percentage-based completion.
- Provides a teacher report with learner search, status and group filters.
- Integrates with Moodle backup/restore, Privacy API and the Moodle App flow.
Starter vs Professional
Both editions use the same Moodle component and activity type. Professional can upgrade Starter in place while preserving existing activities and learner progress.
| Capability | Starter | Professional |
|---|---|---|
| Moodle-hosted video uploads | Included | Included |
| YouTube privacy-enhanced embeds | Included | Included |
| Public / unlisted Vimeo | Included | Included |
| Direct HTML5 URLs (MP4, WebM, HLS where supported) | Included | Included |
| Poster image and 16:9, 21:9, 4:3, 1:1 embed ratios | Included | Included |
| Saved learner progress and resume position | Included | Included with active licence |
| Percentage completion and gradebook integration | Included | Included with active licence |
| Teacher report: search, status and group filters | Included | Advanced report |
| Individual and bulk progress reset | Included | Included |
| CSV report export | Not included | Professional |
| Additional engagement analytics | Core metrics | Professional |
| Learning objectives (up to three per activity) | Not included | Professional |
| Anti-skip / fast-forward restriction | Not included | Professional |
| Maximum playback-rate policy | Not included | Professional |
| Disable download hint, PiP and right-click menu | Not included | Professional |
| AI speech-to-text subtitle generation | Not included | Professional · OpenAI |
| AI subtitle translation into 38 language variants | Not included | Professional · OpenAI |
| WebVTT upload, download, regeneration and track management | Not included | Professional |
| Automatic language detection and timed WebVTT output | Not included | Professional |
| Licence key, commercial updates and customer support | Not required | Required / included |
mod_videotracker
.
Requirements
Platform
- Moodle 4.5 or later, up to Moodle 5.2 for the documented 1.2 release.
- A PHP version supported by the installed Moodle release.
- Normal Moodle cron configuration.
- HTTPS is strongly recommended, especially for external video and licence communication.
- For uploaded video, Moodle file storage and server upload limits must accommodate the media size.
Additional requirements for Professional AI subtitles
- A server-side OpenAI API key with available API credit.
-
ffmpegfor server-side audio extraction from uploaded HTML5 video. -
ffprobeis recommended so long videos can be split into audio chunks below OpenAI upload limits. -
PHP
exec()must be available for automatic audio extraction. - Moodle cron must run regularly because generation and translation use background tasks.
- Only Moodle-uploaded HTML5 video is supported by the current subtitle workflow. YouTube, Vimeo and direct external URLs are not supported for subtitle generation.
Permissions
Editing teachers and managers can add an activity. Students, teachers and managers can view it. The report and progress reset require the corresponding module capabilities:
-
mod/videotracker:addinstance -
mod/videotracker:view -
mod/videotracker:viewreports -
mod/videotracker:resetprogress
Installation and upgrade
Install from a ZIP package
mod_videotracker
.
Manual installation
Extract the package so the plugin is located at
mod/videotracker
, then visit
Site administration › Notifications
. The folder must not be nested as
mod/videotracker/videotracker
.
Upgrade Starter to Professional
Quickstart for teachers
Video sources
| Source | How to configure | Important notes |
|---|---|---|
| Moodle upload | Select Upload and add the video file. | Stored and delivered through Moodle. Best control compatibility for Professional playback policies. |
| YouTube | Select YouTube and paste the full video URL. | Uses YouTube’s privacy-enhanced embed domain. Learner browsers still connect to YouTube. |
| Vimeo | Select Vimeo and paste a public or unlisted URL. | Provider privacy and embed permissions apply. |
| Direct HTML5 | Select External and paste an HTTPS MP4, WebM or HLS URL. | Playback depends on browser codec support, CORS, MIME type and server range requests. |
Display options
- Optional poster / preview image.
- External embed ratios: 16:9, 21:9, 4:3 and 1:1.
- Use 21:9 for cinematic content where it reduces black bars.
Content protection
Professional includes playback controls that discourage casual skipping or downloading. They improve learning-flow enforcement but are not digital-rights management.
| Control | Behaviour | Limitation |
|---|---|---|
| Allow fast-forward | When disabled, learners cannot jump beyond content already watched. | Best on Moodle-hosted / HTML5 video; external players are best-effort. |
| Maximum playback rate | Caps the selectable speed at 1×, 1.25×, 1.5× or 2×, or leaves it unrestricted. | External provider APIs may limit enforcement. |
| Disable download button |
Adds the browser
nodownload
control hint.
|
Browsers may ignore it; it does not fully prevent downloading. |
| Disable picture-in-picture | Requests that the browser suppress PiP mode. | Only where supported by the browser/player. |
| Disable right-click menu | Blocks the context menu on the HTML5 video element. | Deterrent only; not a security boundary. |
AI functionality and subtitles
Professional can create timed subtitles from an uploaded video, translate the resulting cues into multiple languages and manage the generated WebVTT tracks directly from the Moodle activity.
Automatic subtitle workflow
mod/videotracker:managesubtitles
capability.
Manual WebVTT workflow
If automatic extraction is unavailable, a teacher can upload a valid .vtt source subtitle file, select its source language and then use AI to create translation tracks. Existing source tracks can be replaced.
Supported translation languages
Arabic, Bulgarian, Catalan, Chinese (Simplified and Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Norwegian, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian and Vietnamese.
Track management
| Action or status | Meaning |
|---|---|
| Generate / regenerate source | Queues a fresh AI transcription from the uploaded video. |
| Queue translations | Creates background translation jobs for selected languages other than the source language. |
| Upload / replace source | Uses a teacher-provided WebVTT file as the source track. |
| Download | Downloads a ready subtitle track as WebVTT. |
| Delete | Removes the selected track and its stored subtitle file. |
| Queued / processing / ready | Normal background-processing lifecycle. |
| Out of date | A translation no longer matches the current source subtitle content and should be regenerated. |
| Failed | Processing did not complete; the manager displays the last stored error. |
Default AI configuration
| Setting | Default | Purpose |
|---|---|---|
| OpenAI API key | Not set | Stored server-side; never exposed in the browser. |
| Transcription model |
whisper-1
|
Produces timestamped speech-to-text output. |
| Translation model |
gpt-4.1-mini
|
Translates subtitle cues while preserving their structure. |
| ffmpeg path |
ffmpeg
|
Extracts audio from the uploaded video. |
| ffprobe path |
ffprobe
|
Supports safe chunking of long videos. |
Analytics and reporting
Learner data recorded
The plugin stores the course-module reference, completion state, video duration, last reported playback time, resume position, sequencing and timestamp information, plus compatibility flags used by the activity.
| Report capability | Starter | Professional |
|---|---|---|
| Per-learner watched percentage | Yes | Yes |
| Status: not started, in progress, completed | Yes | Yes |
| Last position and last viewed | Yes | Yes |
| Search, status and group filters | Yes | Yes |
| Grade display | Yes | Yes |
| Individual / bulk progress reset | Yes | Yes |
| CSV export | No | Yes |
| Additional engagement insights | Core report | Advanced |
mod/videotracker:resetprogress
to trusted roles and confirm scope before using bulk reset.
Admin settings
Starter
Starter is self-contained and requires no licence key, trial registration, external account or API key. Teachers configure activity settings in each course. The administration page also provides a gradebook diagnostic / repair action.
Professional licence
| Setting / action | Purpose |
|---|---|
| Licence email | Email used for trial activation or the billing email used for purchase. |
| Licence key | Commercial key assigned to the Moodle site. |
| Start free 14-day trial | Creates and activates a full-feature trial after explicit consent. |
| Activate / validate / deactivate | Manages this Moodle site’s activation and refreshes entitlement status. |
| Licence overview | Shows status, domain, expiry, activations, last check and runtime mode. |
| Update state | Shows installed and latest available versions and update availability. |
| Diagnostics | Displays recent licence activity and errors for troubleshooting. |
| OpenAI API key | Server-side credential used for AI transcription and subtitle translation; it is not exposed to learners’ browsers. |
| OpenAI transcription model |
Speech-to-text model used to create timestamped source subtitles. Default:
whisper-1
.
|
| OpenAI translation model |
Text model used to translate subtitle cues. Default:
gpt-4.1-mini
.
|
| ffmpeg / ffprobe paths | Server commands used for audio extraction and safe chunking of longer videos. |
| Advanced troubleshooting | Server URL, shared secret, site URL override, instance ID and optional product slug; change only when instructed. |
Licence runtime states
- Premium active: Professional features are enabled.
- Offline grace: a previous successful validation temporarily protects access when the server is unreachable; the duration is controlled by the licence server.
- Restricted demo: video playback remains available, but premium tracking, reports, objectives and enforcement are locked.
Frequently asked questions
Will upgrading from Starter to Professional keep existing data?
Yes. Professional uses the same Moodle component and is designed to upgrade Starter in place while preserving activities and learner progress.
Do I uninstall Starter before installing Professional?
No. Install Professional as an in-place upgrade. Uninstalling can remove plugin data.
Does Starter require a licence or LearnPlug account?
No. Starter does not require a licence key, trial registration, external account, API key or paid service.
Can Video Tracker completely prevent downloads?
No. Professional can hide the download control, disable the right-click menu and request other restrictions, but browsers may ignore hints and any playable media can potentially be captured.
Why are some controls weaker on YouTube or Vimeo?
External providers control their players. Anti-skip, playback-rate, download and PiP controls are limited by the provider API and are best-effort only.
What happens when a Professional licence is invalid?
The activity enters restricted demo mode: playback remains available, but premium tracking, reports, objectives, completion progression and playback enforcement are restricted.
Can a learner resume where they stopped?
Yes. The plugin saves the last resume position and restores it on return when tracking is available.
How is completion calculated?
Teachers configure a required watched percentage between 0 and 100. The activity uses a fixed maximum grade of 100 and can work with Moodle completion and passing-grade conditions.
Does the plugin work in the Moodle App?
Yes. The plugin includes Moodle App integration and can open the activity in the app’s in-app browser for playback and tracking.
Which videos support automatic AI subtitles?
The current subtitle workflow supports Moodle-uploaded HTML5 videos. YouTube, Vimeo and direct external URLs are not supported for automatic subtitle generation.
Can I use subtitles without automatic transcription?
Yes. Upload a valid WebVTT source file, choose its language and use it directly or queue AI translations.
What data is sent to OpenAI?
Generation sends audio extracted from the uploaded video. Translation sends the source subtitle text and requested target languages. Processing uses the administrator’s server-side OpenAI API key.
Where should I report a Starter issue?
Use the public project discussions at GitHub Discussions . Professional customers should use the support channel supplied with their purchase.
Terms of Sale
1. Products
Starter is the permanent licence-free edition distributed under GNU GPL v3 or later. Professional is commercially distributed software that requires a valid trial or paid entitlement to unlock premium runtime features, updates and commercial support.
2. Orders and payment
Prices, taxes, billing period, currency and payment method are those shown at checkout or in the accepted quotation. An order is complete when payment is accepted and the licence details are issued, unless the order confirmation states otherwise.
3. Licence activation
A Professional key is activated for the permitted Moodle site or number of activations stated in the order. The customer must use accurate billing and activation details and keep keys confidential. Reassignment, staging allowances and domain changes are subject to the purchased entitlement and support approval.
4. Trial
The full-feature trial runs for 14 days from activation. Starting it requires explicit consent to send the licence email and technical site identifiers to the licence server. At expiry, the plugin moves to restricted demo mode unless a paid licence is activated.
5. Delivery, updates and support
Delivery is electronic. Professional updates and commercial support are supplied during the active entitlement period and within the scope stated on the product page or quotation. Starter support is community-based.
6. Renewal and expiry
Renewal behaviour and term length follow the order. When an entitlement expires, Professional premium functions may be restricted after any applicable server-controlled grace period; learner video access remains available in restricted demo mode.
7. Cancellations and refunds
Cancellation and refund eligibility follow the checkout terms, applicable law and the nature of digital delivery. Where the customer requests immediate digital performance, statutory withdrawal rights may be affected only to the extent permitted by law.
8. Customer responsibilities
The customer is responsible for Moodle administration, backups, compatible infrastructure, lawful media rights, privacy notices, role permissions and testing before production deployment.
9. External services
YouTube, Vimeo, hosting providers, payment processors and other external services operate under their own availability and terms. LearnPlug does not control those third-party services.
10. Warranty and liability
The open-source component is supplied under GPL terms. Any commercial warranty, service commitment or limitation of liability is defined by the authoritative sale terms and applicable law. Nothing in this summary limits liability that cannot lawfully be limited.