Moodle Plugins directory: Interactive Video | Moodle.org
Interactive Video
Main Features:
- Interactive Content: Add interactions or content types at specific points in the video/audio.
- Inline activity card: When enabled, the activity card on the course page will be displayed with a poster image, and the video can be launched as a pop-up
- Display Modes: Choose from four display modes: inline (covering the video), popup (modal), below the video, and on the sidebar.
- Customizable Timing: Set the start and end times for the video/audio.
- Distract-Free Mode: Display video/audio in a mode that maximizes focus.
- Completion Tracking: Track completion based on the content type: manual, view, automatic, or custom.
- Activity Completion: Set activity completion based on the percentage of interaction completed.
- Experience Points: Award participants experience points after each content/interaction completion.
- Detailed Reports: Access completion reports with details for each interaction.
- Mobile Support: Compatible with mobile apps on both Android and iOS.
- Modular Design: Administrators can add, remove, enable, or disable content types as plugins or sub-plugins. Developers can extend Interactive Video through custom plugins.
- RTL support
Pre-installed interaction types:
- Chapter: Break video/audio into segments.
- Content bank item: Add content from the course's content bank.
- External content: Embed external content using the OEmbed library.
- Rich text: Add filter-supported text using the built-in text editor
- Skip segment: Skip certain segments of the video/audio.
Free interaction types:
These independent plugins can be installed like a regular plugin. Once installed, the interactions will be available automatically in the interaction list.| Description | Tutorial | |
![]() |
Annotations ℹ️ Add persistent annotations on top of the video/canvas. |
▶️ |
![]() |
Decision ℹ️ Add a crossroad/decision point |
▶️ |
![]() |
H5P Content ℹ️ Upload and display H5P activity in .h5p and .html format, and track completion using xAPI events |
▶️ |
![]() |
HTML Content ℹ️ Upload and display HTML content such as HTML5 games, simulations, web pages, interactive diagrams, etc. |
▶️ |
![]() |
PDF Documentℹ️ Display a PDF file using the PDF.js viewer. |
▶️ |
![]() |
Office Documentℹ️ Display office documents using the online M365 viewer. |
▶️ |
![]() |
Paused Annotationℹ️ Superimpose audio/image/video/text/shape/file on the video at a certain point. |
▶️ |
![]() |
XP Rewardℹ️ Reward learners with XP points in a treasure-hunting style. |
▶️ |
![]() |
Rajab's Gameℹ️ Add game components such as a leaderboard, points, levels, and badges to your course that integrate with Interactive Video.
|
▶️ |
Quick tip: Items can be added to the cart and checked out altogether at once.
Paid interaction types:
If you're looking for more features/interaction types, check out the paid interaction types below.
Note: This is a one-time purchase without a recurring subscription fee. You can use the plugins for as long as you want.
| Description | Tutorial | |
![]() |
Analytics ℹ️ Provide detailed tracking and reporting on learner engagement. Use the watched percentage and watched segments to track activity completion. |
▶️ |
![]() |
Audio Track ℹ️ Offer alternative audio tracks that learners can select from a menu. |
▶️ |
![]() |
Course Activity ℹ️ Reference an existing course activity as an interaction on the video |
▶️ |
![]() |
Form ℹ️ Build a dynamic form using a drag-and-drop builder and collect responses from learners at any time in the video.
|
▶️ |
![]() |
Interactive Transcript ℹ️ Display searchable and clickable transcripts. |
▶️ |
| Playlist ℹ️ Display the list of interactive videos on the side drawer for easy switching between the modules. |
▶️ |
|
![]() |
Poll ℹ️ Create a poll to gather feedback from learners.
|
▶️ |
![]() |
Reaction ℹ️ Let users interact with each other and the video using emoji reactions, public comments, private Q&As, and personal notes.
|
▶️ |
![]() |
SCORM Content ℹ️ Upload and display SCORM-compliant content (supporting 1.2 and 2004 versions) with completion tracking |
▶️ |
![]() |
Video Track ℹ️ Create a multi-video series or offer alternative video formats |
▶️ |
Companion plugins:
| Description | Tutorial | |
![]() |
Interactive Video TinyMCE ℹ️ Add Interactive Video instances anywhere using the TinyMCE editor |
▶️ |
![]() |
OEmbed Content TinyMCE ℹ️ Add external content such as videos/documents/slides/interactions anywhere |
▶️ |
![]() |
MooTube Course Format Modern and flexible course format, well-integrated with Interactive Videos |
▶️ |
Supported sources*:
- Video/audio file upload
- Video/audio file direct link (browser-supported formats, HLS (.m3u8) and DASH (.mpd))
- YouTube (public/unlisted/youtube-nocookie/live)
- Vimeo (public/unlisted/hide from Vimeo/password)
- Dailymotion (public/private/password protected**)
- Wistia (public/password-protected)
- Panopto (public)
- Kinescope (anyone/user with private link/user with password)
- PeerTube (public/unlisted/password protected)
- Rutube (public/private)
- Rumble (public/unlisted)
- SproutVideo (public/password-protected ***)
- Spotify (public****)
- SoundCloud (public)
- Vidyard
- Viostream
- Vdocipher
- Dyntube
- Bunny Stream
* See features supported here: https://docs.google.com/spreadsheets/d/1GFt0NqdF316BPQfuPgWworY4n75jBGH3XA_0CsyQ-3w/edit?usp=sharing
** Password-protected Dailymotion video must play with original player controls.
*** You must use the /embed/ link for the password-protected video on SproutVideo to work.
**** Works with podcast episodes only. If using music tracks, learners must be logged in to the web player and ensure their browser does not block tracking; otherwise, only the half-minute track preview will be shown.
Installing via uploaded ZIP file
- Log in to your Moodle site as an admin and go to Site administration > Plugins > Install plugins.
- Upload the ZIP file with the plugin code. You should only be prompted to add extra details if your plugin type is not automatically detected.
- Check the plugin validation report and finish the installation.
Installing manually
The plugin can also be installed by putting the contents of this directory into
{your/moodle/dirroot}/mod/interactivevideo
Afterward, log in to your Moodle site as an admin and go to Site Administration > Notifications to complete the installation.
Alternatively, you can run
$ php admin/cli/upgrade.php
to complete the installation from the command line.
License
2024 Sokunthearith Makara sokunthearithmakara@gmail.com
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.






















