If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Mediacapture plugin recorders

From MoodleDocs


Mediacapture is a repository plugin framework which allows recorders to record and upload audio/video content to Moodle easily.


The 3 different parts to write

  1. Administration - You can customise the way administrators and users can configure their recorders.
  2. Recorder display - You can also customize the view of the recorders.
  3. I18n - Internationalization should be done at the same time as you're writing the other parts.


Mediacapture plugin exists from Moodle 2.3


Following recorders are examples of recorders used by mediacapture repository plugin for demonstration of recording within Moodle. I am grateful to the authors for their support in allowing me to use these recorders within mediacapture.


There is a template available in [1]

File structure

  1. Create a folder for your recorder in moodle/repository/mediacapture/recorders e.g. moodle/repository/mediacapture/recorders/myrecorder
  2. Create the following files and add them to the myrecorder folder:
    • lib.php, the main class will be named "repository_mediacapture_myrecorder"
  3. Add the language strings used by the recorders to the mediacapture/lang/ dir.
  4. Create module.js and styles.css (optional)

Administration APIs

Functions you *MUST* override


This function must be declared static
Return an array of string. These strings are setting names. These settings are shared by all instances.

For example:

public static function get_type_option_names() {
    array('myrecorder', 'config');


This is for modifying the Moodle form displaying the recorder settings.

For example, to display the standard repository mediacapture plugin settings along with the custom ones for the recorders use:

public function add_config_form($mform) {
    $mform->addElement('advcheckbox', 'myrecorder', get_string('nanogong', 'repository_mediacapture'),
                        null, array('group' => 1));

Mediacapture recorder APIs

Functions you *MUST* override

view($mform, $options)

Use this function to display the view of the recorder using the $mform (moodle form). The object code for recorders can be embedded by using the 'html' tag for $mform. The form elements *must* contain the required paramters by mediacapture plugin viz filename, filepath and filetype.

With the example above, this function may look like:

public function view($mform, $options) {
    $recorderhtml = '<object></object>';
    $mform->addElement('html', $recorderhtml);
    $mform->addElement('hidden', 'filepath', '');
    $mform->addElement('hidden', 'filetype', 'xyz');
    $mform->addElement('text', 'filename', get_string('name', 'repository_mediacapture'));
    $mform->addElement('submit', 'save', get_string('save', 'repository_mediacapture'));


Use this function when you need to post the recorded data (via ajax) to a file where it can be moved to a temp location in moodle (data root).

public function post_url() {
    global $CFG;
    return new moodle_url("$CFG->wwwroot/repository/mediacapture/recorders/myrecorder/record.php");


You may list the strings used by your plugin here.

public function string_keys() {
   return array('appletnotfound', 'norecordingfound', 'nonamefound');


This function will return an array structure listing the min version of various media supported by the recorder.

public function min_version() {
   return array('java' => 1.5, 'flash' => 11);


This function will return list of media supported by the recorder.

public function supported_media() {
    return array('audio', 'video');


This function will return list of technologies used by the recorder.

public function supported_mediatypes() {
    return array('java', 'flash', 'html5');


This function will return string of supported filetype associated with the recording.

public function supported_filetype() {
    return '.wmv';

Functions you *MAY* override


This function returns the temp directory where recorders should upload their temp files.

public function temp_dir() {
    global $USER;
    return make_temp_directory('repository/mediacapture/' . $USER->id);

See also