[Proposal] Improved Audio XBlock
See Github ticket. Please provide feedback by Jan 19, 2026.
TL;DR Summary
Some universities and institutions incorporate audio features to enhance their course content. Currently, in Open edX, there’s no built-in way to display audio tracks directly in a course. There is an official Audio XBlock in the Open edX organisation on Github (https://github.com/openedx/AudioXBlock/) that can be installed, however it lacks important features, such as timed captions support for accessibility.
We at OpenCraft have been maintaining an Audio XBlock with more functionality, and we plan to contribute this functionality to the Open edX Audio XBlock. We also propose including the Open edX Audio XBlock in the base install of the Open edX platform, so institutions no longer need to install a plugin to make it work.
Problem
Universities and other institutions have lectures, music tracks, podcasts, and other audio tracks which they need to make available to learners. They have diverse requirements to meet accessibility standards and to provide more engaging content, such as timed captions, pdf transcripts, audio playback ranges, and embedded podcast support. It is difficult for them to embed this content in the Open edX platform without using a third party plugin, as the Open edX Audio XBlock does not support the required functionality.
We believe that this functionality should be in the base install of the platform and not required as a separate installation.
Use Cases
As a platform administrator, I want one accessible, feature-rich, officially supported way to embed audio so I don’t have to try several different ones I find online.
As an author, I want to easily embed audio in my course so learners can access important audio content right where they need it.
As an instructor, I want to provide audio content for my learners so I can provide an engaging mixed media experience.
As a learner, I want to listen to audio content without having to leave the LMS so that I can stay in context with my learning session.
As a learner with special needs, I want audio on the LMS to be accessible so that I can follow the content.
As an instructor, I want audio on the LMS to be accessible so that I can comply with accessibility requirements.
As an author, I want to limit the playback range on an audio track so that I can bring students' attention to the relevant section of the audio track.
As an author, I also want to have the option of embedding podcasts via a provided podcast embed view so that I can provide audio content not available as a simple audio url.
As an author, I want to provide timed captions so that students can read along with the audio.
As an author, I want to provide links to download a pdf transcript so that students can reference the transcript offline.
As a student, I want a link to click to easily download the audio so that I can listen to the audio later offline.
Proposed Solution
We propose contributing the features from our own OpenCraft Audio XBlock to the official Open edX Audio XBlock, such as transcript support to meet accessibility requirements.
Current codebase: https://github.com/open-craft/xblock-audio/tree/wgu-release
History
The OpenCraft Audio XBlock began as a fork of https://github.com/nuclearfurnace/xblock-audio, to extend its functionality to provide features required by our client.
Accessibility
The OpenCraft Audio XBlock supports WebVTT via file upload or external url for timed captions. We researched best practices for subtitling, and tried to incorporate these into the implementation to improve accessibility, including using a larger font and limiting lines to 40 characters.
It also supports a download link to the audio file and a separate transcript file.
Screenshots
Edit modal in Studio (multiple screenshots to show all content available by scrolling)
Student view in the LMS
Edit modal in Studio in Podcast mode
Student view in Podcast mode
Implementation Plan
Our client is offering to sponsor these contributions, so this work is expected to be funded.
The functionality of OpenCraft Audio XBlock will be ported to Open edX Audio XBlock by way of pull requests.
Open edX Audio XBlock should be audited with an eye for contribution to the core, and any current blocking deficiencies addressed.
Open edX Audio XBlock will be included in the base installation as an advanced, optional module that instructors can add to their courses. Alternatively, it will be an officially supported extension.
OpenCraft Audio XBlock will be deprecated and scheduled for archival.
Open edX Audio XBlock will be considered the officially supported way to embed audio in courses.
In addition to the existing functionality of the OpenCraft Audio XBlock, we have two improvements planned, which will be worked on as part of step 1 above:
Refactor file uploads for transcripts to use the course "Files" resources instead of a configurable Django storage.
Update mediaelement.js to the latest version or drop mediaelement.js in favour of the browser built-in embedded audio player. Currently the OpenCraft Audio XBlock is using an old release of mediaelement.js.
Feature comparison
A comparison of the features in each of the Audio XBlocks discussed above.
Open edX Audio XBlock:
uses the browser built-in audio player
focuses on simplicity
supports a single url as an audio source or embed url (fallback)
OpenCraft Audio XBlock:
uses mediaelement.js for the audio player
focuses on providing a feature rich, accessible experience
supports multiple urls in the audio source, for alternative fallback audio formats
supports displaying a link to download the audio file
supports a plain text description to show above the audio player
supports displaying timed captions below the audio player, either by uploading a WebVTT file or providing a url to a WebVTT file
supports an alternate transcript download url (eg. if a pdf transcript is also provided)
supports limiting audio playback to configurable start and end times
supports a podcast mode, where you can provide a url to be embedded; in this mode, the features above are not supported