I use the plugin in some projects, but I noticed that when I insert the video link (Vimeo), the "final time" displayed in minutes doesn't support videos longer than 2 and a half minutes.
To solve this, I always type the total final time of the video so that the plugin understands that the final time is longer.
Could this be a bug in the plugin?
Renato.
https://github.com/sokunthearithmakara/moodle-mod_interactivevideo/issues/51#issuecomment-3028998906
https://github.com/sokunthearithmakara/moodle-mod_interactivevideo/issues/54#issuecomment-3334052828
"subplugintypes": {
"ivplugin": "plugins"
},
"plugintypes": {
"ivplugin": "mod\/interactivevideo\/plugins"
}
}
fix your db/subplugins.json
i got error like this
2026/01/15 18:45:27 [error] 250070#250070: *1578340 FastCGI sent in stderr: "PHP message: No subplugintypes defined in /***/mod/interactivevideo/db/subplugins.json. Falling back to deprecated plugintypes value. See MDL-83705 for further information" while reading response header from upstream ...
We are currently evaluating Interactive Video for a Moodle 4.5 LTS platform with a relatively high number of users, and we want to better understand its behavior in high-concurrency scenarios. I would really appreciate your insight on the following points:
1. During video playback, does the plugin write progress to the database periodically (for example every X seconds), or does it only write when completion conditions are met (percentage watched / completed)?
2. Does the plugin rely entirely on Moodle’s standard completion API, or does it implement any custom logic to track activity completion and progress?
3. Has this plugin been used in production environments with around 500 concurrent users watching videos at the same time? If so, are there any performance considerations or recommended configurations for that scale?
Thank you very much for your time and for sharing your experience.
1. No, Interactive Video doesn't save progress to the database periodically. Progress is calculated on the client side and pushed to the database when the video is paused (within a 5-second range compared to the last saved point) and ended, and before the page is unloaded. If your Interactive Video uses interactions (e.g., H5P questions) with completion tracking, the plugin will record the completion status to the database when the status is updated (e.g., Mark complete vs Mark incomplete). In short, Interactive Video and its extensions (even with Analytics that records the watched percentage) are not calling the database THAT frequently.
2. Not sure I fully understood the question. All automatic completion conditions (even in core modules such as Forum, Assignment, etc.) implement their own completion logics. The same is true for Interactive Video's automatic completion conditions. For instance, if you set "Watch till the end" as a completion condition, the interactive video will look at the end time (specific user record on the interactivevideo_completion table), and if the end time is not null, the activity will be marked as completed. See "classes/completion/custom_completion.php" for the logic. The only difference is the design and code structure. Interactive Video is built to be extendable. For example, if you install Analytics or VideoTrack, you'll see more completion conditions with their own logics in their own callback functions.
3. I personally don't have such environments yet to 100% confirm this, but I heard from some users in Brazil who are using Interactive Video on their MOOC instances (didn't get a chance to ask about the performance, though). Maybe other users can share their experience. In courses with large enrollments, one performance issue I noticed is with the report page (not for students). You'll notice some delay as the report data is loaded from the database.