aboutsummaryrefslogtreecommitdiffstats
path: root/readme.md
diff options
context:
space:
mode:
Diffstat (limited to 'readme.md')
-rw-r--r--readme.md151
1 files changed, 64 insertions, 87 deletions
diff --git a/readme.md b/readme.md
index dcced798..98fa1889 100644
--- a/readme.md
+++ b/readme.md
@@ -4,8 +4,7 @@ Beware: This branch is currently in beta and not production-ready
# Plyr
-A simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports
-[_modern_](#browser-support) browsers.
+A simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo media player that supports [_modern_](#browser-support) browsers.
[Checkout the demo](https://plyr.io) - [Donate to support Plyr](#donate)
@@ -16,8 +15,8 @@ A simple, lightweight, accessible and customizable HTML5, YouTube and Vimeo medi
* **Accessible** - full support for VTT captions and screen readers
* **Lightweight** - just 18KB minified and gzipped
* **[Customisable](#html)** - make the player look how you want with the markup you want
-* **Semantic** - uses the _right_ elements. `<input type="range">` for volume and `<progress>` for progress and well,
- `<button>`s for buttons. There's no `<span>` or `<a href="#">` button hacks
+* **Semantic** - uses the _right_ elements. `<input type="range">` for volume and `<progress>` for progress and well, `<button>`s for buttons. There's no
+ `<span>` or `<a href="#">` button hacks
* **Responsive** - works with any screen size
* **HTML Video & Audio** - support for both formats
* **[Embedded Video](#embeds)** - support for YouTube and Vimeo video playback
@@ -64,13 +63,12 @@ npm install plyr
## Quick setup
-Here's a quick run through on getting up and running. There's also a
-[demo on Codepen](http://codepen.io/sampotts/pen/jARJYp).
+Here's a quick run through on getting up and running. There's also a [demo on Codepen](http://codepen.io/sampotts/pen/jARJYp).
### HTML
-Plyr extends upon the standard HTML5 markup so that's all you need for those types. More info on advanced HTML markup
-can be found under [initialising](#initialising).
+Plyr extends upon the standard HTML5 markup so that's all you need for those types. More info on advanced HTML markup can be found under
+[initialising](#initialising).
#### HTML5 Video
@@ -98,29 +96,28 @@ For YouTube and Vimeo, Plyr uses the standard YouTube API markup (an empty `<div
#### YouTube embed
```html
-<div id="player" data-plyr-provider="youtube" data-plyr-provider-id="bTqVqk7FSmY"></div>
+<div id="player" data-plyr-provider="youtube" data-plyr-embed-id="bTqVqk7FSmY"></div>
```
#### Vimeo embed
```html
-<div id="player" data-plyr-provider="vimeo" data-plyr-provider-id="143418951"></div>
+<div id="player" data-plyr-provider="vimeo" data-plyr-embed-id="143418951"></div>
```
-Note: In both cases, `data-plyr-provider-id` value can be the ID or URL for the media.
+Note: In both cases, `data-plyr-embed-id` value can be the ID or URL for the media.
### JavaScript
-Include the `plyr.js` script before the closing `</body>` tag and then call `plyr.setup()`. More info on `setup()` can
-be found under [initialising](#initialising).
+Include the `plyr.js` script before the closing `</body>` tag and then call `plyr.setup()`. More info on `setup()` can be found under
+[initialising](#initialising).
```html
<script src="path/to/plyr.js"></script>
<script>const player = new Plyr('#player');</script>
```
-If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript, you can use the
-following:
+If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the JavaScript, you can use the following:
```html
<script src="https://cdn.plyr.io/2.0.13/plyr.js"></script>
@@ -134,8 +131,7 @@ Include the `plyr.css` stylsheet into your `<head>`
<link rel="stylesheet" href="path/to/plyr.css">
```
-If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the
-following:
+If you want to use our CDN (provided by [Fastly](https://www.fastly.com/)) for the default CSS, you can use the following:
```html
<link rel="stylesheet" href="https://cdn.plyr.io/2.0.13/plyr.css">
@@ -143,50 +139,45 @@ following:
### SVG Sprite
-The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see
-the [options](#options) below. For reference, the CDN hosted SVG sprite can be found at
-`https://cdn.plyr.io/2.0.13/plyr.svg`.
+The SVG sprite is loaded automatically from our CDN (provided by [Fastly](https://www.fastly.com/)). To change this, see the [options](#options) below. For
+reference, the CDN hosted SVG sprite can be found at `https://cdn.plyr.io/2.0.13/plyr.svg`.
## Advanced
### LESS & SASS/SCSS
-You can use `plyr.less` or `plyr.scss` file included in `/src` as part of your build and change variables to suit your
-design. The LESS and SASS require you to use the [autoprefixer](https://www.npmjs.com/package/gulp-autoprefixer) plugin
-(you be should already!) as all declarations use the W3C definitions.
+You can use `plyr.less` or `plyr.scss` file included in `/src` as part of your build and change variables to suit your design. The LESS and SASS require you to
+use the [autoprefixer](https://www.npmjs.com/package/gulp-autoprefixer) plugin (you be should already!) as all declarations use the W3C definitions.
-The HTML markup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class
-hooks in the options to match any custom CSS you write. Check out the JavaScript source for more on this.
+The HTML markup uses the BEM methodology with `plyr` as the block, e.g. `.plyr__controls`. You can change the class hooks in the options to match any custom CSS
+you write. Check out the JavaScript source for more on this.
### SVG
-The icons used in the Plyr controls are loaded in an SVG sprite. The sprite is automatically loaded from our CDN by
-default. If you already have an icon build system in place, you can include the source plyr icons (see `/src/sprite` for
-source icons).
+The icons used in the Plyr controls are loaded in an SVG sprite. The sprite is automatically loaded from our CDN by default. If you already have an icon build
+system in place, you can include the source plyr icons (see `/src/sprite` for source icons).
#### Using the `iconUrl` option
-You can however specify your own `iconUrl` option and Plyr will determine if the url is absolute and requires loading by
-AJAX/CORS due to current browser limitations or if it's a relative path, just use the path directly.
+You can however specify your own `iconUrl` option and Plyr will determine if the url is absolute and requires loading by AJAX/CORS due to current browser
+limitations or if it's a relative path, just use the path directly.
-If you're using the `<base>` tag on your site, you may need to use something like this:
-[svgfixer.js](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2)
+If you're using the `<base>` tag on your site, you may need to use something like this: [svgfixer.js](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2)
-More info on SVG sprites here:
-[http://css-tricks.com/svg-sprites-use-better-icon-fonts/](http://css-tricks.com/svg-sprites-use-better-icon-fonts/) and
-the AJAX technique here: [http://css-tricks.com/ajaxing-svg-sprite/](http://css-tricks.com/ajaxing-svg-sprite/)
+More info on SVG sprites here: [http://css-tricks.com/svg-sprites-use-better-icon-fonts/](http://css-tricks.com/svg-sprites-use-better-icon-fonts/) and the AJAX
+technique here: [http://css-tricks.com/ajaxing-svg-sprite/](http://css-tricks.com/ajaxing-svg-sprite/)
### Cross Origin (CORS)
-You'll notice the `crossorigin` attribute on the example `<video>` elements. This is because the TextTrack captions are
-loaded from another domain. If your TextTrack captions are also hosted on another domain, you will need to add this
-attribute and make sure your host has the correct headers setup. For more info on CORS checkout the MDN docs:
+You'll notice the `crossorigin` attribute on the example `<video>` elements. This is because the TextTrack captions are loaded from another domain. If your
+TextTrack captions are also hosted on another domain, you will need to add this attribute and make sure your host has the correct headers setup. For more info
+on CORS checkout the MDN docs:
[https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)
### Captions
-WebVTT captions are supported. To add a caption track, check the HTML example above and look for the `<track>` element.
-Be sure to [validate your caption files](https://quuz.org/webvtt/).
+WebVTT captions are supported. To add a caption track, check the HTML example above and look for the `<track>` element. Be sure to
+[validate your caption files](https://quuz.org/webvtt/).
### JavaScript
@@ -194,11 +185,10 @@ Be sure to [validate your caption files](https://quuz.org/webvtt/).
You can specify a range of arguments for the constructor to use:
-* A CSS string selector that's compatible with
- [`querySelector`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector)
+* A CSS string selector that's compatible with [`querySelector`](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector)
* A [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement)
-* A [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList) or Array of
- [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement) - the first element will be used
+* A [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList) or Array of [HTMLElement](https://developer.mozilla.org/en/docs/Web/API/HTMLElement) -
+ the first element will be used
* A [jQuery](https://jquery.com) object - if multiple are passed, the first element will be used
Here's some examples
@@ -221,8 +211,8 @@ Passing a [NodeList](https://developer.mozilla.org/en-US/docs/Web/API/NodeList):
const player = new Plyr(document.querySelectorAll('.js-player'));
```
-The NodeList, HTMLElement or string selector can be the target `<video>`, `<audio>` or `[data-plyr-provider]` (for
-embeds) element itself or a container element.
+The NodeList, HTMLElement or string selector can be the target `<video>`, `<audio>` or `[data-plyr-provider]` (for embeds) element itself or a container
+element.
The second argument for the constructor is the [#options](options) object:
@@ -232,20 +222,17 @@ const player = new Plyr('#player', {
});
```
-The constructor will return a Plyr object that can be used with the [API](#api) methods. See the [API](#api) section for
-more info.
+The constructor will return a Plyr object that can be used with the [API](#api) methods. See the [API](#api) section for more info.
#### Options
-Options can be passed as an object to the constructor as above or as JSON in `data-plyr-config` attribute on each of
-your target elements:
+Options can be passed as an object to the constructor as above or as JSON in `data-plyr-config` attribute on each of your target elements:
```html
<video src="/path/to/video.mp4" id="player" controls data-plyr-config='{ "title": "This is an example video", "volume": 1, "debug": true }'></video>
```
-Note the single quotes encapsulating the JSON and double quotes on the object keys. Only string values need double
-quotes.
+Note the single quotes encapsulating the JSON and double quotes on the object keys. Only string values need double quotes.
| Option | Type | Default | Description |
| -------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -259,7 +246,7 @@ quotes.
| `iconPrefix` | String | `plyr` | Specify the id prefix for the icons used in the default controls (e.g. "plyr-play" would be "plyr"). This is to prevent clashes if you're using your own SVG sprite but with the default controls. Most people can ignore this option. |
| `blankUrl` | String | `https://cdn.plyr.io/static/blank.mp4` | Specify a URL or path to a blank video file used to properly cancel network requests. |
| `autoplay` | Boolean | `false` | Autoplay the media on load. This is generally advised against on UX grounds. It is also disabled by default in some browsers. If the `autoplay` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true. |
-| `autopause`&sup1; | Boolean | `false` | Only allow one player playing at once. |
+| `autopause`&sup1; | Boolean | `true` | Only allow one player playing at once. |
| `seekTime` | Number | `10` | The time, in seconds, to seek when a user hits fast forward or rewind. |
| `volume` | Number | `1` | A number, between 0 and 1, representing the initial volume of the player. |
| `muted` | Boolean | `false` | Whether to start playback muted. If the `muted` attribute is present on a `<video>` or `<audio>` element, this will be automatically set to true. |
@@ -290,8 +277,7 @@ There are methods, setters and getters on a Plyr object.
### Object
-The easiest way to access the Plyr object is to set the return value from your call to the constructor to a variable.
-For example:
+The easiest way to access the Plyr object is to set the return value from your call to the constructor to a variable. For example:
```javascript
const player = new Plyr('#player', {
@@ -440,7 +426,7 @@ player.source = {
sources: [
{
src: 'bTqVqk7FSmY',
- type: 'youtube',
+ provider: 'youtube',
},
],
};
@@ -456,7 +442,7 @@ player.source = {
sources: [
{
src: '143418951',
- type: 'vimeo',
+ provider: 'vimeo',
},
],
};
@@ -476,10 +462,9 @@ _Note:_ `src` property for YouTube and Vimeo can either be the video ID or the w
## Events
-You can listen for events on the target element you setup Plyr on (see example under the table). Some events only apply
-to HTML5 audio and video. Using your reference to the instance, you can use the `on()` API method or
-`addEventListener()`. Access to the API can be obtained this way through the `event.detail.plyr` property. Here's an
-example:
+You can listen for events on the target element you setup Plyr on (see example under the table). Some events only apply to HTML5 audio and video. Using your
+reference to the instance, you can use the `on()` API method or `addEventListener()`. Access to the API can be obtained this way through the `event.detail.plyr`
+property. Here's an example:
```javascript
player.on('ready', event => {
@@ -539,10 +524,9 @@ Some event details borrowed from [MDN](https://developer.mozilla.org/en-US/docs/
## Embeds
-YouTube and Vimeo are currently supported and function much like a HTML5 video. Similar events and API methods are
-available for all types. However if you wish to access the API's directly. You can do so via the `embed` property of
-your player object - e.g. `player.embed`. You can then use the relevant methods from the third party APIs. More info on
-the respective API's here:
+YouTube and Vimeo are currently supported and function much like a HTML5 video. Similar events and API methods are available for all types. However if you wish
+to access the API's directly. You can do so via the `embed` property of your player object - e.g. `player.embed`. You can then use the relevant methods from the
+third party APIs. More info on the respective API's here:
* [YouTube iframe API Reference](https://developers.google.com/youtube/iframe_api_reference)
* [Vimeo player.js Reference](https://github.com/vimeo/player.js)
@@ -551,9 +535,8 @@ _Note_: Not all API methods may work 100%. Your mileage may vary. It's better to
## Shortcuts
-By default, a player will bind the following keyboard shortcuts when it has focus. If you have the `global` option to
-`true` and there's only one player in the document then the shortcuts will work when any element has focus, apart from
-an element that requires input.
+By default, a player will bind the following keyboard shortcuts when it has focus. If you have the `global` option to `true` and there's only one player in the
+document then the shortcuts will work when any element has focus, apart from an element that requires input.
| Key | Action |
| ---------- | -------------------------------------- |
@@ -571,9 +554,8 @@ an element that requires input.
## Streaming
-Because Plyr is an extension of the standard HTML5 video and audio elements, third party streaming plugins can be used
-with Plyr. Massive thanks to Matias Russitto ([@russitto](https://github.com/russitto)) for working on this. Here's a
-few examples:
+Because Plyr is an extension of the standard HTML5 video and audio elements, third party streaming plugins can be used with Plyr. Massive thanks to Matias
+Russitto ([@russitto](https://github.com/russitto)) for working on this. Here's a few examples:
* Using [hls.js](https://github.com/dailymotion/hls.js) - [Demo](http://codepen.io/sampotts/pen/JKEMqB)
* Using [Shaka](https://github.com/google/shaka-player) - [Demo](http://codepen.io/sampotts/pen/zBNpVR)
@@ -598,13 +580,11 @@ Plyr supports the last 2 versions of most _modern_ browsers. IE11 is also suppor
| IE10+ | ✔&sup2; |
| IE9 | API only&sup3; |
-1. Mobile Safari on the iPhone forces the native player for `<video>` unless the `playsinline` attribute is present.
- Volume controls are also disabled.
+1. Mobile Safari on the iPhone forces the native player for `<video>` unless the `playsinline` attribute is present. Volume controls are also disabled.
2. Native player used (no support for `<progress>` or `<input type="range">`) but the API is supported (v1.0.28+)
3. IE10 has no native fullscreen support, fallback can be used (see [options](#options))
-The `enabled` option can be used to disable certain User Agents. For example, if you don't want to use Plyr for
-smartphones, you could use:
+The `enabled` option can be used to disable certain User Agents. For example, if you don't want to use Plyr for smartphones, you could use:
```javascript
{
@@ -616,10 +596,9 @@ If a User Agent is disabled but supports `<video>` and `<audio>` natively, it wi
## RangeTouch
-Some touch browsers (particularly Mobile Safari on iOS) seem to have issues with `<input type="range">` elements whereby
-touching the track to set the value doesn't work and sliding the thumb can be tricky. To combat this, I've created
-[RangeTouch](https://rangetouch.com) which I'd recommend including in your solution. It's a tiny script with a nice
-benefit for users on touch devices.
+Some touch browsers (particularly Mobile Safari on iOS) seem to have issues with `<input type="range">` elements whereby touching the track to set the value
+doesn't work and sliding the thumb can be tricky. To combat this, I've created [RangeTouch](https://rangetouch.com) which I'd recommend including in your
+solution. It's a tiny script with a nice benefit for users on touch devices.
## Issues
@@ -627,13 +606,13 @@ If you find anything weird with Plyr, please let us know using the GitHub issues
## Author
-Plyr is developed by [@sam_potts](https://twitter.com/sam_potts) / [sampotts.me](http://sampotts.me) with help from the
-awesome [contributors](https://github.com/sampotts/plyr/graphs/contributors)
+Plyr is developed by [@sam_potts](https://twitter.com/sam_potts) / [sampotts.me](http://sampotts.me) with help from the awesome
+[contributors](https://github.com/sampotts/plyr/graphs/contributors)
## Donate
-Plyr costs money to run, not only my time - I donate that for free but domains, hosting and more. Any help is
-appreciated... [Donate to support Plyr](https://www.paypal.me/pottsy/20usd)
+Plyr costs money to run, not only my time - I donate that for free but domains, hosting and more. Any help is appreciated...
+[Donate to support Plyr](https://www.paypal.me/pottsy/20usd)
## Mentions
@@ -660,16 +639,14 @@ appreciated... [Donate to support Plyr](https://www.paypal.me/pottsy/20usd)
* [Oscar Radio](http://oscar-radio.xyz/)
* [Sparkk TV](https://www.sparkktv.com/)
-Let me know on [Twitter](https://twitter.com/sam_potts) I can add you to the above list. It'd be awesome to see how
-you're using Plyr :-)
+Let me know on [Twitter](https://twitter.com/sam_potts) I can add you to the above list. It'd be awesome to see how you're using Plyr :-)
## Useful links and credits
Credit to the PayPal HTML5 Video player from which Plyr's caption functionality was originally ported from:
* [PayPal's Accessible HTML5 Video Player](https://github.com/paypal/accessible-html5-video-player)
-* [An awesome guide for Plyr in Japanese!](http://syncer.jp/how-to-use-plyr-io) by
- [@arayutw](https://twitter.com/arayutw)
+* [An awesome guide for Plyr in Japanese!](http://syncer.jp/how-to-use-plyr-io) by [@arayutw](https://twitter.com/arayutw)
## Thanks