Able Player ========== *Able Player* is a fully accessible cross-browser HTML5 media player. To see the player in action check out the [Able Player Examples][examples] page. Features -------- - Supports both audio and video. - Supports either a single audio track or an entire playlist. - A full set of player controls that are keyboard-accessible, properly labeled for screen reader users, and controllable by speech recognition users. - 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). - 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. - Support for closed captions and subtitles in Web Video Timed Text (WebVTT) format, the standard format recommended by the HTML5 specification. - Support for chapters, also using WebVTT. Chapters are specific landing points in the video, allowing video content to have structure and be more easily navigated. - Support for text-based audio description, also using WebVTT. At designated times, the description text is read aloud by screen readers. Users can optionally set their player to pause when audio description starts in order to avoid conflicts between the description and program audio. - Support for 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. - Support for adjustable playback rate. Users who need to slow down the video in order to better process and understand its content can do so; and users who need to speed up the video in order to maintain better focus can do so. - 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. - 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. - Support for playing YouTube and Vimeo videos within the Able Player chrome. - Customizable caption display. 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). - Fallback support (see section on **Fallback** for details). - Extensive customization. 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. To add another language, see instructions below under **Contributing**. Contributing ------------- There are many ways to contribute to Able Player, and we welcome and appreciate your help! Here are some options: - If you spot bugs are have feature requests, please submit them to the [Issues][issues] queue. - If you have code to contribute, please note that all development occurs on the [develop branch][develop]. This is often many commits ahead of the master branch, so please do all development from *develop*, and submit pull requests there. We particularly appreciate help with any issues in the Issues queue that have been flagged with "help wanted". - If you are multilingual, please consider translating Able Player into another language! All labels, prompts, messages, and help text for each language are contained within a single file, contained within the */translations* directory. Compatibility ------------- *Able Player* has been tested with the following browsers and assistive technologies. - Firefox 3.x and higher - Internet Explorer 10 and higher - Google Chrome 7.0 and higher - Opera 10.63 and higher - Safari 5.0 on Mac OS X - Safari on IOS 3.2.2 and higher - Chrome on Android 4.2 and higher Note that mobile browsers have limitations (e.g., volume control and autostart are not supported) Dependencies ------------ *Able Player* has the following third party dependencies: - *Able Player* uses [jQuery][]. Version 3.2.1 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. This script is distributed with *Able Player*. Prior to version 2.3, Able Player used [jquery.cookie][] for this same purpose. To install Able Player, copy the following files from the Able Player repo into a folder on your web server: - build/* - button-icons/* - images/* - styles/* (optional, see note below) - thirdparty/* (includes js-cookie, as mentioned above) - 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. However, there are still older browsers in use that don’t have this support (e.g., Internet Explorer 9 and earlier). For these, you need to provide fallback content. Prior to version 4.0, *Able Player* used [JW Player][] as a fallback Flash player for older browsers. However, this solution was built specifically on **JW Player 6** which is now many versions old and difficult to find. Also, prior to version 4.0, *Able Player* used [Modernizr][] to enable styling of HTML5 elements in Internet Explorer 6 through 8. This too is no longer supported, and Modernizr is no longer needed. Instead, we recommend providing alternative content as a child of the `