Add IIS Smooth Streaming support to Moodle’s Multimedia Plugins Filter


We use the Smooth Streaming Player provided by the Silverlight Media Framework project at http://smf.codeplex.com/.

Download and unzip the contents of smooth streaming player binaries to the filter\mediaplugin folder of your Moodle installation.

Modify filter.php in the same folder. Add the following lines to the function called filter, at the appropriate location.

if ($CFG->filter_mediaplugin_enable_ism) {
  $search = '/<a.*?href="([^<]+\.ism\/Manifest)"[^>]*>.*?<\/a>/is';
  $newtext = preg_replace_callback($search, 'mediaplugin_filter_ism_callback', $newtext);
}
if ($CFG->filter_mediaplugin_enable_ism) {
  $search = '/<a.*?href="([^<]+\.isml\/Manifest)"[^>]*>.*?<\/a>/is';
  $newtext = preg_replace_callback($search, 'mediaplugin_filter_ism_callback', $newtext);
}

To the same file add the following function.

function mediaplugin_filter_ism_callback($link, $autostart=false) {
  global $CFG;
  $url = $link[1];
  if (empty($link[3]) or empty($link[4])) {
    $mpsize = '';
    $size = 'width="600" height="400"';
    $autosize = 'true';
  } else {
    $size = 'width="'.$link[3].'" height="'.$link[4].'"';
    $mpsize = $size;
    $autosize = 'false';
  }
  $mimetype = mimeinfo('type', $url);
  $autostart = $autostart ? 'true' : 'false';
  return $link[0].
'<span>
<!--object data="data:application/x-silverlight-2," type="application/x-silverlight-2" '.$size.'>
<param name="source" value="'.$CFG->wwwroot.'/filter/mediaplugin/SmoothStreamingPlayer.xap"/>
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50401.0" />
<param name="autoUpgrade" value="true" />
<param name="InitParams" value="selectedcaptionstream=textstream_eng,mediaurl='.$url.'" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object-->
</span>';
}

Modify filtersettings.php in the same folder. Add the following line at the appropriate location.

$settings->add(new admin_setting_configcheckbox('filter_mediaplugin_enable_ism', get_string('mediapluginism','admin'), '', 1));

Finally, we need to add a string resource used by the settings page of the plugin. Edit lang\en_utf8\admin.php (or the appropriate language file) and add the following:

$string['mediapluginism'] = 'Enable .ism (IIS Smooth Streaming) filter';

Here’s a screenshot of the filter in action.

A URL to a smooth stream, live or on demand, does not just end with .isml or .ism, you have to add a /Manifest after that. Without this the filter will not recognize the URL as a smooth stream.

This has been tested with the latest Moodle weekly build 1.9.9+ but should be easy to adapt for version 2.

If you encounter any issue with the Smooth Streaming Player, try to get a newer version from the project site, or report the issue to them. 

If you have any other suggestion, please leave a comment.

Happy smooth streaming!

5 thoughts on “Add IIS Smooth Streaming support to Moodle’s Multimedia Plugins Filter

  1. I am having issues in posting HTML source code with an object tag due to security restrictions of WordPress. Please remove !– and — from the object begin and end tags respectively, in the source code above.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s