Interactive Video

Activities ::: mod_interactivevideo
Maintained by Sokunthearith "T" Makara
Transform your video/audio content into an interactive learning adventure! Add dynamic annotations and interactions like H5P activities, PDFs, HTML games/simulations, rich text, and more. Track every learner’s journey with detailed reports.
Latest release:
849 sites
790 downloads
44 fans
Current versions available: 1

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:

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

  1. Log in to your Moodle site as an admin and go to Site administration > Plugins > Install plugins.
  2. 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.
  3. 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/.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5
Screenshot #6
Screenshot #7

Contributors

Sokunthearith "T" Makara (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments

Show comments
  • Yasser abou elmaaref
    cyu., 21 nze. 2025, 7:09 PM
    Thank you so much , I really like it and even got some paid extensions to explore more creative ideas."
  • Renato de Brito
    gtu., 5 ugu. 2025, 10:27 PM
    Hello!

    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.
  • Sokunthearith "T" Makara
    gtu., 5 ugu. 2025, 11:20 PM
    @Renato: I couldn't reproduce the issue you reported on my end. Do note that in older versions, if you switch the source video after the activity is created, the end time is not updated automatically. For example, if your first video is 2:30 long and later you switch to a different video with a 5:30 duration, the end time will remain 2:30 until you manually change it (simply Ctrl + click). In the latest versions, the end time is reset when you change your video source. My suggestion is to update the plugin first and then try creating a NEW interactive video. If you still encounter the issue, feel free to open an issue on GitHub: https://github.com/sokunthearithmakara/mod_interactivevideo/issues
  • Pedro Báez
    gnd., 8 ugu. 2025, 11:56 AM
    I installed a test server with Moodle 5.1+ (Build: 20251009) and a production server with Moodle 5.1 (Build: 20251006), updating the plugin to the latest version. However, I'm getting an error in the non-Plus version 5.1 when connecting Vimeo videos via URL. When I add the link to the URL bar, I get the error "There is an issue loading video." I've tested the plugin with both 5.1+ and Vimeo, and it doesn't generate the same error.
  • Sokunthearith "T" Makara
    gnd., 8 ugu. 2025, 2:30 PM
    @Pedro: please see these resolved issues with Vimeo. They might help; otherwise, please open a new issue on GitHub, so we can follow up.
    https://github.com/sokunthearithmakara/moodle-mod_interactivevideo/issues/51#issuecomment-3028998906
    https://github.com/sokunthearithmakara/moodle-mod_interactivevideo/issues/54#issuecomment-3334052828
  • Stefano Ciurleo
    kab., 9 uku. 2025, 7:46 PM
    Finally, an easy plugin that lets you check if you've watched 100% of the video! Is it possible to remove the animation once the completion criteria have been met?
  • Sokunthearith "T" Makara
    kab., 9 uku. 2025, 8:55 PM
    @Stefano: No, you can't disable interactions for the entire video based on the activity completion condition. At the moment, individual interactions completed by learners are not automatically relaunched, but remain available for learners to review later.
  • Stefano Ciurleo
    kab., 9 uku. 2025, 10:23 PM
    Let me explain myself better. I meant to ask if it is possible to disable the confetti.js library.
  • Sokunthearith "T" Makara
    kab., 9 uku. 2025, 11:09 PM
    @Stefano: Ah, gotcha! No, you can't.
  • Juan Carlos Téllez Pinilla
    kab., 13 mut. 2026, 1:05 AM
    Thank you for the plugin, it's very good. However, I would like to know if it is possible to modify any file or code so that users cannot move forward with the progress bar, but can move backward? When I activate “Prevent seeking,” neither action is allowed.
  • Sokunthearith "T" Makara
    kab., 13 mut. 2026, 2:05 AM
    @Juan - That isn't possible without any interaction items. With an interaction item, you can prevent users from skipping ahead without completing the interaction first. If you're a developer and would like to implement this on your instance, you can make changes to the viewannotation.js file by listening to the click event on the #seek element and calculating the click position vs the current progress.
  • Данияр Нугуманов
    gnu., 16 mut. 2026, 3:35 AM
    {
    "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 ...
  • Juan Carlos Téllez Pinilla
    kab., 27 mut. 2026, 11:15 PM
    Hi, first of all, thank you for developing and maintaining this plugin.

    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.
  • Sokunthearith "T" Makara
    gtu., 28 mut. 2026, 1:07 AM
    @Juan,

    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.
  • Juan Carlos Téllez Pinilla
    gtu., 28 mut. 2026, 7:58 PM
    Thank you very much for your answers. I will try to carry out the respective tests and hope that someone can share their experience of courses with many users.
1 2 3 4
Please login to post comments