Skip to content

notsidney/echo360loader

Repository files navigation

Echo360 Loader

A Chrome extension to load USYD Echo360 videos without Flash.
Includes playback speed controls and thumbnail seeking.

Link to Chrome Web Store page

Get it on the Chrome Web Store → or as a .crx

Screenshot

Instructions to download the video using ffmpeg →

Safari extension

Safari icon

This is a port of the Chrome extension with a few changes made.
I will not be releasing this on the Safari Extension Gallery or Mac App Store due to Apple’s 99 USD/year developer fee.

Installation instructions →

Under the hood

This extension redirects the browser from the default (horrible) Flash player to the iPad version of the player. It then uses hls.js to play the HLS stream in the Chrome video player.

  • background.js enables the toolbar icon on delivery.streaming.sydney.edu.au pages
  • redirect.js redirects view.streaming.sydney.edu.au pages to the iPad player at http://delivery.streaming.edu.au/echo/templates/.../echo_files/echo_ipad.htm
  • preventRedirect.js overwrites over the whole page to prevent the iPad player from redirecting to the error page
  • echo360.js is the JavaScript code loaded by the iPad player, copied here and bundled with the extension to comply with the Chrome Web Store’s policy on code obfuscation. This is necessary as preventRedirect.js removes the original code. This code has also been patched to prevent redirecting to the error page.
  • hls.js is the bundled hls.js
  • contentScript.js plays the HLS stream, adds custom controls below the video, re-adds the metadata on the top of the page, and fixes thumbnail seeking
  • style.css is copied from the Echo360 player (again due to preventRedirect.js) and has been modified with UI changes to make the player bigger
  • popup.js displays the extension’s version number in the popup

HTTPS issues

This extension uses the non-HTTPS version of the iPad player since the HLS stream is not served with HTTPS, so could not be loaded in Chrome without the user enabling mixed content every time they watch a video.

This also means the metadata on the top of the player page was broken, since it gets data from a HTTPS iframe on the page, which Chrome blocks if the main page is HTTP. contentScript.js fixes this.

Extending this extension

This extension is limited to USYD’s implementation of Echo360. If you want to extend this extension to your own university’s Echo360 system, replace the streaming.sydney.edu.au host names on the following files with the corresponding host names:

Version history

Version Changes
1.3.3 Copied Echo360 code to comply with Chrome Web Store policy
1.3.2 Bundle unminified hls.js to comply with Chrome Web Store policy
1.3.1 Remove old unnecessary XHR request in contentScripts.js
1.3.0 UI changes, fix Windows Chrome always going to ios_error.htm
1.2.1 More UI fixes for Windows
1.2.0 UI fixes for Windows, show popup when ios_error.htm is shown
1.1.0 Clean up code and add README.md
1.0.0 Initial release to the Chrome Web Store

Copyright and licensing

This extension and its source code is released under the MIT Licence.

This extension bundles hls.js, which is licensed under Apache Licence 2.0. Its copyright notice is preserved here.