# Able Player ![AblePlayer in action, showing the video player with captions, synchronized sign language, and a navigable transcript](https://user-images.githubusercontent.com/55474996/227562765-7a17103c-4c93-4a17-82b4-fc1e401972b0.png) *Able Player* is a fully accessible cross-browser HTML5 media player. - [Feature List](#feature-list) - [Supported Languages](#supported-languages) - [Compatibility](#compatibility) - [Dependencies](#dependencies) - [Fallback](#fallback) - [Setup](#setup) - [Feature Attributes](#features-attributes) - [Mime Types](#mime-types) - [Keyboard Shortcuts](#keyboard-shortcuts) - [User Preferences](#user-preferences) - [Acknowledgements](#acknowledgements) ## Feature List - Supports both audio and video. - Supports either a single audio track or an entire playlist. - Includes a full set of player controls that are keyboard-accessible, properly labeled for screen reader users, and controllable by speech recognition users. - Includes customizable keyboard shortcuts that enable the player to be operated from anywhere on the web page (unless there are multiple instances of the player on a given page; then the player must have focus for keyboard shortcuts to work). - Features high contrast, scalable controls that remain visible in Windows High Contrast mode, plus an easy-to-see focus indicator so keyboard users can easily tell which control currently has focus. - Supports closed captions and subtitles in Web Video Timed Text (WebVTT) format, the standard format recommended by the HTML5 specification. - Supports chapters, also using WebVTT. Chapters are specific landing points in the video, allowing video content to have structure and be more easily navigated. - Supports text-based audio description, also using WebVTT. At designated times, the description text is read aloud by browsers, or by screen readers for browsers that don't support the Web Speech API. Users can optionally set their player to pause when audio description starts to avoid conflicts between the description and program audio. - Supports audio description as a separate video. When two videos are available (one with description and one without), both can be delivered together using the same player and users can toggle between the versions. - Supports adjustable playback rate. Users who need to slow down the video to better process and understand its content can do so; and users who need to speed up the video to maintain better focus can do so. - Includes an interactive transcript feature, built from the WebVTT chapter, caption and description files as the page is loaded. Users can click anywhere in the transcript to start playing the video (or audio) at that point. Keyboard users can also choose to keyboard-enable the transcript, so they can tab through its content one caption at a time and press enter to play the media at the desired point. - Features automatic text highlighting within the transcript as the media plays. This feature is enabled by default but can be turned off if users find it distracting. - Supports YouTube and Vimeo videos. - Provides users with the ability to customize the display of captions and subtitles. Users can control the font style, size, and color of caption text; plus background color and transparency; all from the Preferences dialog. They can also choose to position captions *below* the video instead of the default position (an semi-transparent overlay). - Supports fallback content if the media cannot be played (see section on **Fallback** for details). - Includes extensive customization options. Many of the features described above are controlled by user preferences. This is based on the belief that every user has different needs and there are no one-size-fits-all solutions. This is the heart of universal design. ## Supported Languages Able Player has been translated into the following languages. ## Compatibility During development, *Able Player* is routinely tested with the latest versions of the following browsers. ### Windows - Chrome - Firefox - Edge ### Mac OS - Chrome - Firefox - Safari - Opera ### iOS (iPhone and iPad) - Safari ### Android (Google Pixel) - Chrome - Firefox Since the release of version 4.4, we are no longer supporting Internet Explorer. ## Dependencies *Able Player* has the following third party dependencies: - *Able Player* uses [jQuery][]. Version 3.5.0 or higher is recommended. The example code below uses Google’s hosted libraries; no download required. - *Able Player* uses [js-cookie][] to store and retrieve user preferences in cookies. The example code below uses CDN’s hosted libraries; no download required. All Able Player cookies are functional cookies. - *AblePlayer*, as of 4.5.1, requires the use of the DOMPurify sanitizing library. - The default files in the root of the `/build` directory have DOMPurify bundled in. - Alternatively, the `build/separate-dompurify` directory houses copies of the AblePlayer files with AblePlayer code only and a stand-alone copy of the current version of DOMPurify that the project is currently using. These files are available for those who want to load DOMPurify via a separate file or want to use a CDN hosted version. To install Able Player, copy the following files from the Able Player repo into a folder on your web server: - `build/*` - `button-icons/*` (optional, not required for svg) - `styles/*` (optional, see note below) - `translations/*` - `LICENSE` The *build* folder includes minified production code (*ableplayer.min.js* and *ableplayer.min.css*). For debugging and/or style customization purposes, human-readable source files are also available: - `build/ableplayer.js` - `styles/ableplayer.css` ## Fallback All modern browsers have supported HTML5 media elements for many years. For older browsers, alternative content can be provided. We recommend providing alternative content as a child of the `