PHPackages                             adamjenkins/moodle-assignsubmission\_recording - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. adamjenkins/moodle-assignsubmission\_recording

ActiveMoodle-assignsubmission

adamjenkins/moodle-assignsubmission\_recording
==============================================

Replaces the assignment submission text editor with a browser-based audio/video recorder (MediaRecorder API) - no third-party service required

v0.1.2(3w ago)00GPL-3.0-or-laterPHPCI passing

Since Jul 12Pushed 3w agoCompare

[ Source](https://github.com/adamjenkins/moodle-assignsubmission_recording)[ Packagist](https://packagist.org/packages/adamjenkins/moodle-assignsubmission_recording)[ RSS](/packages/adamjenkins-moodle-assignsubmission-recording/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (4)Versions (3)Used By (0)

Recording submission plugin for Moodle assignments
==================================================

[](#recording-submission-plugin-for-moodle-assignments)

**Component:** `assignsubmission_recording`
**Requires:** Moodle 4.5+ (version 2024100700)
**Maturity:** Alpha

Replaces the text editor in assignment submissions with a browser-based audio/video recorder. Students record directly in their browser — no third-party service or app required.

Features
--------

[](#features)

- Record **audio**, **video**, or offer the student a choice of either
- Configurable **maximum recording length** per assignment (auto-stops when reached, with live countdown)
- **Camera switching** during video preview (optional, site-wide setting)
- Re-submission shows the existing recording for playback before recording again
- Site-wide **bitrate settings** for audio and video quality
- Full **backup/restore** support — recordings survive course backup/restore cycles
- **Privacy API** implemented — recordings are exported and deleted with GDPR requests

Installation
------------

[](#installation)

Copy or symlink the plugin directory to your Moodle installation:

```
{moodle_root}/mod/assign/submission/recording/

```

Then run the Moodle upgrade:

```
php admin/cli/upgrade.php --non-interactive
```

### JavaScript build

[](#javascript-build)

The AMD module must be compiled before use. From the Moodle root:

```
grunt amd --root=mod/assign/submission/recording
```

For development without building, add to `config.php`:

```
$CFG->cachejs = false;
$CFG->jsrev = -1;
```

Note: even in dev mode, `amd/build/recorder.min.js` must exist. Run grunt at least once.

Configuration
-------------

[](#configuration)

### Site-wide settings

[](#site-wide-settings)

*Site administration → Plugins → Assignment → Submission plugins → Recording submission*

SettingDefaultDescriptionEnabled by defaultOffWhether new assignments have this plugin enabledAudio bitrate128 kb/sQuality of audio track in all recordingsVideo bitrate2500 kb/sQuality of video track in video recordingsAllow switching camerasOffShow a "Switch camera" button during video preview### Per-assignment settings

[](#per-assignment-settings)

When creating or editing an assignment, under **Submission types**:

SettingDefaultDescriptionAllowed recording typeAudio or videoRestrict students to audio-only, video-only, or eitherMaximum recording length2 minutesRecording stops automatically at this length; 0 = no limitHow it works
------------

[](#how-it-works)

1. Student opens the submission form — a recorder UI is rendered by the AMD module into the form.
2. Student clicks **Record audio** or **Record video** and grants browser permission.
3. For video, a live camera preview is shown; student clicks **Start recording** when ready.
4. On stopping, the recording is immediately uploaded to a Moodle draft file area via `upload.php`.
5. The resulting `draftfile.php` URL is embedded as `` or `` HTML in a hidden form field.
6. On form submission, Moodle moves the file to the permanent submission file area and rewrites the URL to `@@PLUGINFILE@@` for portable storage.
7. On view/grade, the stored URL is rewritten back to a `pluginfile.php` URL and Moodle's media filter wraps it in a VideoJS player.

File areas
----------

[](#file-areas)

File areaDescription`submissions_recording`Permanent storage of submitted recordings, itemid = submission idBrowser support
---------------

[](#browser-support)

Uses the [MediaRecorder API](https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder). Supported in all modern browsers (Chrome, Firefox, Edge, Safari 14.1+). Not supported in Internet Explorer.

Recorded format is `webm` (Chromium/Firefox) or `mp4` (Safari). Moodle's media filter handles both.

License
-------

[](#license)

GNU GPL v3 or later — see [COPYING.txt](https://www.gnu.org/licenses/gpl-3.0.txt).

Copyright 2026 Adam Jenkins

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance94

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~22 days

Total

2

Last Release

27d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c85ec09253e9a275a2586a0551aeea7e319d9560b0fcc4b7b41357b50e847e15?d=identicon)[wisecat](/maintainers/wisecat)

---

Top Contributors

[![adamjenkins](https://avatars.githubusercontent.com/u/11323818?v=4)](https://github.com/adamjenkins "adamjenkins (14 commits)")

### Embed Badge

![Health badge](/badges/adamjenkins-moodle-assignsubmission-recording/health.svg)

```
[![Health](https://phpackages.com/badges/adamjenkins-moodle-assignsubmission-recording/health.svg)](https://phpackages.com/packages/adamjenkins-moodle-assignsubmission-recording)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
