Comparar commits

...

2508 Commits

Autor SHA1 Mensagem Data
Pat O'Neill c40ea4186b feat: Add a noConflict method. 2017-10-18 12:54:35 -04:00
Pat O'Neill 0287f6e076 fix: Make sure we remove vjs-ended from the play toggle in all appropriate cases. (#4661) 2017-10-13 13:46:51 -04:00
Gary Katsevman e8511a5799 chore(gh-release): no console log on success (#4657)
We've been printing the resulting value from a successful call to the ghrelease, this was useful for debugging but isn't necessary anymore.
Add the result to the error conditional with some headings.
2017-10-10 11:35:50 -07:00
Gary Katsevman 69577790eb 6.3.3 2017-10-10 13:52:45 -04:00
Brandon Casey b1de506b43 fix: a possible breaking change caused by the use of remainingTimeDisplay (#4655) 2017-10-10 11:35:46 -04:00
TaeSoo 태수 6738f765da docs(hooks): Fix Typo (#4652) 2017-10-06 18:01:54 -07:00
Pat O'Neill 8ec61bbb20 6.3.2 2017-10-04 10:37:26 -04:00
Thijs Triemstra 85a34d1b49 docs: Document how to add a version number to a plugin (#4642) 2017-10-04 10:32:18 -04:00
Pat O'Neill 4658c7bad6 fix: Fix a typo in current time display component. (#4647) 2017-10-04 10:31:10 -04:00
Pat O'Neill 8878acc040 6.3.1 2017-10-03 13:11:27 -04:00
Pat O'Neill 20f7fe991f fix: Make sure time displays use correctly-formatted time. (#4643) 2017-10-03 12:52:58 -04:00
Pat O'Neill f0d9c240fe 6.3.0 2017-10-03 11:04:07 -04:00
Brandon Casey 445eb26722 feat: Add remainingTimeDisplay method to Player (#4620) 2017-10-02 16:29:40 -04:00
Thom 5ca0992cf1 chore(lang): Update Dutch (#4588) 2017-10-02 16:08:04 -04:00
ngoisaosang ac58dbf13a chore(lang): Update Vietnamese (#4625) 2017-10-02 16:04:57 -04:00
Alex Barstow 1ac8065ea6 feat: Do not set focus in sub-menus to prevent undesirable scrolling behavior in iOS (#4607) 2017-10-02 15:29:34 -04:00
Brandon Casey f51d36b053 feat: display currentTime as duration and remainingTime as 0 on ended (#4634) 2017-10-02 11:19:29 -04:00
Brandon Casey fa6f884409 refactor: Create a base time display class, and use it (#4633) 2017-10-02 10:58:30 -04:00
Brandon Casey 335bcded98 fix: reset to a play/pause button when seeking after ended (#4614) 2017-09-20 13:45:47 -04:00
Thijs Triemstra d8ea23e0c9 docs: update player reference in advanced plugins doc (#4622) 2017-09-20 10:55:29 -04:00
Erik Demaine 9d249bb23b docs: Document playbackRates (#4602) 2017-09-19 17:44:36 -04:00
greenkeeper[bot] 7929677f6f chore(package): update remark-validate-links to version 7.0.0 (#4585) 2017-09-19 17:21:39 -04:00
greenkeeper[bot] 6cd785ab7f chore(package): update grunt-browserify to version 5.2.0 (#4578) 2017-09-19 17:21:20 -04:00
Brandon Casey edde614822 chore: alias rollup-dev to watch for development (#4615) 2017-09-14 15:09:52 -04:00
ldayananda 9f969300d7 6.2.8 2017-09-01 13:37:46 -04:00
Matthew Boles 006fb3b705 docs: update to width and height doc comments (#4592) 2017-09-01 13:31:48 -04:00
Gary Katsevman 5e23048370 fix(package): remove pkg.module (#4594)
More info available in #4580.

Fixes #4580.
2017-08-31 16:16:41 -04:00
Gary Katsevman 95c4ae0404 fix: rely on browser or tech to handle autoplay (#4582)
When setting the source, we were calling `play` if `autoplay` was set. We shouldn't do that and instead we should rely on the browser or tech (like Flash) to handle it properly.
2017-08-30 14:29:08 -04:00
Gary Katsevman 9588602d48 docs(COLLABORATOR_GUIDE): how to release Video.js (#4586) 2017-08-30 14:22:04 -04:00
Pat O'Neill 6e2a302af8 6.2.7 2017-08-24 16:20:40 -04:00
Gary Katsevman fe63992bd1 fix: use typeof for checking preload option (#4574) 2017-08-17 17:48:17 -04:00
greenkeeper[bot] 7b251d0d35 chore(package): update rollup to version 0.47.5 (#4572) 2017-08-17 13:30:46 -04:00
Gary Katsevman 09ace0c625 6.2.6 2017-08-16 17:32:35 -04:00
Atef Ben Ali 3e63bf3d17 fix(lang): typos in ar.json (#4528) 2017-08-16 14:31:28 -04:00
Gary Katsevman d7f7e05b5c chore(package): update rollup to version 0.47.4 (#4570)
Closes #4561
2017-08-16 14:14:26 -04:00
greenkeeper[bot] 8c21f0afe0 chore(package): update grunt-browserify to version 5.1.0 (#4565) 2017-08-16 14:05:29 -04:00
greenkeeper[bot] f6f9998299 chore(package): update grunt-babel to version 7.0.0 (#4553) 2017-08-16 14:02:00 -04:00
Gary Katsevman d668c4976b fix: make boolean attributes set and check both the associated property and the attribute (#4562)
Make boolean attributes like muted set the property video.muted = {{boolean}} and the attribute video.setAttribute('muted', 'muted') when changing the value.
Also, in html5's createEl, we were setting/updating attributes for various properties but we were only setting the attributes and not also the properties but also autoplay was happening first rather than last which caused autoplay to fail because muted and playsinline weren't necessary set by that time.

Fix #4351.
2017-08-15 17:02:07 -04:00
Rafael Gaspar a6b8425f6b fix: playback rate default text (#4558)
Previously, the default text only said `1` now it says `1x` which matches the look after changing the playback rate.
2017-08-14 17:59:41 -04:00
mister-ben 1f3375e485 docs: updates to faq, language guide, and minor edits (#4556) 2017-08-14 17:02:48 -04:00
Gary Katsevman 19ebc0dda5 chore: improve dev and beginner experience (#4555)
Makes the output of dev rollup and babel watch more quiet.
Add a task to copy .example files over to non .example files if the non .example files are not present.
2017-08-14 16:58:57 -04:00
Gary Katsevman db55bbd3ec fix: remove 'use strict' from rollup because vttjs isn't strict (#4551) 2017-08-14 16:51:05 -04:00
greenkeeper[bot] 6233d14091 chore(package): update klaw-sync to version 3.0.0 (#4544) 2017-08-14 16:39:07 -04:00
Alex Barstow 0c337b3d67 Fix: issue where tracks are disabled and cuepoints are cleared in iOS native player (#4496)
In the HTML5 tech, when we go fullscreen to the native player, listen for change events and restore previous mode state for the metadata text tracks.
2017-08-14 16:36:36 -04:00
Kishan cd2f5106ca fix: set width and height for vjs-button like the SubsCaps button (#4548)
Add a width and height property of 100% to `.vjs-control .vjs-button` selector.

Fixes #4547.
2017-08-10 15:19:59 -04:00
Gary Katsevman 998c0042cb 6.2.5 2017-07-26 16:49:20 -04:00
Gary Katsevman ee014e2e04 fix: only change focus from BPB if not a mouse click (#4497) 2017-07-26 16:09:31 -04:00
Gary Katsevman fe95a7720a chore(greenkeeper): ignore webpack and uglify (#4518) 2017-07-26 13:29:39 -04:00
greenkeeper[bot] 7c80e1300a chore(package): update remark-cli to version 4.0.0 (#4508) 2017-07-25 17:08:26 -04:00
greenkeeper[bot] abb5d67eb2 chore(package): update remark-parse to version 4.0.0 (#4507) 2017-07-25 17:08:12 -04:00
greenkeeper[bot] bbd92ab813 chore(package): update remark-stringify to version 4.0.0 (#4506) 2017-07-25 17:07:21 -04:00
Gary Katsevman d889b660ac 6.2.4 2017-07-14 15:49:06 -04:00
Gary Katsevman 07594bcf59 chore: fix gh-release minimist call (#4489) 2017-07-14 15:48:49 -04:00
Gary Katsevman 14ae1e9658 6.2.3 2017-07-14 15:41:59 -04:00
Gary Katsevman b1ac2e0249 chore(gh-release): add prerelease flag and find right zip (#4488)
Add a --prerelease flag so we can run gh-release.js manually and mark releases as prerelease.
Also, get the correct zip file.
2017-07-14 15:27:48 -04:00
Gary Katsevman 269e504d26 6.2.2 2017-07-14 14:56:58 -04:00
Gary Katsevman 971f633c73 chore(package): update rollup to version 0.45.2 (#4487)
Closes #4475
2017-07-14 14:43:58 -04:00
Gary Katsevman 03fd402ea9 docs: make jsdoc generate anchor names so ToC links work (#4471)
Also, run some more explicit replacement queries so all ToC links work if they're generated differently from gfm.
2017-07-14 14:22:02 -04:00
Gary Katsevman 3a600d0eea chore: add automatic github release (#4466)
This will automatically do a github release with the correct changelog entry and the built zip file.
If a publish is made with `--tag next` it will mark the release as a pre-release.

To use, just add `VJS_GITHUB_USER` and `VJS_GITHUB_TOKEN` env variables as part of the publish command:
```sh
$ VJS_GITHUB_USER=gkatsev VJS_GITHUB_TOKEN=test_token npm publish --tag next
```
2017-07-14 14:21:07 -04:00
Alex Barstow 1e80e59614 test: add unit tests for player.duration() (#4459)
Unit tests for https://github.com/videojs/video.js/pull/4443
2017-07-14 14:20:37 -04:00
Pat O'Neill 7579fc1800 docs: Fix Player#src API documentation. (#4454) 2017-07-14 14:20:00 -04:00
Gary Katsevman 4f43616160 fix(playback rate menu): cycling rates via click (#4486)
In 6.0, we changed the way that Menu Buttons were being created by
wrapping an actual button with a menu sibling in a container. The
playback rate menu also had a rate value display. In 6.x, this rate
value display ended up coming on top of the button itself and capturing
it's clicks. So, we want to remove pointer-events from the rate-value
display and resize the actual button to be the size of the control.
2017-07-14 14:18:23 -04:00
Gary Katsevman 687aae50ff chore: switch to using chrome for testing PRs on travis (#4462) 2017-07-05 09:44:43 +10:00
Aeoril 6986dbb851 chore(build): remove unused var in build/version.js (#4458) 2017-07-04 11:11:29 +10:00
Gary Katsevman 39ff0f4fb6 6.2.1 2017-06-28 16:58:10 +10:00
Gary Katsevman 82c8b80548 fix: auto-removal remote text tracks being removed when not supposed to (#4450)
We added a feature so that remote text tracks can auto-removed when a source changes. However, in 6.x we changed the source behavior to be asynchronous meaning that some text tracks were accidentally being removed when they weren't supposed to be.
For example:
```js
var player = videojs('my-player');
player.src({src: 'video.mp4', type: 'video/mp4'});
 // set second arg to false so that they get auto-removed on source change
player.addRemoteTextTrack({kind: 'captions', src: 'text.vtt', srclang: 'en'}, false);
```
Now when the player loads, this captions track is actually missing because it was removed.

Instead of adding auto-removal tracks immediately to the list, wait until we've selected a source before adding them in.


Fixes #4403 and #4315.
2017-06-28 16:38:29 +10:00
Alex Barstow f5cc165cad fix: player.duration() should return NaN if duration is not known (#4443)
player.duration() currently returns 0 if the duration is not known, when it should return NaN. The problem is that if NaN is passed to player.duration() as an argument, we set the duration to 0. If player.cache_.duration was set to NaN by other means, player.duration() would still return 0.

Modify the player duration() method so that it will 1.) set the cached duration to NaN if it is passed in as an argument, and 2.) return the proper value when called without an argument.
2017-06-28 16:37:00 +10:00
mister-ben b4dc4f85b0 fix: Use passive event listeners for touchstart/touchmove (#4440)
If passive event listening is supported, we should use it.

Fixes #4432.
2017-06-28 16:36:06 +10:00
mister-ben b63666379d fix: Safari picture-in-picture triggers fullscreenchange (#4437)
When picture-in-picture mode is entered on Safari, `webkitbeginfullscreen` is triggered which results in a proxied `fullscreenchange` event and adding the fullscreen class to the player. That causes the tech element to collapse to zero height so that the "this video is playing in picture in picture" placeholder is not visible.
On `webkitbeginfullscreen` check whether the presentation mode is `picture-in-picture` before proxying `fullscreenchange` event.
2017-06-28 16:35:01 +10:00
Pat O'Neill 77ba3d13d9 perf: Various small performance improvements. (#4426)
These are a few performance improvements.

* Use textContent instead of innerHTML for text content.
* Construct TextTrackSettings content with HTML strings where possible because it's a bit faster than manual DOM construction.
* Do minimal DOM updates to time controls. This reduces our timeupdate footprint from ~2-2.5ms to ~1ms!
2017-06-28 16:32:58 +10:00
Jet Fontanilla 7f7ea70cb7 fix: IE10 issue for disableOthers when property access results in "permission denied" (#4395)
Fixes #4378
2017-06-28 16:32:04 +10:00
mister-ben e0824c8294 fix: Update translations to match correct string (#4383)
The lang files were translating "all settings to the default values" instead of "restore all settings to the default values".
2017-06-28 16:31:44 +10:00
Pat O'Neill cc6e82442f docs: Fix links in API docs for several Player events. (#4427) 2017-06-27 09:53:08 +10:00
Caley Shem-Crumrine 97021554cd docs: Update name of FullscreenToggle in documentation (#4410) 2017-06-27 09:52:05 +10:00
Pat O'Neill c4bbe5d120 chore(sandbox): Fix paths in sandbox files. (#4416) 2017-06-27 09:51:05 +10:00
Gary Katsevman 66a0d23e05 chore(package): update husky to version 0.14.1 (#4444)
Closes #4436
2017-06-27 09:44:28 +10:00
greenkeeper[bot] 4bce4a2954 chore(package): update rollup-watch to version 4.0.0 (#4396) 2017-06-27 09:43:42 +10:00
greenkeeper[bot] f87b12c3af chore(package): update rollup to version 0.42.0 (#4392) 2017-06-27 09:43:18 +10:00
ldayananda 9329e3ef8e docs: Fixing player.remoteTextTracks jsdoc (#4417)
Fixes the sidebar link on the docs site for remoteTextTracks.
2017-06-19 16:01:01 -04:00
Gary Katsevman 546bef5321 6.2.0 2017-05-30 15:25:58 -04:00
Gary Katsevman c31836c30c feat: Use Rollup to generate dist files (#4301) 2017-05-25 19:40:35 -04:00
Gary Katsevman a5a68e819a chore: update translations needed (#4380) 2017-05-25 18:32:17 -04:00
greenkeeper[bot] 98160700e5 chore(package): update videojs-flash to version 2.0.0 (#4375) 2017-05-25 18:16:31 -04:00
h0lysl4y3r e5e1c7f269 feat(lang): Create sk.json (#4374) 2017-05-25 18:16:23 -04:00
Hollton 0c16c5f3cf feat(lang): Update zh-CN.json (#4370) 2017-05-25 18:16:01 -04:00
greenkeeper[bot] d57f09f7cf chore(package): update grunt-contrib-cssmin to version 2.2.0 (#4345) 2017-05-25 18:15:42 -04:00
Adrian P. Blunier 2a26c7f87b feat(lang): Adding galician (#4334) 2017-05-25 18:15:33 -04:00
ldayananda eade52e174 test(TextTrackDisplay): Removing incorrect test techOrder (#4379) 2017-05-25 18:05:45 -04:00
ldayananda 188ead1c81 feat: Persist caption/description choice over source changes in emulated tracks (#4295) 2017-05-25 14:09:00 -04:00
Gary Katsevman 8f67b4fc54 6.1.0 2017-05-15 14:35:23 -04:00
Gary Katsevman cb6005eca4 fix: only disable user-selection on sliders (#4354) 2017-05-15 12:04:42 -04:00
Alex Barstow 8d80a5846e feat: add 'playsinline' player option (#4348)
Video.js players can accept a number of standard <video> element options (autoplay, muted, loop, etc), but not currently playsinline, which is now part of the [HTML spec](https://html.spec.whatwg.org/multipage/embedded-content.html#attr-video-playsinline). We should add it to the list of <video> attributes that can be provided to the player as options.
2017-05-12 16:39:37 -04:00
Gary Katsevman 35df35143f feat: deprecate firstplay event (#4353) 2017-05-12 16:38:48 -04:00
Martin Bachwerk 3087830ed7 fix: Only update text track mode if changed (#4298) 2017-05-12 16:35:39 -04:00
Garrett 483e5a2ca5 feat: Add getVideoPlaybackQuality API (#4338)
Provides a tech getter for getVideoPlaybackQuality as specified by the W3C's Media Playback Quality API: https://wicg.github.io/media-playback-quality/.
2017-05-12 15:22:02 -04:00
Gary Katsevman 3dcfa9568a fix: TextTrackButton on Safari and iOS (#4350)
On Safari and iOS, we use native text tracks, so, during text track
button creation, textTracks() is populated. However, `this.kinds_` isn't
necessarily set and ends up throwing.

Instead, we want to move the fallback for `this.kinds_` from the
constructor and right above the usage of `this.kinds_`.
2017-05-12 14:51:12 -04:00
greenkeeper[bot] b5c60f339b fix(package): update global to version 4.3.2 (#4291)
https://greenkeeper.io/
2017-05-11 17:52:30 -04:00
mister-ben 03bab83dde fix: prevent dupe events on enabled ClickableComponents (#4316)
Prevent ClickableComponents re-adding event listeners each time enabled() is called.

* Keeps track of enabled state (this.enabled_)
* enable() doesn't do anything if the component is enabled, so the event handlers are not re-added

Fixes #4312
2017-05-11 17:32:20 -04:00
Owen Edwards f773c473f9 chore: Fix examples and docs and some links (#4279)
* Fix the doc/example/elephantsdream/index.html file, add an index of doc/examples, and update CDN links to use video.js v5.19.
* Add poster from CDN to Elephants Dream examples.
2017-05-11 17:16:12 -04:00
mister-ben ae423df4f5 feat: Add a version class to the player (#4320)
Adds `vjs-v6` class so you can target that version of Video.js.
2017-05-11 17:15:12 -04:00
Pat O'Neill 0a19cf0d6a feat: Add 'beforepluginsetup' event and named plugin setup events (e.g. 'pluginsetup:foo') (#4255)
This adds a beforepluginsetup event as well as beforepluginsetup:$name and pluginsetup:$name events.

The drive behind this is improving the ability for people to make cross-plugin dependencies in a more robust manner.
2017-05-11 17:13:22 -04:00
Stéphane Roucheray da1d8613d7 chore: typo soruce -> source (#4307) 2017-05-11 17:00:59 -04:00
mister-ben da0f1ee681 feat: remove playbackRate blacklist for recent Android Chrome (#4321)
Android Chrome now supports playbackRate properly, so removes the blacklist added in #3246 for newer Chrome versions.
Adds `browser.CHROME_VERSION` as a necessary evil.
No longer blacklists for Chrome 58+ -- this could possibly be fixed since 52, but 58 is all I've been able to test on and most users should keep Chrome up to date.
2017-05-11 16:59:22 -04:00
Dave Kiss cff2e503ef docs(react-guide): Use a React component as a VJS component (#4287) 2017-05-11 16:33:28 -04:00
Brandon Casey 561d5ddf76 fix a comment typo (#4293) 2017-04-19 23:56:07 -04:00
Gary Katsevman d6e56e9222 6.0.1 2017-04-13 16:58:11 -04:00
Gary Katsevman 7490a499ce chore: add slack travis notifications (#4282) 2017-04-13 12:23:31 -04:00
Matthew Neil 1ea00419c9 fix: set IE_VERSION correctly for IE11 (#4281)
videojs.browser.IE_VERSION is null in IE11 because IE11 uses a different user agent string than other IE versions

Fixes #4278
2017-04-13 11:28:03 -04:00
Aaron Chamberlain 230743ecb1 docs: add a Webpack usage guide (#4261) 2017-04-12 18:16:41 -04:00
Garrett 39fd73f781 docs: remove mentions of bower support (#4274)
Since video.js 6 no longer officially supports bower (#4012), remove some old mentions in the docs of bower.
2017-04-12 18:15:54 -04:00
Gary Katsevman 92e5d9fb5a fix: techOrder names can be camelCased. (#4277)
In the new middleware work, the way that new sources were loaded was refactored. We also recently made techs and components work either TitleCased or camelcased. There was one comparison that didn't do the proper check and cause the tech to be reloaded, even if the two techs were the same.
2017-04-12 17:17:33 -04:00
Dennis JongHyuck Won 083f643e63 chore: gitignore all npm-debug.log.* (#4252) 2017-04-07 13:41:30 -04:00
Alex Barstow 02721c7c03 docs(component): Replace VolumeMenuButton with VolumePanel in component tree (#4267)
Video.js 6 has switch to using the VolumePanel instead of the VolumeMenuButton.

Fixes #4266
2017-04-07 13:39:57 -04:00
Gary Katsevman c20ca5cc97 chore(changelog): Update CHANGELOG with v5 changes (#4257) 2017-04-07 13:38:39 -04:00
Gary Katsevman d9d7278282 6.0.0 2017-04-03 17:37:03 -04:00
Gary Katsevman c7fd68d4ae 6.0.0-RC.8 2017-03-31 10:50:26 -04:00
Gary Katsevman e98c65d7a6 fix: remove focus ring from player itself (#4237) 2017-03-30 13:46:52 -04:00
Gary Katsevman 29d733d0d1 chore: ignore qunit and sinon from greenkeeper (#4242) 2017-03-30 13:46:41 -04:00
Gary Katsevman 0908d914ac fix: silence play promise error (#4247) 2017-03-30 13:46:31 -04:00
Gary Katsevman 9274457e4c feat: Make text tracks settings more responsive (#4236) 2017-03-30 11:09:00 -04:00
Gary Katsevman 0d19a05972 chore: remove bower.json (#4238)
Supporting bower is a lot of extra work and there's no insight or
information into its usage.

Closes #4012
2017-03-29 17:38:41 -04:00
Gary Katsevman dc37cb24f2 6.0.0-RC.6 2017-03-24 18:43:52 -04:00
Gary Katsevman 6d876ee6ef chore: 6.x build updates (#4228)
This runs the changelog generation on versioning automatically, if it isn't a pre-release.
It also runs the build and API docs generation on publish and makes sure that the generated API docs are in the published package.
2017-03-24 18:42:39 -04:00
Kevin Litchfield 46dd0aac11 test: fix IE9 rounding issue with lastvolume test (#4230)
#4227 caused an error in IE9 because it returns back a bad float number.
Instead, we toFixed(1) the response
2017-03-24 18:26:28 -04:00
Kevin Litchfield 16c1e0adc0 fix: keep minimum volume after unmuting above 0.1 (#4227)
If, when unmuting, the last volume is below 0.1, force it to be 0.1.

Fixes #4054.
2017-03-24 15:14:41 -04:00
greenkeeper[bot] 7d12c9ea85 chore(package): update videojs-vtt.js to version 0.12.3 (#4221) 2017-03-24 14:38:06 -04:00
Gary Katsevman 312b10ca44 docs(coc): introduce CODE_OF_CONDUCT.md (#4160) 2017-03-23 16:39:17 -04:00
greenkeeper[bot] 022305706c chore(package): update webpack to version 2.3.0 (#4219)
https://greenkeeper.io/
2017-03-23 16:21:35 -04:00
Brandon Casey f2b5a057fe fix: removeCue should work with native passed in cue (#4208) 2017-03-23 14:31:41 -04:00
Brandon Casey dbfba28a10 fix: not showing default text tracks over video (#4216)
This allows default tracks or tracks with a `mode`of `showing` to be seen
when they are added (as we would expect). Rather than only being seen
after the first `modechange` event (aka a selection from the menu). This is done by watching for `loadstart` on Player.
2017-03-23 14:03:15 -04:00
Brandon Casey 61e20786a9 docs: fix links in generated docs (#4200) 2017-03-21 17:13:06 -04:00
Gary Katsevman 0fd7aad850 fix: make sure audio track hides with one item (#4202) 2017-03-15 11:27:52 -04:00
Alex Barstow d79b8a7013 feat: time tooltips will not be added to a player on mobile devices (#4185)
Currently, the behavior of time tooltips is inconsistent across iOS and Android devices so we want to hide the tooltips on mobile devices for the time being.
2017-03-13 11:54:29 -04:00
Brandon Casey 41be5dca4e docs: tech order will only have html5 by default (#4188) 2017-03-13 11:53:30 -04:00
Gary Katsevman 424fa51c28 fix: make load progress buffered regions height 100% (#4190) 2017-03-13 11:53:04 -04:00
Brandon Casey 90030d5e99 feat: Make pause on open optional for ModalDialog via options (#4186)
* The new option is called pauseOnOpen, and defaults to true
* default pauseOnOpen to false in the `ErrorDisplay`
2017-03-13 11:26:33 -04:00
Owen Edwards af1c6e374c chore(docs): Use Elephants Dream video files from CDN for docs/examples/elephantsdream/ (#4181) 2017-03-13 10:54:15 -04:00
Gary Katsevman c829fcff5f 6.0.0-RC.5 2017-03-09 15:45:42 -05:00
Gary Katsevman 23823556d4 6.0.0-RC.4 2017-03-09 13:30:43 -05:00
Gary Katsevman ddde644c78 fix(vttjs): wait till tech el in DOM before loading vttjs (#4177)
The issue is that in Flash, Flash.embed wraps the object element in a div but that object element is what is referenced by this.el(), so, parentNode isn't null but we aren't actually in the DOM. Instead, just check to see whether the tech element is in the DOM or not via node.contains().
2017-03-08 11:27:59 -05:00
Gary Katsevman cb890a965c fix(ie8): various minor ie8 fixes (#4175)
This fixes a logging in the console regarding timetooltips which don't exist. Also, makes sure not to focus the menu button when the captions settings menu item is clicked since the caption settings is getting focused instead. In addition, it makes sure the legend text in the track settings is the foreground color.
2017-03-07 15:44:08 -05:00
Gary Katsevman 1770f00018 fix(icon-placeholder): align icons on ie8 properly (#4174)
Make sure that the button inside the menu button element isn't a
vjs-control but make sure that the icon-placeholder is sized properly.
2017-03-07 15:43:44 -05:00
Pat O'Neill 05e64948c5 chore(test): silence plugin warning from test (#4173) 2017-03-07 14:13:19 -05:00
Gary Katsevman bf787bd5cc chore(package): update uglify-js to version 2.8.8 (#4170)
Closes #4138

https://greenkeeper.io/
2017-03-07 13:59:20 -05:00
Gary Katsevman 67634cf216 fix(tracks): allow forcing native text tracks on or off (#4172)
In addition, the track buttons need to update on the ready event because when the tech loads, it could run with support native captions, so, it needs to know whether to include the captions settings menu.
And all tracks should always be included in player.textTracks() and not just player.remoteTextTracks().
2017-03-07 13:53:57 -05:00
Gary Katsevman 88ee6af431 fix(subs-caps-button): add hide threshold to subs-caps button (#4171)
This is a followup from #4157 but for the subs-caps button.
2017-03-07 13:52:51 -05:00
Justin Anastos c611f9f358 fix(MenuButton): Unify behavior of showing/hiding (#4157)
Implement a `hideThreshold` property that defaults to 1 so
descendants can override it if necessary. Right now the only
descendant that will override will be `CaptionsButton` because
video.js adds a "captions settings" for emulated text tracks.
2017-03-07 11:28:00 -05:00
Gary Katsevman 2ee133f6f8 fix(subs-caps-button): captions items should hide icon from SR (#4158)
Move the CC icon in the SubsCapsMenuItem into an icon-placeholder span. Also, include that information for the screen reader.
In addition, only apply default sizing to icon-placeholder if they're direct descendants of a vjs-control.
2017-03-07 11:26:09 -05:00
Owen Edwards 5ffe1cd49e chore(sandbox): Fix poster image to match the video in the 'combined-tracks.html' example in sandbox (#4164) 2017-03-06 17:21:18 -05:00
Owen Edwards d9ec7bc1ba fix(audio-tracks-button): add wrapper CSS builder to audio tracks menu button (#4163) 2017-03-06 12:17:49 -05:00
Gary Katsevman e5af0a5e21 fix(subs-caps-button): add wrapper CSS builder to subs caps button (#4156) 2017-03-02 17:53:57 -05:00
Gary Katsevman db901c54d9 fix(text track settings): focus subs-caps button if exists over CC button (#4155) 2017-03-02 17:53:47 -05:00
mister-ben 74eb5d4772 feat: Combine captions and subtitles tracks control (#4028) 2017-03-02 15:23:41 -05:00
Gary Katsevman f95815bcd0 chore(tests): make tests not print out errors (#4141) 2017-03-02 15:22:59 -05:00
Gary Katsevman 61d427c7ee fix: add buildWrapperCSSClass methods to all menu buttons (#4147)
In #4034, we changed the way that menu buttons work slightly by introduction a wrapper element with a separate wrapper css builder. However, this broke, at least the playback-rate menu.
This PR adds a buildWrapperCSSClass to each of our menu buttons.
2017-03-02 15:04:35 -05:00
Gary Katsevman a9f8fcb2a2 fix(playback rate menu): playback rate menu items should be selectable (#4149) 2017-03-02 14:55:36 -05:00
greenkeeper[bot] 5265624410 fix(package): update xhr to version 2.4.0 (#4101)
https://greenkeeper.io/
2017-03-02 14:52:02 -05:00
Brandon Casey fb88ae2bfc fix(dom): getBoundingClientRect check that el is defined (#4139)
Verify that el is defined so that we don't throw if we get to this function with an undefined el
2017-03-02 14:51:19 -05:00
Brandon Casey a2b1a33606 fix: cues at startTime 0 do not fire (#4152)
Previously timeupdate would fire before the video was playing, and the tech was not ready. This caused issues when preload was set to auto, because cuechange would fire before the video was even started for cues with a startTime of 0.

Wait for tech to be ready before watching for timeupdate
update unit tests to use TechFaker
Add a unit test to verify that we wait for Tech to be ready.
2017-03-02 14:35:45 -05:00
greenkeeper[bot] 9ef2d07b41 chore(package): update remark-lint to version 6.0.0 (#4129)
https://greenkeeper.io/
2017-03-02 12:00:32 -05:00
greenkeeper[bot] 139567738f chore(package): update remark-validate-links to version 6.0.0 (#4128)
https://greenkeeper.io/
2017-03-02 11:59:32 -05:00
greenkeeper[bot] d5a619d10e chore(package): update remark-toc to version 4.0.0 (#4127)
https://greenkeeper.io/
2017-03-02 11:58:20 -05:00
greenkeeper[bot] dc9ed1cf5f chore(package): update remark-cli to version 3.0.0 (#4126)
https://greenkeeper.io/
2017-03-02 11:58:04 -05:00
Pat O'Neill 326398d312 feat: don't throw when re-registering a plugin unless it's a player method (#4140) 2017-03-02 11:17:42 -05:00
Gary Katsevman 0f57341e38 fix(cues): only copy cue props that don't exist (#4145) 2017-03-02 11:16:12 -05:00
Owen Edwards dacf0ca133 chore: change accessibility test in grunt.js to remove unnecessary warning message. (#4143) 2017-03-02 11:15:49 -05:00
Gary Katsevman 3bbf0199e6 fix: early play should wait for player ready, even if source is available (#4134)
Fixes #4057
2017-03-02 11:15:06 -05:00
Gary Katsevman 6874fa2824 chore: increase browserstack/karma timeouts, dispose player in tests (#4135)
Increase timeout because IE8 can take more than 5 minutes to run.
Increase browser disconnect timeout so that browsers that succeed but don't report back to karma don't fail the build.
Make webpack more quiet.
Dispose players created in hooks tests which also increase stability.
2017-02-28 15:02:18 -05:00
Owen Edwards 715f5847da chore(sandbox): Use Elephants Dream video files from CDN for the sandbox/descriptions.html.example. (#4137) 2017-02-27 13:53:32 -05:00
Gary Katsevman 96a387f723 feat: update videojs-vtt.js and wrap native cues in TextTrack (#4115)
Update videojs-vtt.js and don't auto-export its versions of VTTCue globally.
When our TextTrack object is given a cue, if it's a native cue, wrap it in our emulated vttjs.VTTCue.

Fixes #4093.
2017-02-27 13:52:01 -05:00
Gary Katsevman f558648f44 6.0.0-RC.3 2017-02-22 14:56:33 -05:00
Lionel 8c1302ee34 feat(lang): French translation update (#4118) 2017-02-22 14:25:53 -05:00
Brandon Casey 4388beae91 feat: add a controlText function to MenuButton (#4125) 2017-02-22 14:25:23 -05:00
Gary Katsevman 576ac19214 fix: addChild instance names should be toTitleCased (#4116) 2017-02-22 14:00:15 -05:00
Gary Katsevman db0112053f feat: allow tokens in localize, localize progress bar time (#4060)
It allows you to use string as an key for the language files but have a default value that's different. In this case, we have a key of progress bar timing: currentTime={1} duration={2} which is used so that we have a descriptive key to what is happening. The default value matches that default value in en.json: {1} of {2}. The reason for the default value is so that the translation uses {1} of {2} for the actual localization without requiring en.json to be included in videojs by default.

Fix #4024.
2017-02-21 16:17:00 -05:00
Gary Katsevman 1f7a842348 fix: trap tab focus in modal when hitting s-tab (#4075)
Pretend that the modal dialog is equivalent to the first
focusable/tabbable element when hitting shift-tab.

Fix #4049
2017-02-21 16:07:22 -05:00
Gary Katsevman 0d0dea4da8 feat: fix accessibility of the captions setting dialog (#4050)
This fixes a lot of the issues from #2746 by making the dialog inherit from our actual ModalDialog which now has tab focus trapping.

The Captions Settings dialog has some accessibility issues:
- Field labels and fields are not explicitly associated
- Keyboard focus does not move into the dialog when it is opened
- Keyboard focus is not trapped inside the dialog while it is open
- Keyboard focus does not return to the control which opened the dialog when it is closed
- The extent (top and bottom) of the dialog is not indicated to screen readers
- The dialog cannot be closed with the Esc key
- The meaning of '---' in the select fields is not clear
- The control to close the dialog is labeled "Done" rather than "Close"
- The purpose of the "Defaults" button may not be obvious, and its effect may not be apparent to screen reader users
- Focus highlighting (outline) on the Default and Done buttons is *very* hard to see
- Pressing the Done button doesn’t seem to have the same effect as pressing the Close (x) button; does it trigger the same focus movement
- This requirement to move it back to the triggering element is tricky, since clicking on that item in the CC menu dismisses the CC menu. I need to think about this a little more - either the menu should open again, or the focus should go to the main CC Menu Button
- The focus outline on the whole dialog goes too far to the left (all the way to the edge of the video window, not just to the edge of the dialog)

Fixes #2746.
2017-02-21 15:58:04 -05:00
Kevin Litchfield 181a19f5fd fix: Muting with MuteToggle sets ARIA value of VolumeBar to 0 (#4099)
Currently, the ARIA value of VolumeBar tracks the value of volume. It should instead track the position of the slider on VolumeBar, which tracks volume except when the player is muted, in which case it's 0.

Fixes #4064.
2017-02-21 15:53:56 -05:00
mister-ben 1cb0a97b0b fix: Do not create element for MediaLoader (#4097)
MediaLoader has a div that's unnecessary. See #4070. Also, make sure that Component#dispose does a null check for the element.
2017-02-21 15:50:52 -05:00
Brandon Casey 127cd7827e fix: copy basic plugin properties onto the wrapper (#4100)
Copy basic plugin properties to prevent breaking older basic plugins.
2017-02-21 15:49:42 -05:00
mister-ben 405b29b8f1 fix: remove redundant Html5#play()
play() is defined twice in Html5. The promise handling in the earlier one was moved into Player#play().
2017-02-21 15:48:45 -05:00
Brandon Casey e1b48042dd fix: synchronously shim vtt.js when possible (#4083) 2017-02-21 12:03:17 -05:00
Kevin Litchfield a04f387a72 refactor: MuteToggle#update (#4058) 2017-02-17 12:34:51 -05:00
forbesjo 0da93249d3 fix: make mergeOptions behave the same across browsers (#4088)
* Make an object util function `keys` return an empty array for non objects
* Use that function in object utils instead of `Object.assign`
2017-02-16 16:55:54 -05:00
Brian Wells caff93fbf0 fix(sass): import path has cwd once again (#4061) 2017-02-15 15:44:00 -05:00
mister-ben 65dc81a4e1 docs: Add MediaLoader to components list (#4070) 2017-02-15 15:30:03 -05:00
Lionel 55408683fb fix: Solve a typo in translation files (#4063)
"subititles settings" ->"subtitles settings"
2017-02-15 15:27:17 -05:00
Lionel dc4c1eb88b fix: improve French translation (#4062)
Improved translation of "Casual"
2017-02-15 15:26:24 -05:00
Kevin Litchfield 3c1108c5dc fix: Set MuteButton controlText correctly (#4056) 2017-02-15 15:23:47 -05:00
typicode c3b1d689f6 chore: switch from ghooks to husky (#4074) 2017-02-15 15:22:50 -05:00
mister-ben 17143fd9fe fix: Add lang attribute to player el, so that css :lang() is correct (#4046) 2017-02-15 15:22:10 -05:00
Davy Tran 7ab52d1a59 docs: replace 'autoPlay' by 'autoplay' (#4080)
Fix #3995
2017-02-14 10:41:58 -05:00
Prayag Verma 2433915c64 docs(guides): fix typos in faq guide (#4067)
offical > official
2017-02-12 11:39:31 -05:00
Gary Katsevman 0ac126935a fix: localize aria-labels (#4027)
Fixes #2728.
2017-02-08 17:29:32 -05:00
Gary Katsevman eddc1d71a3 feat: modal dialog accessibility updates (#4025)
If the modal dialog was opened and the focus was preset inside the
player, move the focus to the modal dialog.
When the modal dialog is closed, move the focus back to the previously
active element.
When focus is inside the dialog, trap tab focus. This was inspired by https://github.com/gdkraus/accessible-modal-dialog and ally.js.
2017-02-08 17:29:05 -05:00
Owen Edwards 1b1ba04271 fix: fix the structure of elements in menus to comply with ARIA requirements (#4034)
Fix the structure of elements in menus so that actionable elements are not children of actionable elements, as required by ARIA.
Remove unnecessary aria-labels on menus.
2017-02-08 01:24:30 -05:00
Owen Edwards 6208e4bc72 chore: only report errors during linting in the build process, not warnings (#4041) 2017-02-08 01:16:06 -05:00
Gary Katsevman 3aa79ae9b1 6.0.0-RC.2 2017-02-06 15:58:22 -05:00
Brandon Casey 6541467ad8 fix: support empty src in Player#src (#4030)
Remove some unnecessary code. Filter the input to remove empty objects and what not.
2017-02-06 15:48:38 -05:00
mister-ben 0fc2c1c7a4 docs(guides): fix typos in functions guide (#4035) 2017-02-06 14:41:57 -05:00
Pat O'Neill be27f2aa6e fix: Progress holder gaps cause tooltips misalignment and time tooltip outlines (#4031)
* Address #3645 by using pixel margins
* Fix outlines

Fixes #3645
2017-02-03 16:43:56 -05:00
Gary Katsevman 5748c360af feat: wrap menu item text in a span (#4026)
Fix #4017
2017-02-03 16:35:30 -05:00
mister-ben e176b56843 feat: Expose Tech#resize event as Player#resize (#3979)
Rename Component's resize event to `componentresize` and trigger the Html5 specced resize event on the player.
2017-02-03 16:32:41 -05:00
RevinKey 70d2eb10cf feat(lang): update es.json (#3984) 2017-02-03 16:31:23 -05:00
Gary Katsevman 516c9f9362 feat: toggle playback with space when focused on seekbar (#4005) 2017-02-03 16:31:03 -05:00
Gary Katsevman 4f79e1e299 fix: focus play toggle from Big Play Btn on play (#4018)
If the control bar and playtoggle exist, focus the playtoggle after
triggering play via the keyboard from the Big Play Button.
If the control bar isn't available, then focus the player element.
If play() returns a promise, wait until it resolves to focus,
otherwise, use a setTimeout.

Fixes #2729
2017-02-03 16:30:49 -05:00
Pat O'Neill 60bcc99302 fix: Disable all time tooltips in IE8, as they are broken (#4029) 2017-02-03 13:26:05 -05:00
Brandon Casey da2a1e07f4 fix: accessibility bugs with the VolumeBar (#4023)
* Fixes #4021: drop the decimal places on aria-valuenow and aria-valuetext
* Fixes #4022: aria-valuenow and aria-valuetext not set initially
2017-02-02 15:17:15 -05:00
Owen Edwards 04f23c1a62 fix: disable title attribute on menu items (#4019)
Prevents a title attribute from being applied to MenuItems.
MenuItem indicates to ClickableComponent that the control is not just an icon, so it shouldn't have a title attribute.

Fixes #3699
2017-02-02 14:45:39 -05:00
Gary Katsevman 29c6141de9 feat: allow seeking in full height of progress control (#4004) 2017-02-02 14:42:34 -05:00
Brandon Casey a8f2e43274 feat: videojs.getTech works with TitleCase or camelCase names (#4010)
* Fixes #3986 
* update `techOptions` to look for `TitleCase`/`camelCase` user tech options
* remove deprecated usage of Tech as Component
* add a unit test to verify that registerTech works
* change defaultTech_ to defaultTechOrder_
2017-02-02 14:34:33 -05:00
Brandon Casey fcb5aa8383 test: add tests for obj.assign util (#4014) 2017-02-02 11:26:45 -05:00
Kevin Litchfield 2da4e76ef0 docs: Expand testing info in CONTRIBUTING.md (#4020) 2017-02-02 11:19:01 -05:00
Gary Katsevman 6ad1e5c97b docs: fixup global jsdoc members (#4015) 2017-02-02 11:07:34 -05:00
Brandon Casey 49496195ed chore: Add flash as a dev dependency for testing (#4016)
Add videojs-flash to devDependencies and update sandbox examples to use flash
2017-02-01 17:21:44 -05:00
Gary Katsevman 24d2e7ba33 fix: hide font-icons from assitive technology (#4006)
Wrap font-icons in a span with aria-hidden=true on it.

Fixes #3982.
2017-02-01 14:53:43 -05:00
Gary Katsevman 5bde16a1bc test(ie8): only run mute toggle tests in html5 env (#4003)
IE8 can't run the html5 tech and the mute toggle tests rely on a working
volume and mute functionality which tech faker does not have. Instead of
implementing it in tech faker, skip it on non-html5 environments.
2017-01-31 17:15:56 -05:00
Kevin Litchfield cb42fcfb02 feat: unmute goes back to previously selected volume (#3942)
If a user changed the volume to zero either via the mouse or keyboard, clicking unmute will now restore the volume back to this last position. Previously, the mute and volume values were completely not linked.

Fixes #3909.
2017-01-31 15:29:07 -05:00
Gary Katsevman 5b8b41e546 chore(package): pin karma to 1.3.0 (#4002)
Karma 1.4.0 indavertantely broke IE8 when updating socket.io.
This pins karma to 1.3.0 a version that is known to work on IE8.

See https://github.com/karma-runner/karma/issues/2556
See https://github.com/socketio/socket.io-client/issues/1063
2017-01-31 15:22:03 -05:00
Gary Katsevman f87ada1ee0 fix: allow changing volume in full height of volume control (#3987)
* allow changing volume in full height of volume control
* make volume control have pointer cursor
2017-01-31 15:11:26 -05:00
Gary Katsevman 19b429bddc fix(sass): import path no longer has cwd (#4001)
node-sass updated to remove the cwd from import paths.

Fix #3998
2017-01-31 15:10:31 -05:00
Gary Katsevman c8f5e3a3fc 6.0.0-RC.1 2017-01-30 14:51:09 -05:00
Gary Katsevman 22aade1b61 fix: updating time tooltips when player not in DOM (#3991)
If the time tooltips try to update when the player isn't in the DOM,
they error out because the bounding rects for the player will not be available.
This does a null check and exists early.
2017-01-30 11:43:14 -05:00
Gary Katsevman e34335b012 fix: EventTarget is also evented (#3990)
If you try to delegate an to an EventTarget from an evented component, you'll end up failing because it didn't think that an EventTarget object worked. But it should and does. This adds a check for it in the isEvented function.
2017-01-30 11:41:46 -05:00
Brandon Casey 866a3f37d8 fix: remaining time display width on IE8 and IE9 (#3983)
vjs-no-flex environments like IE8 and IE9 don't work properly with width: auto.
2017-01-27 17:40:03 -05:00
Altay 37a6811fb6 feat(lang): Update tr.json (#3989) 2017-01-27 15:29:39 -05:00
Gary Katsevman 03529163b6 feat: Update MW to require a factory, add *-mw (#3969)
Middleware registration now only accept a factory method which takes a player reference and returns some object that represents the middleware with the various methods on it.
Also, add a use to register a middleware for all types.
2017-01-27 15:09:27 -05:00
Gary Katsevman 2e2ac6f870 refactor: move most volume panel functionality into css state (#3981) 2017-01-27 15:08:20 -05:00
Pat O'Neill 4979ea78d5 fix: Patch a memory leak caused by un-removed track listener(s). (#3976) 2017-01-27 14:56:43 -05:00
Brandon Casey 3585af0fe2 fix: Make Player#techCall_() synchronous again (#3988) 2017-01-27 14:35:00 -05:00
Pat O'Neill d7d7cfeb9f feat: Stateful Components (#3960)
Advanced plugins introduced the concept of mixins and added two: evented and stateful.
This provides Components with the benefits of the stateful mixin
2017-01-26 22:04:34 -05:00
Pat O'Neill 4c3b60c3b6 refactor: Evented Components (#3959)
Advanced plugins introduced the concept of mixins and added two: evented and stateful.
This refactors Component to use the evented mixin, granting it event broadcast/handling capabilities.
2017-01-26 20:53:53 -05:00
Brandon Casey c2545ddb6d feat: make registerTech add that tech to the default techOrder (#3985) 2017-01-26 17:13:27 -05:00
Julien Bouquillon 05b39fe281 docs(guides): Add a basic ReactJS guide and update the FAQ (#3972) 2017-01-26 16:16:52 -05:00
Pat O'Neill 7b0d738e8f docs(guide): Add a ModalDialog guide (#3961) 2017-01-25 17:27:01 -05:00
mister-ben 8e7d8cc959 feat: localize all strings in captions settings (#3974) 2017-01-25 13:54:21 -05:00
Dinis Correia 8888e2b5b5 feat(lang): add European Portuguese translation (#3955) 2017-01-24 15:03:05 -05:00
ngoisaosang 1463e50f7b feat(lang): update Vietnamese lang file (#3964) 2017-01-24 15:00:19 -05:00
mister-ben a0ba8e2360 feat(lang): DE and FR translations of replay (#3963) 2017-01-24 14:58:30 -05:00
greenkeeper[bot] 924fb279ee chore(package): update xhr to version 2.3.3 (#3914)
https://greenkeeper.io/
2017-01-24 12:06:18 -05:00
Gary Katsevman e642295468 docs(jsdoc): introduce a jsdoc template and build on publish (#3910)
Use the TUI JSDoc Template to generate the jsdoc files. Also, build this out on publish.
2017-01-24 11:26:39 -05:00
Brandon Casey de3945db15 docs: ran npm run docs:fix to update TOC on guides (#3971) 2017-01-23 16:26:04 -05:00
Brandon Casey 58f2349302 docs: fix broken links to guides in the faq (#3973) 2017-01-23 16:25:58 -05:00
Gary Katsevman e3424f6a4d 6.0.0-RC.0 2017-01-19 17:48:24 -05:00
Gary Katsevman 34aab3f357 feat: middleware (#3788)
Add middleware support. Middleware can function as go-between between the player and the tech. For example, it can modify the duration that the tech returns to the player. In addition, middleware allow for supporting custom video sources and types.

Currently, middleware can only intercept timeline methods like duration, currentTime, and setCurrentTime.

For example,
```js
videojs.use('video/foo', {
  setSource(src, next) {
    next(null, {
      src: 'http://example.com/video.mp4',
      type: 'video/mp4'
    });
  }
});
```
Will allow you to set a source with type `video/foo` which will play back `video.mp4`.

This makes setting the source asynchronous, which aligns it with the spec a bit more. Methods like play can still be called synchronously on the player after setting the source and the player will play once the source has loaded.

`sourceOrder` option was removed as well and it will now always use source ordering.

BREAKING CHANGE: setting the source is now asynchronous. `sourceOrder` option removed and made the default.
2017-01-19 17:29:09 -05:00
Brandon Casey b387437aed feat: remove flash tech (#3956)
Remove Flash Tech from core. Use videojs-flash if flash is needed.
Also, update DOM method names.

BREAKING CHANGE: remove flash tech from core.
2017-01-19 16:01:56 -05:00
Brandon Casey 524f868e31 feat(volume panel): accessibly volume control (#3957)
Internally uses the VolumeControl and MuteToggle components to create the VolumePanel component. Acts like the old VolumeMenuButton but does not have the screen reader issues of the older version.

BREAKING CHANGE: remove VolumeMenuButton, introduce a new default volume control: VolumePanel.
2017-01-19 15:54:47 -05:00
Pat O'Neill 1ba1f5aabd feat: Time Tooltips (#3836)
Switch to `keepTooltipsInside` by default and simplify DOM structure around the time tooltips and progress control.

BREAKING CHANGE: removal of `keepTooltipsInside` option.
2017-01-19 15:30:47 -05:00
Brandon Casey 49bed07039 refactor: unify all Track and TrackList APIs (#3783)
Unify all track-related usage internally.

BREAKING CHANGE: some externally accessibly functions for tracks are now private.
2017-01-19 15:16:28 -05:00
Gary Katsevman 7bafcc2a55 test: fix tests (#3953)
* Switch to es3 preset for babel so that it runs last. Plugins run before presets and presets run in reverse order. Also, we ran into a weird bug in babel that causes `default` not to be quoted in some cases (https://github.com/babel/babel/issues/4799) which we've worked around here.
* Restore the es-shims for tests and the ie8 fallback script.
* Do a null-check around `Player.players`.
* use more round fractions (like 0.5 and 1) to avoid rounding issues.
2017-01-19 11:17:46 -05:00
Brandon Casey 2037e18235 feat(player): add played(), defaultMuted(), defaultPlaybackRate() (#3845)
Add `played()`, `defaultMuted()` and `defaultPlaybackRate()` methods to the player.

Fixes #523.
2017-01-18 14:59:15 -05:00
Pat O'Neill 8d1653aebc feat: Advanced Class-based Plugins for 6.0 (#3690) 2017-01-18 01:52:23 -05:00
Brandon Casey 8f07f5d57c refactor: Remove method Chaining from videojs (#3860)
Remove method chaining from videojs. This helps keep the methods consistent especially since play() now returns a Promise in some cases. Also, it can add some performance benefits.

BREAKING CHANGE: player methods no longer return a player instance when called. Fixes #3704.
2017-01-18 01:50:22 -05:00
mrocajr 0bba3196d8 chore: Remove component.json and remove references to it (#3866)
Remove component.json and references to it in grunt.js because component is no longer maintained.

BREAKING CHANGE: removal of component.json
2017-01-18 01:48:55 -05:00
Brandon Casey 091bdf9261 feat: Return the native Promise from play() (#3907)
Return the native Promise from `play()` if it exists. `undefined` is returned otherwise.
This comes in as part of the greater effort to remove method chaining.

BREAKING CHANGE: `play()` no longer returns the player object but instead the native Promise or nothing.
2017-01-18 00:53:11 -05:00
Pat O'Neill 29ffbfbc87 feat: Restore all outlines for greater accessibility (#3829)
Restore all outlines on components that are focusable to increase accessibility of these components.

BREAKING CHANGE: restoring the outlines changes the skin slightly and potentially break users. Fixes #3200.
2017-01-18 00:49:12 -05:00
Pat O'Neill 57af15ce8b refactor: Make registerComponent only work with Components (#3802)
Prevent techs (and others) from being registered via registerComponent.
* `registerComponent` now throws if given an object that is not a subclass of Component (or Component itself).
* `registerComponent` now throws if given a non-empty string as its name argument.

BREAKING CHANGE: registerComponent now throws if no name or not a component is passed in.
2017-01-18 00:46:43 -05:00
mrocajr ce6acc832a feat: Replay at ended (#3868)
Made the play button turn into a replay button at the end of the video.
Updated the translations needed docs with "replay".
2017-01-18 00:41:43 -05:00
Gary Katsevman 8622b2648e refactor: expose tech but warn without safety var (#3916)
`Player#tech` can now be called without passing an object into it. It no longer requires passing an object into it, so, current code will not break.
If nothing is passed in, a warning will be logged about knowing what you're doing. If anything is passed in, the warning is silenced.
2017-01-18 00:40:24 -05:00
Brandon Casey 73b6316f3b refactor: remove special loadstart handling (#3906)
This is both a change as well as a bug fix. We tried to have better awareness of when the underlying video element changed underneath us so we can dispose of the source handler but that broke some use cases of MSE. Given that we weren't able to fix it in a reasonable non-breaking and non-invasive solution, we're taking it out.

BREAKING CHANGE: remove the double loadstart handlers that dispose the tech/source handlers if a secondary loadstart event is heard.
2017-01-18 00:38:31 -05:00
Pat O'Neill 844e4f0107 feat: Log Levels (#3853)
Add a log levels and history api: `videojs.log.level()` and `videojs.log.history()`.
`.level()` will return the current level and you can also set it to be one of: `all`, `error`, `off`, or `warn`.
`.history()` will return a list of all things logged since videojs loaded. It can be disabled via `videojs.log.history.disable()` (and re-enabled with `enable()`) as well as cleared with `videojs.log.history.clear()`.
2017-01-18 00:35:42 -05:00
Brandon Casey b07143d276 refactor: do not allow adding children with options passed in as a boolean (#3872)
This has been deprecated throughout 5.0 and being removed. To include a child, you must use an object  or false to exclude it. true will no longer be supported.

BREAKING CHANGE: remove ability to add children with options as a boolean.
2017-01-18 00:31:34 -05:00
Pat O'Neill e12bedbb45 refactor: Remove TimeRanges without an index deprecation warning (#3827)
This aligns the methods with the spec.

BREAKING CHANGE: removing ability to use TimeRange methods without an index.
2017-01-18 00:29:27 -05:00
Pat O'Neill c340dbcccd refactor: Buttons will always use a button element (#3828)
BREAKING CHANGE: button component will always use a button element.
2017-01-18 00:28:01 -05:00
Pat O'Neill 20141202c1 refactor: Remove custom UMD (#3826)
Only use `module.exports` for better compatibility between bundlers and module systems.
2017-01-18 00:27:00 -05:00
Pat O'Neill 5377ffc176 refactor: Remove unused defaultVolume option default (#3915) 2017-01-18 00:26:10 -05:00
Pat O'Neill f8aed4dc32 refactor: Remove deprecated features of extend/Component#extend (#3825)
This removes the Component.extend() method entirely, which has been deprecated since 5.0. Additionally, it removes the deprecated support for an init method in videojs.extend().

BREAKING CHANGE: remove deprecated features.
2017-01-18 00:25:14 -05:00
Andrew Farmer 6578ed98ac docs: minor fix to currentTime() comment: "setting" not "getting" (#3944) 2017-01-13 14:30:13 -05:00
Gary Katsevman bb9b710d95 v5.16.0 2017-01-12 14:54:11 -05:00
Gary Katsevman 305e5ea192 fix: showing custom poster with controls disabled (#3933)
We previously hid the poster image when controls were disabled because
the poster image had a click handler on it. However, this meant that in
the case of Flash, which doesn't have a native poster image ability, we
lost the poster.

Fixes #1625.
2017-01-11 16:26:35 -05:00
Gary Katsevman 94fd5c12c8 fix: give techs a name (#3934)
This helps with debugging to know what a component's name is.
We try to look up the tech's name via the constructor's name property,
otherwise, we set it to 'Unknown Tech'. Can be overridden by setting
`this.name_` after calling `super()` in the constructor.

Fixes #1786.
2017-01-11 16:26:24 -05:00
Mattias Buelens 2ceed0a4eb fix: Pause player before seeking in seek bar mousedown (#3921)
Previously, seek bar's mousedown handler would first seek the video,
then pause it. This can trigger a bug in Chrome 55 where seeking
backwards and then immediately pausing can break the video player.

Instead, call the super handler last so that we pause the video before
we start seeking.

Fixes #3839. This reverts commit e92db4f407 (#3886)
2017-01-11 15:03:04 -05:00
Michael Stramel bbe82530aa fix: player el ingest when parent doesn't have hasAttribute method (#3929)
For elements which parent doesn't have `hasAttribute` it needs do another check to prevent erroring out. One case of this is when video.js is created inside a documentFragment, the parent node won't have a `hasAttribute` method.
2017-01-11 15:00:11 -05:00
Brandon Casey d290db1765 refactor: require videojs-vtt.js via require rather than concat (#3919)
Using aliasify and require, we can generate the dist/video.js and dist/alt/video.novtt.js files each with and without vttjs while having the require-able version of video.js available to require vttjs and have it work with bundlers like browserify and webpack.
2017-01-11 14:56:07 -05:00
Petros G. Sideris f35de1c98d chore: fix typo in collaborator guide (#3931) 2017-01-11 11:26:54 -05:00
Brandon Casey 02da69741a chore(development): fix npm start file watching (#3922)
A invalid argument (`--w`) was being passed to the babel cli in the grunt task `shell:babel`. This argument has been changed to `--watch` to get the babel cli to watch files for changes as intended.
2017-01-06 12:04:10 -05:00
mister-ben 0ce7cd4fe3 docs(troubleshooting): updates to troubleshooting doc (#3912)
* Fixed (and simplified) the codecs header.
* Elaborated slightly on codecs and flash in v6
* Changed case of 'Video.js' throughout and some other capilatisation to be consistent with the doc
2017-01-05 11:36:49 -05:00
Gary Katsevman d120ea29b7 chore(release): add es5 folder to the tagged commit (#3913) 2017-01-04 10:59:20 -05:00
Gary Katsevman c239bd5c5a chore: don't run tests on travis if only docs were changed (#3908) 2017-01-04 10:58:54 -05:00
geibi b5472145bf feat: Show big play button on pause if specified (#3892) 2017-01-03 15:32:06 -05:00
Gary Katsevman 9ec55879a1 chore: better dev experience (#3896)
npm start now runs `grunt dev` which in turn runs the connect server,
sets up babel watching, browserify watching (for both src and test
files), and css and alternate builds watching.

Additionally, it will copy over the dev build files into the dist folder
so that if you're linking videojs and you have a project that gets
video.js from the dist, you can link and develop with more easy without
rerunning all of `grunt dist` each time.

Additionally, this specifically does not run more time consumming
operations like minification.
2017-01-03 15:05:58 -05:00
Gary Katsevman 83d453b498 chore(sass): upgrade to latest version of grunt-sass (#3897)
Fixes #3692.
2017-01-03 15:05:41 -05:00
Gary Katsevman e5a240a631 docs(faq): add a question about autoplay (#3898) 2017-01-03 15:05:12 -05:00
Gary Katsevman 9c74116578 docs(faq): add FAQ question about RTMP url (#3899) 2017-01-03 14:28:10 -05:00
Gary Katsevman b914c76247 v5.15.1 2016-12-23 14:19:13 -05:00
Pat O'Neill 26d4e7b0bf ignore: Prevent test failures in IE8 (#3891) 2016-12-23 14:03:58 -05:00
Pat O'Neill ac0b03f2f7 fix: Support require()-ing video.js (#3889)
Introduce the Dom.isReal() function, which makes an educated assumption about the "realness" of the document object.
Wrap code here and there with checks against Dom.isReal() as well as other defensive code.

Fixes #3869.
2016-12-23 11:30:49 -05:00
Garrett b7c384eb5b fix: extra warn logs on already initialized player references (#3888) 2016-12-23 11:29:23 -05:00
Gary Katsevman 4fd902229f v5.15.0 2016-12-22 17:37:21 -05:00
Darren Nolan 42507f8c11 fix: don't emit tap events on tech when using native controls (#3873)
If using nativeControlsForTouch, skip the emitTapEvents listeners from
being setup. This avoids taps being taken away from native video
elements and stopping controls being displayed.
2016-12-22 15:20:43 -05:00
Gary Katsevman e92db4f407 fix(seeking): don't always pause in mouse down (#3886)
In chrome 55, something changed which introduced a bug in videojs where
if you seeked back, it wouldn't work. This is because we always paused
the video in the mousedown handler.

Instead, we should create a timer for pausing that is cleared in the
mouseup handler or in the mouse move handler. This is so that if someone
is seeking by clicking and waiting the video pauses. As soon as we start
moving and we get a mousemove event, we can know that it's safe to pause
as well.

Fixes #3839.
2016-12-22 15:19:35 -05:00
Brandon Casey 22cf3dd935 feat: deprecate the use of starttime in player.js (#3838) 2016-12-21 14:23:00 -05:00
Gary Katsevman eb389c57c0 chore(videojs-standard): update to version 6.0.1 (#3884) 2016-12-20 18:32:24 -05:00
Gary Katsevman 26789e7470 chore(faq): move FAQ and troubleshooting guide to docs/ (#3883) 2016-12-20 18:21:18 -05:00
Brandon Casey 642ad4b5cf docs: move examples out of code into docs 2016-12-20 18:20:31 -05:00
Brandon Casey 0493f54d6f chore(docs): Documentation Linting and TOC generation (#3841)
Use remark to lint and generate TOC for markdown files.
2016-12-20 16:55:59 -05:00
greenkeeper[bot] d20e9ce128 chore(package): update dependencies (enable Greenkeeper) 🌴 (#3777) 2016-12-19 16:07:59 -05:00
Gary Katsevman 74530d8b3a feat(player): ingest a player div for videojs (#3856)
If the videojs embed code (a video element) is wrapped in a div with the
'data-vjs-player' attribute on it, that element will be used for the
player div and a new one will not be created. In addition, on browsers
like iOS that don't support moving the media element inside the DOM, we
will not need to clone the element and we could continue to re-use the
same video element give to us in the embed code.

This could also be extended in the future to change our embed code to a
div-only approach if we so choose.
2016-12-19 11:51:42 -05:00
Gary Katsevman a7ffa34b7b fix: remote text track deprecation warnings (#3864) 2016-12-15 15:48:19 -05:00
Gary Katsevman 3f724f9349 test(hooks): remove errors logged in tests (#3865) 2016-12-15 15:48:03 -05:00
Gary Katsevman 559297a376 fix(html5): (un)patchCanPlayType could set native canPlayType to null (#3863) 2016-12-15 14:57:58 -05:00
Gary Katsevman 87cd26d958 test(hooks): move vjs hooks QUnit module into separate file (#3862) 2016-12-15 14:57:34 -05:00
Gary Katsevman 98b80df0d0 stub/restore window.console properly (#3861) 2016-12-15 14:55:23 -05:00
Gary Katsevman 83cbeec424 fix: remove vjs-seeking on src change (#3846)
If you're in a seeking state and the source changed, we should no longer
be in a seeking state.

Fixes #3765.
2016-12-14 13:21:35 -05:00
Gary Katsevman 7985c63541 v5.14.1 2016-12-05 17:04:35 -05:00
Gary Katsevman 214e01c885 test(events): silence error logging in tests (#3835)
The error that is logged in this test makes it hard to see what is an actual error in some cases.
2016-12-05 16:22:49 -05:00
Gary Katsevman 5ec46b0372 test: add Edge to browserstack tests (#3834)
remove edge version so we're always on latest
2016-12-05 16:22:09 -05:00
Pat O'Neill 014c6b89e6 fix(throttle): Fix error in Fn.throttle that broke MouseTimeDisplay (#3833)
We were not initializing `last` properly in the throttle function.
2016-12-05 16:14:03 -05:00
Gary Katsevman 766580af2b v5.14.0 2016-12-02 16:33:55 -05:00
Gary Katsevman 881cfcb346 feat(texttracks): always use emulated text tracks (#3798)
Chrome has a bug where if you add a remote text track and try to use it programmatically, you won't get any cues displayed. So, just switch to always emulated mode.

Also, add IS_SAFARI and IS_ANY_SAFARI to the browsers.
2016-12-02 16:13:33 -05:00
Gary Katsevman bed19be9cd revert: fix(events): ensure we attach events to objects we know how to (#3727)
This reverts commit bfcb9e2fb5.
2016-12-02 16:11:04 -05:00
Aaron Boushley bfcb9e2fb5 fix(events): ensure we attach events to objects we know how to (#3727)
In addition log a warning if the listener isn't going to get added

Fixes #3272
2016-12-02 15:52:30 -05:00
Pat O'Neill 761b877626 feat: Eliminate lodash-compat as a dependency, rewrite mergeOptions (#3760) 2016-12-02 15:51:41 -05:00
Pat O'Neill 8f16de2778 feat: Object Type-Detection and Replacing object.assign (#3757) 2016-12-02 15:44:57 -05:00
Brandon Casey 54ff1f97b8 docs: add a troubleshooting guide (#3814) 2016-12-02 15:39:35 -05:00
Brandon Casey 1d5562d656 docs(FAQ): add an faq (#3805) 2016-12-02 15:24:33 -05:00
Brandon Casey c9022795fd docs(jsdoc): Update the jsdoc comments to modern syntax - Part 6 (#3771)
Files in this PR:
* src/js/control-bar/audio-track-controls/audio-track-button.js
* src/js/control-bar/audio-track-controls/audio-track-menu-item.js
* src/js/control-bar/control-bar.js
* src/js/control-bar/fullscreen-toggle.js
* src/js/control-bar/live-display.js
* src/js/control-bar/mute-toggle.js
* src/js/control-bar/play-toggle.js
* src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js
* src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js
* src/js/control-bar/progress-control/load-progress-bar.js
* src/js/control-bar/progress-control/mouse-time-display.js
* src/js/control-bar/progress-control/play-progress-bar.js
* src/js/control-bar/progress-control/progress-control.js
* src/js/control-bar/progress-control/seek-bar.js
* src/js/control-bar/progress-control/tooltip-progress-bar.js
* src/js/control-bar/spacer-controls/custom-control-spacer.js
* src/js/control-bar/spacer-controls/spacer.js
* src/js/control-bar/text-track-controls/caption-settings-menu-item.js
* src/js/control-bar/text-track-controls/captions-button.js
* src/js/control-bar/text-track-controls/chapters-button.js
* src/js/control-bar/text-track-controls/chapters-track-menu-item.js
* src/js/control-bar/text-track-controls/descriptions-button.js
* src/js/control-bar/text-track-controls/off-text-track-menu-item.js
* src/js/control-bar/text-track-controls/subtitles-button.js
* src/js/control-bar/text-track-controls/text-track-button.js
* src/js/control-bar/text-track-controls/text-track-menu-item.js
* src/js/control-bar/time-controls/current-time-display.js
* src/js/control-bar/time-controls/duration-display.js
* src/js/control-bar/time-controls/remaining-time-display.js
* src/js/control-bar/time-controls/time-divider.js
* src/js/control-bar/track-button.js
* src/js/control-bar/volume-control/volume-bar.js
* src/js/control-bar/volume-control/volume-control.js
* src/js/control-bar/volume-control/volume-level.js
* src/js/control-bar/volume-menu-button.js
* src/js/utils/dom.js
* src/js/utils/events.js
* src/js/utils/log.js
* src/js/utils/merge-options.js
* src/js/utils/url.js
* src/js/video.js
2016-12-02 15:20:41 -05:00
Brandon Casey ba3cf1724f docs(jsdoc): Update the jsdoc comments to modern syntax - Part 5 (#3766)
Files in this PR:
* src/js/tracks/audio-track-list.js
* src/js/tracks/audio-track.js
* src/js/tracks/html-track-element-list.js
* src/js/tracks/html-track-element.js
* src/js/tracks/text-track-cue-list.js
* src/js/tracks/text-track-display.js
* src/js/tracks/text-track-list-converter.js
* src/js/tracks/text-track-list.js
* src/js/tracks/text-track-settings.js
* src/js/tracks/text-track.js
* src/js/tracks/track-enums.js
* src/js/tracks/track-list.js
* src/js/tracks/track.js
* src/js/tracks/video-track-list.js
* src/js/tracks/video-track.js
* src/js/utils/browser.js
* src/js/utils/buffer.js
* src/js/utils/computed-style.js
* src/js/utils/fn.js
* src/js/utils/format-time.js
* src/js/utils/guid.js
* src/js/utils/obj.js
* src/js/utils/stylesheet.js
* src/js/utils/time-ranges.js
* src/js/utils/to-title-case.js
2016-12-02 15:17:08 -05:00
Brandon Casey 15ce37e45d docs(jsdoc): Update the jsdoc comments to modern syntax - Part 4 (#3756)
Files in this PR:
* src/js/poster-image.js
* src/js/tech/flash-rtmp.js
* src/js/tech/flash.js
* src/js/tech/html5.js
* src/js/tech/loader.js
* src/js/tech/tech.js
2016-12-02 15:14:36 -05:00
Brandon Casey eb2093e16e docs(jsdoc): Update the jsdoc comments to modern syntax - Part 3 (#3708)
files in this change:
* src/js/player.js
* src/js/setup.js
* src/js/slider/slider.js
2016-12-02 15:13:04 -05:00
Brandon Casey cfc3ed7f0f docs(jsdoc): Update the jsdoc comments to modern syntax - Part 2 (#3698)
Files updates:
* src/js/fullscreen-api.js
* src/js/loading-spinner.js
* src/js/media-error.js
* src/js/menu/menu-button.js
* src/js/menu/menu-item.js
* src/js/menu/menu.js
* src/js/modal-dialog.js
* src/js/plugins.js
* src/js/popup/popup-button.js
* src/js/popup/popup.js
2016-12-02 15:12:01 -05:00
Brandon Casey 1a0b2812ce docs(jsdoc): Update the jsdoc comments to modern syntax - Part 1 (#3694)
Add jsdoc npm script.
Update JSDoc comments for the following files:
* src/js/big-play-button.js
* src/js/button.js
* src/js/clickable-component.js
* src/js/close-button.js
* src/js/component.js
* src/js/error-display.js
* src/js/event-target.js
2016-12-02 15:07:19 -05:00
Pat O'Neill d24fe409e8 docs(guides): Manual Documentation Improvements (#3703) 2016-12-02 14:27:59 -05:00
Gary Katsevman b4ebd9ba00 test: fix tests on older IE (#3800) 2016-12-02 14:17:36 -05:00
forbesjo 9b9f89e5b3 feat(tracks): Added option to disable native tracks (#3786)
This adds nativeAudioTracks and nativeVideoTracks tech options, this will disable hooking into the native track APIs. This would be useful when using videojs-contrib-hls on Edge.
2016-11-23 14:09:32 -05:00
Aaron Boushley d69551ac80 refactor(html5): remove confusing references to player in a tech (#3790)
These references to player_ are actually not the player due to techs not having a reference to the player.
2016-11-23 13:58:11 -05:00
Chuong c5d1152456 docs: fix typo, extends -> extend (#3789) 2016-11-23 13:56:03 -05:00
Zoltán Tamási 41bd855e19 feat: Refactoring chapters button handling and fixing several issues (#3472)
* Refactored ChaptersButton, broke logic into several methods.
* Fixed the issues in #3447 about in some browsers tracks have an empty cues array instead of null. * Now we always subscribe to load event, and force an update. Also, track changes are handled, so chapters track can now be changed at runtime.
* Fixed the issue in #3447 about chapters menu items are not selectable. Now automatic update of the selected item based on player time works fine.
* Implemented the usage of the chapters track's label attribute as menu title, if it's present. If not, we fall back to the localized "Chapters" title.
* Refined the menu styling, so that vjs-menu-title telement won't get the hover effect, It would confuse users, because they might believe that the title item is a clickable item too.
2016-11-23 13:54:48 -05:00
Adam Misiorny de25d751b9 feat: Allow to use custom Player class (#3458)
This allows a user to register a new Player component with videojs to be used when videojs is called. If a player has been created already when trying to register a Player component, an error is thrown.
Fixes #3335 and #3016.
2016-11-23 13:52:54 -05:00
Gary Katsevman 406c203f17 v5.13.2 2016-11-14 16:13:07 -05:00
Gary Katsevman eb5e78bb88 revert: perf: Cache currentTime and buffered from Flash (#3705) (#3778)
This reverts commit 45ffa810fb.
2016-11-14 16:09:54 -05:00
ldayananda 430be94e7f fix(HtmlTrackElementList): allow to reference by index via bracket notation (#3776)
Previously, HtmlTrackElementList did not actually let you access HtmlTrackElements via bracket notation (`list[0]`) unlike TextTrackList. This adds that feature.
2016-11-14 15:32:30 -05:00
Brandon Casey 72fcb6c659 chore(pr_template): add checkbox to verify changes in a browser (#3775) 2016-11-14 15:28:01 -05:00
Gary Katsevman 252bcee959 fix(html5): exit early on emulated tracks in html5 (#3772)
addRemoteTextTrack and removeRemoteTextTrack in Html5 tech assumed that
they are always called for native text tracks. However, Html5 tech can
have emulated text tracks. For those, we just exit early after the super
methods are called.
2016-11-11 14:35:04 -05:00
Greenkeeper 6b477bb737 chore(package): update karma-detect-browsers to version 2.2.3 (#3770)
https://greenkeeper.io/
2016-11-10 11:52:11 -05:00
Gary Katsevman 23f0fa05cb chore: fix CHANGELOG 5.13.1 header 2016-11-09 16:44:54 -05:00
Gary Katsevman 2a05633159 chore: fixup CHANGELOG for 5.13.1 release 2016-11-09 16:43:02 -05:00
Gary Katsevman 3fc9b83958 v5.13.1 2016-11-09 16:33:43 -05:00
Gary Katsevman 50f8ad214c 5.13.0 dummy commit 2016-11-09 16:32:57 -05:00
Jon-Carlos Rivera f05a9271b8 feat: option to have remoteTextTracks automatically 'garbage-collected' when sources change (#3736)
Tech#addRemoteTextTrack now accepts a second parameter - a boolean named manualCleanup which defaults to true preserving backwards compatibility. When that value is set to false the text track will be removed from the video element whenever a source change occurs.
2016-11-09 16:07:59 -05:00
Gary Katsevman 996507744f test(dom): fix removeElClass test in Safari 10. (#3768)
Safari 10 automatically dedupes duplicate class names in an element. So,
our test was failing because we had an extra "foo" in the check. This is
an unlikely scenario that has browser variations, so, better to just
remove it.
2016-11-09 16:06:38 -05:00
Greenkeeper b6d521f472 chore(package): update grunt-accessibility to version 5.0.0 (#3747)
https://greenkeeper.io/
2016-11-09 11:42:42 -05:00
Gary Katsevman 4859bb9e3d chore: pin karma-detect-browsers to 2.1.0 (#3764)
See https://github.com/litixsoft/karma-detect-browsers/issues/17
2016-11-09 11:40:21 -05:00
David LaPalomento 45ffa810fb perf: Cache currentTime and buffered from Flash (#3705)
Calling into the SWF too often is expensive. Current time and buffered don't actually change that often but it's very common to call them a couple times in the handling of a single event. Cache their return values for 100ms so the performance penalty of going through ExternalInterface is limited.
2016-11-04 18:03:44 -04:00
Brandon Casey e9e5b5f782 test(hooks): fix hooks unit test in ie8 (#3745) 2016-11-04 16:43:27 -04:00
Gary Katsevman 8d51235b30 docs(collaborator_guide): add collaborator guide (#3724)
This adds a collaborator guide that describes how to reply to issues and PRs and how to accept changes to the project.
2016-11-04 14:27:27 -04:00
Brandon Casey 77357b1cd2 feat: implement player lifecycle hooks and trigger beforesetup/setup hooks (#3639)
Allows you to hook into `beforesetup` and `setup` hooks for all players that are created by videojs.
2016-11-04 14:25:32 -04:00
Gary Katsevman 11a096d60f docs(contributing.md): update CONTRIBUTING.md with latest info (#3722)
Update CONTRIBUTING.md with inspiration and dev certificate of origin from node's CONTRIBUTING.md.
Add grunt and doctoc npm scripts.
2016-11-04 14:21:05 -04:00
Pat O'Neill 5f42130b82 perf: Use ES6 rest operator and allow V8 to optimize mergeOptions (#3743)
The current implementation causes the `mergeOptions` function to be
de-optimized. This change improves readability by switching to ES6
syntax AND it results in a roughly 75% improvement in the performance
of this function by transpiling to a `for` loop instead of
`slice.call`.
2016-11-04 14:19:50 -04:00
Brandon Casey 6889e925b4 refactor: remove un-needed contructor and function overrides (#3721) 2016-11-04 14:18:30 -04:00
Garrett b2c5b2a412 docs: Change registerSourceHandler param doc from first to index (#3737) 2016-11-04 14:18:10 -04:00
Pat O'Neill fb74c71ba6 refactor(texttracksettings): DRYer code and remove massive HTML blob (#3679)
* DRYer code while keeping tests passing
* Replace massive HTML blob with DOM methods
* Create obj util and implement it
2016-11-04 13:45:51 -04:00
Gary Katsevman 74cddcad73 fix: currentDimension can return 0 for fluid player on IE (#3738)
This is because IE returns 0 for both getComputedStyle and currentStyle.
However, offsetHeight and offsetWidth do contain the correct values we
want. So, if before returning in currentDimension the return value is
still zero, check the offset values.
2016-11-03 18:41:27 -04:00
mister-ben 2e720afb65 fix: allow rounded value for fluid player ratio test (#3739) 2016-11-03 18:40:14 -04:00
Gary Katsevman 8f7eb121bb feat(lang): update uk.json (#3675) 2016-11-03 16:07:49 -04:00
Gary Katsevman d11fd50a63 feat(lang): update ru.json (#3654) 2016-11-03 16:05:33 -04:00
doraeric 726367abc5 feat(lang): Complete work translated into traditional Chinese (#3718) 2016-11-03 16:00:29 -04:00
Gary Katsevman 9702618c02 feat: add a safe computedStyle to videojs. (#3664)
This is used internally in the seek bar and mouse time display.
In firefox, in an iframe that is hidden with "display: none",
getComputedStyle() returns "null" which can break things.
See https://bugzilla.mozilla.org/show_bug.cgi?id=548397 for more
details.
2016-11-03 15:59:34 -04:00
Owen Edwards 685404d018 fix: aria-live="assertive" only for descriptions
This changes aria-live on the text track display so it's off unless a
descriptions track is enabled.

Fixes #3554
2016-11-03 15:56:03 -04:00
Owen Edwards 202da2d468 feat(component): attribute get/set/remove methods
This adds getter and setter and remover methods for attributes on
components.
2016-11-03 15:54:53 -04:00
Carey Hinoki 028559ccb0 feat: add ability to get current source object and all source objects (#2678)
Adds `currentSource` and `currentSources` methods to the player that return the current source object, containing `currentSrc()` and `currentType()`, and all source objects that were given to the player.

Fixes #2443
2016-11-03 15:50:55 -04:00
mister-ben de1b363470 feat(clickable-component): Disable interaction with disabled clickable components (#3525)
enable() and disable() on clickable components is only cosmetic. "Disabled" implies the control should not be functional.

* Remove event listeners on disable() and add back on enable().
* Move adding listeners from constructor to enable
* Remove tabindex from disabled components and add disabled attribute to disabled buttons to prevent keyboard access.
2016-11-03 15:43:15 -04:00
Carey Hinoki 9d77268f76 feat: Components are now accessible via camelCase and UpperCamelCase (#3439)
This means that you can `getChild` and `addChild` with both `myComponent` and `MyComponent`.

Fixes #3436.
2016-11-03 15:40:35 -04:00
mister-ben ed59531f78 fix: Suppress Infinity duration on Android Chrome before playback (#3476)
HTML5 tech will return NaN instead of Infinity if playback has not started. Fires a durationupdate event once the reported duration can be believed if the duration is still Infinity, so controls can update.

Fixes #3079.
2016-11-03 15:39:09 -04:00
mister-ben 2988f6ae53 feat(fluid): use default aspect ratio for fluid players if width unknown (#3614)
If a player is fluid and does not have a width set, and preload is set to none, the height of the player is zero. This includes where preload is forced to none by mobile Chrome as in #3606.

* If the player has the .vjs-fluid class when initialised, fluid is set to true, so adding the class behaves the same as {fluid: true} in the setup options.
* The fluid(bool) setter calls player.updateStyleEl_(). Otherwise it won't be triggered in createEl() if an aspect ratio is not also set.
* Corrects the test for a set videoWidth() in updateStyleEl_() - videoWidth() returns 0 if the width is unknown. This allows the default 16:9 to kick in rather than using 0:0.
2016-11-03 15:37:30 -04:00
David LaPalomento f599ef4c51 Dispatch Flash events asynchronously (#3700)
Flash blocks until the javascript side of ExternalInterface callbacks complete and swallows any exceptions generated during that process. To avoid performance issues and missed exceptions, trigger events from Flash asynchronously.
2016-10-25 22:37:58 -04:00
Gary Katsevman 254683b5cd chore(changelog.md): update 5.12.6 and 5.12.3 (#3715)
5.12.6's changelog accidentally included all the 5.12.x changes and the
link to the comparison was from 5.10.7 to 5.12.6.

The comparison link in 5.12.3 was also updated to properly refer to
5.12.2 as the previous change.
2016-10-25 14:57:18 -04:00
Gary Katsevman 9e20386a94 v5.12.6 2016-10-25 14:49:25 -04:00
Gary Katsevman fe760a44d7 fix: remove unnecessary comments from video.min.js (#3709)
This involves updating to latest version of uglify and setting
"screwIE8" to false since that is a default in 2.7. However, this makes
"preserveComments" "some" work as it is supposed to work.

Fixes #3707. This also comes from the stable branch after the 5.11.9
release.
2016-10-25 14:31:05 -04:00
Gary Katsevman 49e29bac85 fix: make sure that document.createElement exists before using (#3706)
If you try and require videojs in an environment that doesn't implement `document.createElement` properly -- like in Node.js -- you could potentially get an error. This checks that `window.document && window.document.createElement` is available before calling `createElement`.
We specifically check `window.document` so that `global` module won't cause issues with it's shimming of `document.createElement` in `global/document.

Fixes #3665
2016-10-25 14:20:49 -04:00
Gary Katsevman ac0329f875 v5.12.5 2016-10-19 18:28:16 -04:00
Matthew Neil 7b9574bb19 fix: move html5 source handler incantation to bottom (#3695)
`Tech.withSourceHandlers(Html5);` expects the prototype getter/setters to exist. Moving these functions after the getters/setters allows them to function properly.
2016-10-19 18:20:30 -04:00
Gary Katsevman c51f22680f v5.12.4 2016-10-18 16:32:28 -04:00
Hein Haraldson Berg 66922a818e docs(tech.md): Add a note on Flash permissions in sandboxed environments (#3684) 2016-10-18 14:45:15 -04:00
Curtis Gibby 16c855931b docs(options.md): Remove Bad Apostrophe (#3677)
A possessive belonging to an "it" doesn't need an apostrophe. Don't believe me? Ask [the Oatmeal](http://theoatmeal.com/comics/apostrophe) (look for the velociraptor)!
2016-10-18 14:43:25 -04:00
Pat O'Neill 8845bd36c1 chore(grunt): fix getting changelog by switching to npm-run (#3687)
shelljs-nodecli is having trouble getting the conventional-changelog package because the package name and binary name are different.

Fixes #3683
2016-10-18 14:42:10 -04:00
Pat O'Neill e932061024 fix: logging failing on browsers that don't always have console (#3686)
In browsers like IE9, `console` isn't always available. This, we need to apply `console` to our console functions but bail out early if `window.console` isn't defined.
2016-10-18 12:02:28 -04:00
Gary Katsevman 44ec0e4e75 fix: Restore timeupdate/loadedmetadata listeners for duration display (#3682)
There was a potential breakage that was caused by #3349. This restores the timeupdate and loadedmetadata listeners in the duration display that were removed. As part of 6.0, they could be removed as durationchange should be the correct and only listener we need.
2016-10-18 11:51:31 -04:00
Gary Katsevman d6e49a4095 v5.12.3 2016-10-06 14:19:26 -04:00
Gary Katsevman d4e89d2adc chore: update CHANGELOG automation to use conventional-changelog (#3669)
This updates our changelog automation to use conventinoal changelog. Ultimately, it will make it easier to merge PRs because it won't require the use of the contrib tool.
It uses https://github.com/videojs/conventional-changelog-videojs/blob/master/convention.md
2016-10-06 14:09:48 -04:00
floorish 920c54a65c fix(html5): disable manual timeupdate events on html5 tech (#3656) 2016-09-30 16:57:16 -04:00
Owen Edwards 7d85f27a8e test(a11y): add basic accessibility testing using grunt-accessibility 2016-09-30 15:18:57 -04:00
Brandon Casey ae3e27788d chore: refactor redundant or verbose code in player.js (#3597)
* removing duplicate constructor docs
fixing doc block (should not have ended in ?)

* adding back event doc comments
2016-09-29 18:05:46 -04:00
Gary Katsevman e479f8c34c fix: proxy ios webkit events into fullscreenchange (#3644)
iOS still doesn't have native fullscreen API access. The video element uses the old webkit fullscreen events `webkitbeginfullscreen` and `webkitendfullscreen`. This makes it so both of those trigger `fullscreenchange` on the player always as opposed to only when `requestFullscreen` was called on the player.
2016-09-29 14:35:31 -04:00
Brandon Casey 6878c21c68 chore: refactor redundant code in html5 tech (#3593)
Some of the code in the html5 tech is a bit redundant and can be written another way to reduce the file size. Also, we made sure that all functions can still be documented properly.
2016-09-29 14:26:37 -04:00
Marco dd2aff00a8 fix: disable HLS hack on Firefox for Android (#3586)
* Disable HLS hack on Firefox for Android

* Fix canPlayType patching tests

* Add test to ensure that canPlayType is not patched in Firefox for Android

* Fix assertion message in Firefox for Android test
2016-09-29 14:14:42 -04:00
Gary Katsevman c545acdaea chore(package): remove es2015-loose since it's an option for es2015 (#3629)
babel-preset-es2015-loose is deprecated as it's now available as an option to the es2015 preset.
2016-09-29 13:44:55 -04:00
Greenkeeper 54e3db5d34 chore(package): update grunt-contrib-cssmin to version 1.0.2 (#3595)
https://greenkeeper.io/
2016-09-29 12:22:21 -04:00
Greenkeeper 2032b17943 chore(package): update grunt-shell to version 2.0.0 (#3642)
https://greenkeeper.io/
2016-09-29 12:03:27 -04:00
Mattias Buelens ca022981e0 fix(controls): fix load progress bar never highlighting first buffered time range
The control text element was being counted as the first buffered region but it didn't have the correct styling to be shown.
Instead, we keep the buffered region elements in a separate element rather than relying on el.children to be correct.
2016-09-29 12:00:43 -04:00
Brandon Casey 816291e7b5 chore(deps): add the bundle-collapser browserify plugin
This plugin makes browserify output numbers instead of the bundle paths to save some bytes in the output.
2016-09-29 11:58:37 -04:00
almcd 4063f96bb5 docs: fix broken links in docs index.md 2016-09-28 18:25:33 -04:00
Lionel 280ecd49d7 feat(lang): add missing translations in fr.json 2016-09-28 18:21:15 -04:00
Aris eb0efd499c feat(lang): add missing translations to el.json 2016-09-28 18:20:40 -04:00
Jordan Harband 08c7f4e1d4 chore: update object.assign to ^4.0.4
Updates `object.assign` to the latest, and uses a semver range so that consumers can `npm dedupe`.
2016-09-28 18:18:39 -04:00
Piotr 86f0830502 chore: move metadata to hidden folder and update references
ISSUE_TEMPLATE and PULL_REQUEST_TEMPLATE were both moved to a .github/ folder to clean up the root of the project a bit. CONTRIBUTING.md was kept at the top level because it is generic enough and contains useful information.
2016-09-28 18:17:18 -04:00
Gary Katsevman 5fdcd4602b fix(css): remove commented out css
Fixes #3587. Some commented out css was removed as it is no longer necessary and potentially causes issues.
2016-09-28 18:15:50 -04:00
Gary Katsevman 5f95e413e3 v5.12.2 2016-09-28 17:47:55 -04:00
Gary Katsevman 057588f6c7 Update CHANGELOG.md 2016-09-28 17:45:48 -04:00
Gary Katsevman 7cf2de30ac Merge branch 'stable' 2016-09-28 16:28:21 -04:00
Gary d520d29fd6 v5.11.7 2016-09-28 18:40:33 +00:00
Gary Katsevman 3a927523c3 @gkatsev set playerId on new el created for movingMediaElementInDOM. Fixes #3283. closes #3648 2016-09-28 13:59:21 -04:00
Pat O'Neill ecc95331a7 @misteroneill pinned grunt-contrib-uglify to ~0.11 to pin uglify to ~2.6. closes #3634 2016-09-28 13:54:41 -04:00
Gary Katsevman 282bda7e34 @gkatsev checked throwIfWhitespace first in hasElClass. closes #3640 2016-09-28 13:18:02 -04:00
Gary Katsevman 3a859f97d0 v5.12.1 2016-08-25 19:47:31 -04:00
Gary Katsevman 0d0ff90ca1 5.12.0 2016-08-25 19:47:02 -04:00
Gary Katsevman b4265a8468 v5.13.0 2016-08-25 19:34:46 -04:00
Gary Katsevman fac52046f3 Merge branch 'stable' 2016-08-25 19:34:07 -04:00
Jon-Carlos a17de688f3 v5.11.6 2016-08-25 23:17:28 +00:00
Jon-Carlos Rivera fdd8550307 @imbcmdth Added exception handling to event dispatcher. closes #3580
* Guard against exceptions in an event handler to stop them from breaking further processing of event handlers

* Added a test for try/catch behavior for exceptions originating in event handlers
2016-08-25 19:08:56 -04:00
Gary Katsevman 83b372c0d4 v5.12.0 2016-08-25 16:44:58 -04:00
Gary Katsevman daab267736 @gkatsev added webpack to test build. closes #3579 2016-08-25 16:24:31 -04:00
Gary Katsevman 8beab2791a @gkatsev updated the translation-needed doc. closes #3578 2016-08-25 16:01:10 -04:00
Lionel 2d9d6b9e46 @lionel-m updated french translations. closes #3576 2016-08-25 15:51:54 -04:00
mister-ben 94f22bb995 @mister-ben added task to maintain translations. closes #3572 2016-08-25 15:49:40 -04:00
Gary Katsevman 0b10b69775 @gkatsev added es2015 babel preset as a dependency. closes #3577 2016-08-25 14:46:38 -04:00
Gary Katsevman f37383784d Merge branch 'stable' 2016-08-25 12:19:03 -04:00
Justin eff1cf34db v5.11.5 2016-08-25 15:49:03 +00:00
Justin Barabander a2167a6b95 @jbarabander updated Audio to Audio Track and added to en.json. closes #3574 2016-08-25 11:01:13 -04:00
Richard L. Chung af6beb21c3 @rlchung fixed tests that weren't disposing players when they finished. closes 3524 2016-08-25 10:58:42 -04:00
brandonocasey ebf7718f1b @BrandonOCasey linted the sass files. closes #3559 2016-08-24 16:46:27 -04:00
Pat O&#x27;Neill 80851ea7ca @misteroneill added npm scripts for standard actions to match plugin generator. closes #3563 2016-08-24 16:44:58 -04:00
Gary Katsevman c154518df4 @gkatsev added tests for webpack and browserify bundling and node.js requiring. closes #3558 2016-08-24 16:32:05 -04:00
Pat O&#x27;Neill 1d2d08584e @misteroneill fixed IE8 media error test failure. closes #3568 2016-08-24 13:48:39 -04:00
Justin Barabander 46d713589b @jbarabander added title attribute to audio button. Fixes #3528. closes #3565 2016-08-24 11:30:37 -04:00
David Snyder 23d1fcd882 @snyderizer fixed switching between audio tracks. Fixes #3510. closes #3538 2016-08-24 11:24:55 -04:00
Pat O&#x27;Neill b56ed61523 @misteroneill fixed wrapping native and emulated MediaErrors. closes #3562 2016-08-24 11:00:21 -04:00
Greenkeeper b90f04fc3b Update karma-chrome-launcher to version 2.0.0 🚀 (#3553)
* chore(package): update karma-chrome-launcher to version 2.0.0

https://greenkeeper.io/

* update CHANGELOG
2016-08-22 17:56:10 -04:00
Gary Katsevman 141ecf221b @gkatsev made videojs requirable in node. closes #3540 2016-08-22 14:20:23 -04:00
Yanglin Zhao c859d8e104 @yanglinz enabled local coverage reporting with &#x27;npm test --coverage&#x27;. closes #3539 2016-08-17 18:32:48 -04:00
Greenkeeper f787cbad18 Update grunt-concurrent to version 2.3.1 🚀 (#3532)
* chore(package): update grunt-concurrent to version 2.3.1

https://greenkeeper.io/

* update CHANGELOG
2016-08-17 18:08:24 -04:00
Greenkeeper 46058ddb0f Update uglify-js to version 2.7.3 🚀 (#3547)
* chore(package): update uglify-js to version 2.7.3

https://greenkeeper.io/

* update CHANGELOG
2016-08-17 17:53:46 -04:00
Gary Katsevman 955185379f @gkatsev updated build system to open es5 folder for bundles and dist folder other users. closes #3445 2016-08-17 17:16:41 -04:00
Gary Katsevman d58be409a6 Merge branch 'stable' 2016-08-16 14:28:25 -04:00
Gary Katsevman 13d16c1d76 v5.11.4 2016-08-16 14:27:22 -04:00
Gary Katsevman 773b5ab1c1 Merge branch 'stable' 2016-08-15 18:20:47 -04:00
Gary Katsevman 5178c122a5 v5.11.3 2016-08-15 18:11:54 -04:00
Gary Katsevman db0e821f38 Add DOMException to jshint to appease it 2016-08-15 18:02:41 -04:00
mister-ben fa1c6430f4 @mister-ben silenced chrome's play() request was interrupted by pause() error. closes #3518 2016-08-15 17:49:52 -04:00
Matthew Boles bf2eabf82d @mboles updated duration() method documentation. closes #3515 2016-08-15 17:46:59 -04:00
mister-ben 2f5a0ca48b @mister-ben fixed android treating swipe as a tap. closes #3514 2016-08-15 17:45:38 -04:00
Vineet 2c84f45ff3 @vdeshpande fixed control text for fullscreen button. closes #3485 2016-08-15 17:44:01 -04:00
Gary Katsevman 6385d1d429 @gkatsev reverted back to qunitjs 1.x to unbreak IE8. Added es5-shim to tests. closes #3533 2016-08-12 23:53:08 -04:00
Gary Katsevman 4ae370c1a2 @gkatsev added slack badge to README. closes #3527 2016-08-12 23:39:18 -04:00
Pat O&#x27;Neill 72c44daaf3 @misteroneill updated tests to qunit 2.0. closes #3509 2016-08-12 13:51:31 -04:00
Pat O&#x27;Neill b3e4e95f9c @misteroneill enabled and updated videojs-standard and fixed an issue with linting. closes #3508 2016-08-11 18:33:34 -04:00
Gary Katsevman ab82bf0008 @gkatsev removed unused dependencies. closes #3516 2016-08-11 18:13:37 -04:00
brandonocasey 1bb40b8d14 @BrandonOCasey updated language docs to link to IANA language registry. closes #3493 2016-08-11 18:09:48 -04:00
Greenkeeper f2a21d4aa2 Update karma to version 1.2.0 🚀 (#3523) - update karma plugins
* chore(package): update karma to version 1.2.0

https://greenkeeper.io/

* update all karma packages

* update CHANGELOG
2016-08-11 18:03:19 -04:00
Gary Katsevman c15d64adf5 Merge branch 'stable' 2016-08-09 11:24:23 -04:00
Gary Katsevman b9d811c2e2 v5.11.2 2016-08-09 11:23:30 -04:00
Gary Katsevman a0e9318862 Merge branch 'stable' 2016-08-08 18:23:27 -04:00
Gary Katsevman 876d1128a6 v5.11.1 2016-08-08 18:21:15 -04:00
Vadim Sikora 14d36a47ee @vxsx fixed legend selector to be more specific. Fixes #3492. Closes #3494 2016-08-08 18:18:50 -04:00
Gary Katsevman ae788be15f Merge commit 'fc72fb9' into stable 2016-08-08 17:54:06 -04:00
Gary Katsevman 56fc3356dc Merge branch 'stable' 2016-08-08 15:29:30 -04:00
Gary Katsevman 1e1636e1f0 Merge commit '2e46c51' into stable 2016-08-08 15:28:17 -04:00
Gary Katsevman 2e46c516f6 v5.10.8 2016-08-08 15:24:12 -04:00
Gary Katsevman c306e4f7f3 update CHANGELOG for new patch release 2016-08-08 15:22:20 -04:00
Gary Katsevman f3f979ae49 remove dist 2016-08-08 15:20:43 -04:00
Gary Katsevman f947ed7791 @gkatsev added null checks around navigator.userAgent. closes #3502 2016-08-05 14:38:42 -04:00
Gary Katsevman 1ff9f381a2 @gkatsev modified ie8.css build process 2016-08-05 14:23:15 -04:00
Erik Yuzwa d86d4b2222 @erikyuzwa reworked build to separate out IE8-specific CSS 2016-08-05 14:17:51 -04:00
brandonocasey 052c2ce1a9 @BrandonOCasey removed unused base-styles.js file. closes #3486 2016-08-05 11:52:10 -04:00
Gary Katsevman 4f6cb03add Update CHANGELOG for linter changes. Closes #3459 2016-08-05 11:41:53 -04:00
Pat O'Neill 485524882e @misteroneill added ghooks to run linter on git push 2016-08-05 11:39:21 -04:00
Priti Agarwal 945711855a @pagarwal123 updated some test code to pass linter 2016-08-05 11:38:08 -04:00
Pat O'Neill 272d5eed83 @misteroneill updated source code for linter v5 2016-08-05 11:37:22 -04:00
Brandon Casey 86068a5b45 @BrandonOCasey updates tests to pass linter 2016-08-05 11:37:12 -04:00
Pat O'Neill e85c1c0391 @misteroneill updated source code to pass linter 2016-08-05 11:35:54 -04:00
Brandon Casey c89b75699e first half of the test/unit/tracks directory (#3483) 2016-08-03 15:27:47 -04:00
Gary Katsevman fc72fb90e7 v5.11.0 2016-07-22 15:36:56 -04:00
Gary Katsevman 34a78b8989 @gkatsev fixed setting lang by looping through loop element variable and not constant tag. closes #3455 2016-07-22 14:37:26 -04:00
Pat O&#x27;Neill 8dd01467f3 @misteroneill corrects test assertions for older IEs in the log module. closes #3454 2016-07-22 13:50:29 -04:00
Gary Katsevman 3e9c53f84f @gkatsev added es6-shim to tests. Fixes Flash duration test. closes #3453 2016-07-22 12:07:37 -04:00
Pat O&#x27;Neill b270f58bc8 @misteroneill fixed npm test from running coveralls locally. closes #3449 2016-07-21 13:26:46 -04:00
Pat O&#x27;Neill 5b15feb5af @misteroneill fixed logging issues on IE by separating fn.apply and stringify checks. closes #3444 2016-07-20 16:47:54 -04:00
Tadej Novak 4b4954ef4d @ntadej added a null check to errorDisplay usage. closes #3440 2016-07-19 11:27:12 -04:00
Owen Edwards b557695e5a @OwenEdwards removed spurious head tags in the simple-embed example. closes #3438 2016-07-19 00:21:32 -04:00
Owen Edwards 238c752aee @OwenEdwards fixed caption settings dialog labels for accessibility. closes #3281 2016-07-19 00:19:36 -04:00
Richard Brandon 58604795f8 @rbran100 checked src and currentSrc in handleTechReady to work around mixed content issues in chrome. closes #3287 2016-07-18 15:35:51 -04:00
Thorsten Basse 20b53206a5 @tbasse fixed techCall null check against tech. closes #2676 2016-07-18 15:26:17 -04:00
Csaba Balint ec42a1cfd7 @sashyro fixed nativeControlsForTouch option. closes #3410 2016-07-18 15:17:30 -04:00
mister-ben 5883c9236e @mister-ben updated language to inherit correctly and respect the attribute on the player. closes #3426 2016-07-18 14:53:31 -04:00
ldayananda 7ae2c885a7 @ldayananda fixed mouse handling on menus by using mouseleave over mouseout. closes #3404 2016-07-18 14:44:08 -04:00
Vineet c51c19ae88 @vdeshpande updated control text of modal dialog. closes #3400 2016-07-18 14:41:33 -04:00
Pat O&#x27;Neill 13d349b0da @misteroneill improved Logging for IE &lt; 11. closes #3356 2016-07-18 14:32:31 -04:00
Mattias Buelens e2bfe09c7b @MattiasBuelens updated components to use durationchange only. closes #3349 2016-07-18 14:29:26 -04:00
alex-phillips e7ca49e668 @alex-phillips added ontextdata to Flash tech. closes #2748 2016-07-18 14:16:58 -04:00
Vít Koumar f36da276e3 @vit-koumar updated Flash tech to return Infinity from duration instead of -1. closes #3128 2016-07-18 14:10:57 -04:00
Nicky Gerritsen 9f37a64146 @nickygerritsen removed unused tracks when changing sources. Fixes #3000. closes #3002 2016-06-27 23:10:21 -04:00
ldayananda c51c180b3c @ldayananda updated videojs to not do anything if no src is set. closes #3378 2016-06-27 23:07:00 -04:00
Derk-Jan Hartman 68c7ab4748 @hartman added default print styling. closes #3304 2016-06-27 23:02:50 -04:00
rcrooks a84623dc9c @mboles added loadstart event to jsdoc. closes #3370 2016-06-27 22:57:15 -04:00
Gary Katsevman e541af30dc Revert "v5.10.7 dist"
This reverts commit 382d5aadbe.
2016-06-27 22:46:01 -04:00
Gary Katsevman a63eb1241d Merge branch 'stable' 2016-06-27 22:39:34 -04:00
Gary Katsevman 382d5aadbe v5.10.7 dist 2016-06-27 22:39:07 -04:00
Gary Katsevman 6620f2d7be v5.10.7 2016-06-27 22:38:38 -04:00
Vineet 2a76453cdd @vdeshpande fixed chapters getting duplicated each time a track is loaded. closes #3354 2016-06-27 22:32:57 -04:00
mister-ben 43551797c3 @mister-ben updated menus to use default videojs font-family. closes #3384 2016-06-27 22:24:13 -04:00
Bruno Klava b6da0a7f70 @bklava updated pt-BR language file. closes #3373 2016-06-27 22:21:53 -04:00
Matt Farmer 7f6ce63ad9 @m14t removed unused loadEvent property in ControlBar options. closes #3363 2016-06-27 22:19:26 -04:00
mister-ben 9de215fa4c @mister-ben added try catch to volume and playbackrate checks. Fixes #3315. closes #3320 2016-06-27 22:15:17 -04:00
Gary Katsevman 0808f843eb @gkatsev pinned node-sass to 3.4. closes #3401 2016-06-27 18:26:37 -04:00
Gary Katsevman 819b787f5f Merge branch 'stable' 2016-06-20 15:30:27 -04:00
Gary Katsevman 165a499271 v5.10.6 dist 2016-06-20 15:29:23 -04:00
Gary Katsevman 7da89f51a6 v5.10.6 2016-06-20 15:28:41 -04:00
Gary Katsevman b7fdf21a05 Merge branch 'stable' 2016-06-07 12:40:50 -04:00
Gary Katsevman 546138e433 v5.10.5 2016-06-07 12:34:07 -04:00
Laurent de Goede 4e0325013e @IJsLauw fixed unhandled exception in deleting poster on ios7. closes #3337 2016-06-07 11:53:50 -04:00
Gary Katsevman 8d5a1b1193 @gkatsev fixed minified vjs in ie8 when initialized with id string. closes #3357 2016-06-07 11:39:22 -04:00
Gary Katsevman 40cf2730b9 @gkatsev pinned dependencies to direct versions. closes #3338 2016-06-01 14:30:44 -04:00
Gary Katsevman 11d379cbce Merge branch 'stable' 2016-05-31 15:39:19 -04:00
Gary Katsevman 101f471829 v5.10.4 2016-05-31 15:35:05 -04:00
Gary Katsevman b9e3e55384 Merge branch 'stable' 2016-05-27 18:28:40 -04:00
Gary Katsevman b981f254de v5.10.3 2016-05-27 18:24:33 -04:00
brandonocasey fa8fc80b83 @BrandonOCasey fixed source handlers being disposed multiple times when a video is put into the video element directly. closes #3343 2016-05-27 18:12:47 -04:00
Nicky Gerritsen 17f856849d @nickygerritsen Fix test for tooltips in IE8. closes #3327 2016-05-19 09:47:27 +02:00
Mattias Buelens 06fdbaf73d @MattiasBuelens Retain details from tech error. closes #3313 2016-05-17 12:18:14 +02:00
Derk-Jan Hartman aa2b8e82ff @hartman Add descriptions and audio button to adaptive classes. closes #3312 2016-05-17 12:15:52 +02:00
Nicky Gerritsen cf5d64dd49 @nickygerritsen Update Dutch language file. closes #3297 2016-05-17 12:14:07 +02:00
Nicky Gerritsen ed39b68f13 @nickygerritsen Add title to all clickable components. closes #3296 2016-05-17 10:17:12 +02:00
Gary Katsevman b1e7bfd8f8 Merge branch 'stable' 2016-05-12 14:49:47 -04:00
Gary Katsevman a11f66ff4f v5.10.2 2016-05-12 14:44:36 -04:00
Gary Katsevman 82d396a1fb @gkatsev nulled out currentSource_ in setSource. closes #3314 2016-05-12 14:43:10 -04:00
Pat O&#x27;Neill ed3249818e @misteroneill Un-deprecate the videojs.players property. closes #3299 2016-05-11 09:10:15 +02:00
Nicky Gerritsen 68c4d248d9 @nickygerritsen Also pass tech options to canHandleSource. closes #3303 2016-05-11 09:08:17 +02:00
Derk-Jan Hartman 6e8ab67a48 @hartman Correct documentation to refer to nativeTextTracks option. closes #3309 2016-05-11 09:05:41 +02:00
brandonocasey 7c94ac42cc @BrandonOCasey Document audio/video track usage. closes #3295 2016-05-04 09:15:21 +02:00
Gary Katsevman 971dbaecc4 v5.10.1 2016-05-03 15:42:43 -04:00
Gary Katsevman 3aff03be84 5.10 is a broken release, update changelog 2016-05-03 15:42:11 -04:00
Gary Katsevman 9a59aee304 v5.10.0 2016-05-03 15:39:05 -04:00
jforbes 4156307792 @forbesjo add an audio track selector menu button. closes #3223 2016-05-02 18:56:44 -04:00
Greg Smith 249532ad45 @incompl clear currentSource_ after subsequent loadstarts. closes #3285 2016-05-02 18:54:34 -04:00
Owen Edwards 6296ca8538 @OwenEdwards added language attribute in HTML files for accessibility. closes #3257 2016-04-28 15:29:40 -07:00
brandonocasey 2e2dbde4b4 @BrandonOCasey added audio and video track support. closes #3173 2016-04-22 14:31:12 -04:00
Gary Katsevman 18cdf08c0e @gkatsev updated text track documentation and crossorigin warning. Fixes #1888, #1958, #2628, #3202. closes #3256 2016-04-20 15:46:49 -04:00
Gary Katsevman b931b6bde9 Merge branch 'stable' 2016-04-19 17:37:16 -04:00
Gary Katsevman aa94e0be07 v5.9.2 2016-04-19 17:35:43 -04:00
Gary Katsevman ae4617d74c @gkatsev grouped text track errors in the console, if we can. closes #3259 2016-04-19 17:26:26 -04:00
Gary Katsevman cfb9621884 Merge branch 'stable' 2016-04-19 17:20:24 -04:00
Gary Katsevman e7d31d3f9e v5.9.1 2016-04-19 17:18:51 -04:00
Gary Katsevman 264e53fb5b @gkatsev fixed text track tests for older IEs. closes #3269 2016-04-19 17:09:53 -04:00
Gary Katsevman 048dad4cf3 revert 75116d4 adding chrome to travis (#3254) 2016-04-19 15:52:36 -04:00
jforbes a347c1d0fa @forbesjo added back the background color to the poster. closes #3267 2016-04-19 15:49:41 -04:00
Gary Katsevman d3b368ccce @gkatsev fixed removeRemoteTextTracks not working with return value from addRemoteTextTracks. closes #3253 2016-04-19 15:46:33 -04:00
Gary Katsevman ff83aa6573 @gkatsev made the first emulated text track enabled by default. closes #3248 2016-04-19 15:18:21 -04:00
mister-ben 6b5040c04c @mister-ben blacklisted Chrome for Android for playback rate support. closes #3246 2016-04-19 15:13:50 -04:00
benjipott fdd4d25bad @benjipott updated IS_CHROME to not be true on MS Edge. closes #3232 2016-04-19 15:08:13 -04:00
Gary Katsevman 5cafd387ea revert 75116d4 adding chrome to travis (#3254) 2016-04-13 15:08:35 -04:00
Chris Auclair 55c101de0c @chrisauclair Make controls visible for accessibility reasons. closes #3237 2016-04-13 20:47:02 +02:00
Gary Katsevman f4ee2767eb @gkatsev Use fonts 2.0 that do not require wrapping codepoints. closes #3252 2016-04-13 20:43:51 +02:00
Nicky Gerritsen a53ef7d1b8 Get rid of double changelog line 2016-04-13 20:36:00 +02:00
Nicky Gerritsen 834b94385c @nickygerritsen Pass tech options to source handlers. closes #3245 2016-04-13 20:32:11 +02:00
Nicky Gerritsen f606f9df50 @nickygerritsen Pass tech options to source handlers. closes #3245 2016-04-13 20:28:09 +02:00
Gary Katsevman 48ec1fb3ee v5.9.0 2016-04-05 14:24:44 -04:00
Andy Earnshaw b254fb71be @andyearnshaw updated document event handlers to use el.ownerDocument. closes #3230 2016-04-05 14:04:47 -04:00
Chris Auclair fa27cc7dbf @chrisauclair added ARIA region and label to player element. closes #3227 2016-04-05 13:47:58 -04:00
Michael Gallaspy e183194224 @MCGallaspy added vttjs to the self-hosting guide. closes #3229 2016-04-05 13:42:18 -04:00
jforbes 75116d4249 @forbesjo added chrome for PR tests. closes #3235 2016-04-05 13:36:33 -04:00
Gary Katsevman 002b739930 Merge branch 'stable' 2016-04-05 13:29:33 -04:00
Owen Edwards 0f40f3f155 @OwenEdwards improved handling of deprecated use of Button component. closes #3236 2016-04-05 13:26:49 -04:00
Gary Katsevman 41f8e7b855 Merge branch 'stable' 2016-04-04 13:31:08 -04:00
Gary Katsevman 4849374f23 v5.8.8 2016-04-04 13:27:37 -04:00
seescode 4e45d21836 @seescode fixed dragging on mute toggle changing the volume. Fixes #3036. Closes #3228 2016-04-04 13:19:18 -04:00
seescode 471529b805 @seescode fixed css failing on IE8 due to incorrect ie8 hack. Fixes #3140. Closes #3226. 2016-04-04 13:09:19 -04:00
Volodymyr Tytar 68bb36e3eb @vtytar fixed auto-setup failing if taking too long to load. Fixes #2386. Closes #3233. 2016-04-04 13:05:26 -04:00
mister-ben 6e579ba4da @mister-ben updated the time tooltips to use the chosen font family. closes #3213 2016-03-29 17:53:09 -04:00
scaryguy 46374f5b57 @scaryguy updated videojs cdn urls in the README. closes #3195 2016-03-29 17:50:51 -04:00
Owen Edwards 0d2d8f58dd @OwenEdwards fixed links adding extra tab stop with IE by removing anchor tags on videojs init. closes #3194 2016-03-29 17:47:08 -04:00
Gary Katsevman ba7ec0bf57 Merge branch 'stable' 2016-03-29 17:34:32 -04:00
Gary Katsevman dc3fc686e7 v5.8.7 2016-03-29 17:30:58 -04:00
Gary Katsevman 5261f8204f Merge branch 'stable' 2016-03-29 17:28:11 -04:00
mister-ben f8a5cdc319 @mister-ben updated Arabic language files. closes #3225 2016-03-29 17:28:04 -04:00
Gary Katsevman 3a800186b3 Merge branch 'stable' 2016-03-29 17:20:33 -04:00
mister-ben a22c7f2a4d @mister-ben fixed missing native HTML5 tracks. Fixes #2689. Closes #3212 2016-03-29 17:19:59 -04:00
Gary Katsevman a74b92643d Merge branch 'stable' 2016-03-29 16:29:10 -04:00
Andrey Nikitin b2d0e10dbd @avreg fixed notSupportedMessage saying video when meaning media 2016-03-29 16:28:47 -04:00
Gary Katsevman 096c36f8ed Merge branch 'stable' 2016-03-29 16:20:47 -04:00
mister-ben 4cf2cc72b5 @mister-ben added dir=ltr to control bar and loading spinner. closes #3221 2016-03-29 16:20:13 -04:00
Gary Katsevman b91018952e Merge branch 'stable' 2016-03-29 16:15:07 -04:00
Maythee Anegboonlap 31b2f9d489 @llun fixed menus from throwing when focused when empty. closes #3218 2016-03-29 16:09:10 -04:00
Gary Katsevman 3070e738f1 fix IE8 tests for VIDEOJS_NO_DYNAMIC_STYLE. closes #3215 2016-03-28 12:20:58 -04:00
Gary Katsevman 4663d0ed01 use a brand new tag el for ie8 2016-03-28 12:08:00 -04:00
Can Küçükyılmaz ac3771a329 @defli added currentWidth and currentHeight methods to the player. closes #3144. 2016-03-25 15:12:53 -04:00
Gary Katsevman 1c730cb21f Merge branch 'stable' 2016-03-25 15:04:25 -04:00
Gary Katsevman 6845cbedc3 v5.8.6 2016-03-25 14:57:13 -04:00
Pat O'Neill 6eba133963 @misteroneill fixed type and indenting in language files. closes #3207. 2016-03-25 14:47:52 -04:00
Gary Katsevman d4c1af60ac @gkatsev added an option to keep the tooltips inside the player bounds. closes #3149 2016-03-25 14:34:06 -04:00
ricardo siri bf95bb21cc @ricardosiri68 changed the relative sass paths. closes #3147 2016-03-25 14:29:47 -04:00
Aris 4e75ce1e9e @arius28 added greek translation file (el.json). closes #3185 2016-03-25 14:25:49 -04:00
Kamil Brenk 9f38a08399 @kamilbrenk Added lang: pl.json. closes #3127 2016-03-25 14:20:06 -04:00
Owen Edwards 41bc481597 @OwenEdwards added basic descriptions track support. closes #3098 2016-03-25 14:16:56 -04:00
Gary Katsevman 66a2c05510 @gkatsev updated vjs to not add dynamic styles when VIDEOJS_NO_DYNAMIC_STYLE is set. closes #3093 2016-03-25 14:06:39 -04:00
Gary Katsevman db189b73d7 v5.8.5 2016-03-17 19:01:44 -04:00
Gary Katsevman dbdc411dc2 @gkatsev cleared vttjs script handlers on dispose. Fixed tests. closes #3189 2016-03-17 18:56:25 -04:00
Gary Katsevman 94e899f810 v5.8.4 2016-03-17 14:54:29 -04:00
Gary Katsevman e2c8c125a2 @gkatsev changed emulated tracks to in novtt to wait for vttjs to load or error before parsing. closes #3181 2016-03-17 14:53:00 -04:00
Gary Katsevman 0b26d83e99 v5.8.3 2016-03-10 14:05:56 -05:00
Gary Katsevman 8cc633edc4 @gkatsev fixed keyboard control of menus with titles. Fixes #3164. closes #3165 2016-03-10 13:59:31 -05:00
Gary Katsevman 3367b007a2 v5.8.2 2016-03-09 14:27:53 -05:00
Gary Katsevman feb7e26211 @gkatsev fixed chapters menu. Fixes #3062. closes #3163 2016-03-09 14:26:07 -05:00
Gary Katsevman 5a5b42f2a7 v5.8.1 2016-03-07 15:26:26 -05:00
Owen Edwards f82a3d148f @OwenEdwards fixed menu closing on ios, specifically ipad. closes #3158 2016-03-07 15:25:12 -05:00
Can Küçükyılmaz 21051534f3 @defli fixed typo and updated Turkish translations. closes #3156 2016-03-07 15:14:58 -05:00
Can Küçükyılmaz f4bc3c12b5 @defli added missing var to sandbox index.html example. closes #3155 2016-03-07 14:58:02 -05:00
brandonocasey c1112b74fe @BrandonOCasey updated text track unit tests to use full es6 syntax. closes #3148 2016-03-07 14:54:32 -05:00
Gary Katsevman f77bcc95d0 @gkatsev cleared waiting/spinner on timeupdate. Fixes #3124. closes #3138 2016-03-07 14:48:15 -05:00
brandonocasey cb3d709237 @BrandonOCasey converted remaining text-track modules to ES6. closes #3130 2016-02-29 11:08:38 -05:00
Gary Katsevman d9a0a4503c @gkatsev updated videojs badges in the README. closes #3134 2016-02-24 01:25:04 -05:00
Gary Katsevman 3ef88f8b80 v5.8.0 2016-02-19 14:18:37 -05:00
Pat O&#x27;Neill 80c6c16a2f @misteroneill added alt css as video-js-cdn.css. closes #3118 2016-02-19 14:17:47 -05:00
mister-ben e12ca69306 @mister-ben Added en.json as localization template. closes #3096 2016-02-19 12:18:27 -05:00
jforbes d8ba649549 @forbesjo updated track settings to not fail restoring settings when localStorage is not available. closes #3120 2016-02-19 12:15:41 -05:00
Quentin Burny 0490728321 @Naouak updated time display to not change if values do not change. closes #3101 2016-02-19 12:04:06 -05:00
jforbes dd1f2b5c25 @forbesjo updated travis to use latest firefox. closes #3112 2016-02-19 11:51:42 -05:00
Nima Saberi 47a307b773 @Nipoto added fa.json (farsi/persian lang file). closes #3116 2016-02-19 11:48:54 -05:00
Gary Katsevman 050f23d913 @gkatsev added issue and PR templates for github. closes #3117 2016-02-18 17:19:55 -05:00
Gary Katsevman b027603a6a v5.7.1 2016-02-11 17:13:33 -05:00
Gary Katsevman a2f5430a5d @gkatsev fixed minified videojs in IE8. Fixes #3064 and #3070. closes #3104 2016-02-11 17:04:30 -05:00
alex-phillips acd775f551 @alex-phillips fixed reference to videojs-vtt.js dependency. closes #3080 2016-02-11 16:59:38 -05:00
Gary Katsevman 084bcf692c v5.7.0 2016-02-04 13:44:19 -05:00
Erik Yuzwa fc7a166705 @erikyuzwa added ability to add child component at specific index. closes #2540 2016-02-04 13:42:49 -05:00
Pat O&#x27;Neill 341c9c7700 @misteroneill fixed iphone useragent detection. closes #3077 2016-02-04 12:32:33 -05:00
Derk-Jan Hartman 5245335147 @hartman Set a min-width for the progress slider of 4em. closes #2902 2016-02-04 11:52:39 -05:00
Derk-Jan Hartman 171ec1a274 @hartman updated fullscreen and time controls for more consistent widths. closes #2893 2016-02-04 11:49:59 -05:00
mister-ben 29f66acb98 @mister-ben updated Umuted to Unmute in lang files. closes #3053 2016-02-03 16:15:16 -05:00
Derk-Jan Hartman d9cad36ade @hartman Corrected adaptive layout selectors to match their intent. closes #2923 2016-02-02 15:30:04 -05:00
Gary Katsevman 99b34e9691 @gkatsev updated README to include links to plugins page and getting started and cleaner link to LICENSE. closes #3066 2016-02-02 14:40:43 -05:00
Greg Smith 2f0b9ee8ca @incompl improved the UX of time tooltips. closes #3060 2016-02-02 14:32:19 -05:00
jforbes c8646aa02b @forbesjo updated emulated tracks to have listeners removed when they are removed. closes #3046 2016-02-02 14:29:31 -05:00
Gary Katsevman 58f76136e5 v5.6.0 2016-01-26 12:09:40 -05:00
Gary Katsevman 47f639fb41 @gkatsev updated to latest videojs-ie8 shim. closes #3042 2016-01-26 12:08:46 -05:00
Jamie bb606cdcbd @hubdotcom changed URLs in README to be protocol-relative. closes #3040 2016-01-26 11:34:36 -05:00
Patrick 876e48547c @CoWinkKeyDinkInc fixed table in Tracks guide. Replaced some single quotes with double quotes. closes #2946 2016-01-25 20:11:26 -05:00
n23430 df02e7a709 @aril-spetalen added language support for Norwegian (nb and nn). closes #3021 2016-01-25 20:01:15 -05:00
Vitor Faiante 9cdfb75187 @vitor-faiante updated the guides. closes #2781 2016-01-25 19:50:02 -05:00
Gary Katsevman 8a17313a3b @gkatsev checked muted status when updating volume bar level. closes #3037 2016-01-25 19:41:58 -05:00
Owen Edwards 6317395e0c @OwenEdwards fixed double-localization of mute toggle control text. closes #3017 2016-01-25 19:38:28 -05:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 b9f251650b @mister-ben made $primary-foreground-color a !default sass var. closes #3003 2016-01-25 19:34:53 -05:00
Owen Edwards 0ffb27abb0 @OwenEdwards Fixed volume menu keyboard access. closes #3034 2016-01-25 19:18:12 -05:00
Owen Edwards e05931dd19 @OwenEdwards Fixed menu keyboard access and ARIA labeling for screen readers. closes #3033 2016-01-25 19:05:10 -05:00
Owen Edwards 16f0179c07 @OwenEdwards added ClickableComponent. Fixed keyboard operation of buttons. closes #3032 2016-01-25 18:30:12 -05:00
Gary Katsevman 81caccd154 v5.5.3 2016-01-15 15:33:46 -05:00
rcrooks d448acd224 @rcrooks fixed a couple of docs link and a jsdoc comment. closes #2987 2016-01-15 15:33:15 -05:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 c901fcee6b @mister-ben updated CDN urls in setup guide. closes #2984 2016-01-15 15:31:08 -05:00
Gary Katsevman 6977b0e3fe @gkasev updated vjs to correctly return already created player when given an element. closes #3006 2016-01-15 15:27:35 -05:00
Gary Katsevman b48797bf17 v5.5.2 2016-01-14 14:03:00 -05:00
Gary Katsevman dcf2a300ef make sure that styleEl_ is in DOM before removing on dispose. closes #3004 2016-01-14 14:01:30 -05:00
Gary Katsevman 088f47af2e v5.5.1 2016-01-08 18:59:50 -05:00
Gary Katsevman 984085a048 @gkatsev fixed sass if else for icons. closes #2988 2016-01-08 18:58:56 -05:00
Gary Katsevman 67840aabbe v5.5.0 2016-01-07 23:39:07 -05:00
Gary Katsevman 93f2f83723 @gkatsev updated css to have ascii codepoints for fonticons. Expose new scss file. closes #2973 2016-01-07 23:36:09 -05:00
jforbes 867fec910f @forbesjo updated player to not autoplay if there is no source. closes #2971 2016-01-07 23:23:38 -05:00
Greg Smith aa4700b098 @incompl updated build command in CONTRIBUTING.md. closes #2967 2016-01-07 23:13:15 -05:00
jforbes b84be556a6 @forbesjo fixed errorDisplay erroring on subsequent openings. closes #2966 2016-01-07 23:10:43 -05:00
rcrooks 0f219b1f1d @rcrooks fixed some broken links in guides. closes #2965 2016-01-07 23:08:12 -05:00
Pete Huitsing 49cc73f980 @huitsing updated docstrings for autoplay and loop methods. closes #2960 2016-01-07 23:05:48 -05:00
Pat O&#x27;Neill 8ad286a768 @misteroneill exposed createEl on videojs. closes #2926 2016-01-07 23:03:23 -05:00
Derk-Jan Hartman 5f239d7cf1 @hartman fixed usage of lighten in progress component. Fixes #2793. closes #2875 2016-01-07 23:00:09 -05:00
Gary Katsevman 35203f613f v5.4.6 2015-12-22 17:00:46 -05:00
Gary Katsevman 692608270e @gkatsev fixed vertical slider alignment in volume menu button. closes #2943 2015-12-22 16:58:58 -05:00
Gary Katsevman d99ce79954 v5.4.5 2015-12-15 14:47:29 -05:00
rcrooks 01a7e7509e @rcrooks fixed simple embed example. closes #2915 2015-12-15 14:46:16 -05:00
Derk-Jan Hartman 09f182db60 @hartman updated options guide doc. closes #2908 2015-12-15 14:43:30 -05:00
brandonocasey 7838fe2ec3 @BrandonOCasey updated sandbox to to use newer CDN urls. closes #2917 2015-12-15 14:38:09 -05:00
Gary Katsevman 45d43ec904 @gkatsev updated styles for inline menu and volume bar. closes #2913 2015-12-15 14:26:18 -05:00
Gary Katsevman c61e9e49ab @gkatsev added mouse/touch listeners to volume menu button. closes #2638 2015-12-15 14:17:43 -05:00
Matthew McClure 4cb14eb420 Update plugin documentation to reflect icon usage 2015-12-10 10:38:49 -08:00
Gary Katsevman 1d88ef066d v5.4.4 2015-12-09 18:14:48 -05:00
Gary Katsevman 16f2e4113a @gkatsev switched to use custom vtt.js from npm. closes #2905 2015-12-09 18:12:46 -05:00
Gary Katsevman 4424a06a3d v5.4.3 2015-12-08 20:32:12 -05:00
Gary Katsevman 08f03c160c @gkatsev updated options customizer and github-release options. closes #2903 2015-12-08 20:30:48 -05:00
Gary Katsevman 565dba8671 v5.4.2 2015-12-08 18:59:59 -05:00
Gary Katsevman a528e44d9b @gkatsev updated grunt-release config. closes #2900 2015-12-08 18:59:02 -05:00
Gary Katsevman 996822ba68 v5.4.1 2015-12-08 15:53:02 -05:00
Gary Katsevman 359df7148b @gkatsev added chg- and github- release for next releases. closes #2899 2015-12-08 15:52:17 -05:00
Gary Katsevman c6bf2b847a v5.4.0 2015-12-08 13:56:28 -05:00
Gary Katsevman 44edb12700 @gkatsev added ability to release next tag from master. closes #2894 2015-12-08 13:03:14 -05:00
Gary Katsevman 5bb1a76c4e @gkatsev added nullcheck for cues in updateForTrack. Fixes #2870. closes #2896 2015-12-08 11:43:14 -05:00
Carey Hinoki 8f2bc92412 @chemoish emulated HTMLTrackElement to enable track load events. closes #2804 2015-12-08 11:24:51 -05:00
Gary Katsevman e78e26b8a4 @gkatsev added a Player#reset method. Fixes #2852. closes #2880 2015-12-07 17:45:50 -05:00
Nicholas Fantozz 9e3a7b6159 @nick11703 changed multiline comments in sass with single-line comments. closes #2827 2015-12-07 16:30:26 -05:00
Gary Katsevman 0b7a2e41b3 @gkatsev added Player#tech. Fixes #2617. closes #2883 2015-12-07 16:27:33 -05:00
Pat O&#x27;Neill f225d4e68a @misteroneill updated videojs-ie8 to 1.1.1. closes #2869 2015-12-07 16:24:18 -05:00
Gary Katsevman a601fbb83f v5.3.0 2015-11-25 17:14:05 -05:00
jrivera 69b89e51f4 @imbcmdth added sourceOrder option for source-first ordering in selectSource. closes #2847 2015-11-25 17:11:36 -05:00
jforbes 8acd28c15a @forbesjo updated formatTime to not go negative. closes #2821 2015-11-25 16:46:41 -05:00
Matthew b188781fa9 v5.2.4 2015-11-25 21:31:49 +00:00
Matthew McClure 5ed0dc8adb @mmcc fixed vertical volume. closes #2859 2015-11-25 16:18:34 -05:00
Garrett Singer 72f77d77c9 @gesinger fixed handler explosion for cuechange events. closes #2849 2015-11-25 16:13:23 -05:00
Garrett Singer 7171ea8d42 @gesinger checked for track changes before tech started listening. closes #2835 2015-11-25 16:00:49 -05:00
Gary 3e19c91828 v5.2.3 2015-11-24 20:52:01 +00:00
Gary Katsevman 5f9095079e @gkatsev fixed clearing out errors. closes #2850 2015-11-24 15:37:34 -05:00
paladox 552d8cbda3 v5.2.2 2015-11-23 17:31:27 +00:00
paladox 8d0de0fa51 @paladox updated xhr from deprecated ver to v2.2. closes #2837 2015-11-23 12:22:07 -05:00
tomaspinho c4dbd2488b @tomaspinho added &#x27;ended&#x27; event to API docs. closes #2836 2015-11-23 12:15:50 -05:00
Violeta Marculescu c0d5f471bc @bcvio fixed returning current source rather than blob url. closes #2833 2015-11-23 12:04:31 -05:00
Nathaniel Bibler 3a40b10fa6 @nbibler ensured classes begin with alpha characters. Fixes #2828. closes #2829 2015-11-20 17:38:05 -05:00
Dat Tran 7dff83b2a4 @DatTran fixed bower paths. Fixes #2740. closes #2775 2015-11-20 17:22:49 -05:00
Kay 6bbd6f1a65 v5.2.1 2015-11-16 16:43:29 +00:00
Kay J d9b5fbc60d @ksjun corrected the registerTech export. closes #2816 2015-11-16 10:42:35 -05:00
David LaPalomento 385266338a @dmlap Check a component is a function before new-ing. closes #2814 2015-11-16 10:18:09 -05:00
Gary Katsevman 0e1c424e48 v5.2.0 2015-11-10 15:56:11 -05:00
Gary Katsevman d1316a39ab @gkatsev updated MediaLoader to check for techs in their registry. closes #2798 2015-11-10 15:53:14 -05:00
Gary Katsevman 210caea7f0 @gkatsev updated contrib.json to use / as branch-name separator in feature-accept. closes #2803 2015-11-10 15:50:21 -05:00
Gary Katsevman 0da23c1d8d @gkatsev fixed usage of textTracksToJson. closes #2797 2015-11-10 15:30:09 -05:00
zjruan 2627e86db5 @zjruan updated text track prototype loops to blacklist constructor for IE8. closes #2565 2015-11-10 15:15:58 -05:00
Greg ea2e274a30 @incompl fixed broken link to reduced test cases article. closes #2801 2015-11-10 10:54:20 -05:00
Pat O&#x27;Neill f2fa8f8687 @misteroneill exposed DOM helpers. closes #2754 2015-11-09 17:43:17 -05:00
Siebrand Mazeland cd800b02ea @siebrand updated dutch translations. closes #2556. 2015-11-09 15:07:28 -05:00
paladox 89d860fb84 @paladox updated grunt-contrib-jshint. closes #2554 2015-11-09 14:47:51 -05:00
paladox ed5ed0ded4 @paladox updated grunt-cli dependency. closes #2555 2015-11-09 14:44:22 -05:00
Gary Katsevman 977eedda79 Update CHANGELOG for RTMP 2015-11-09 14:31:43 -05:00
Brian Deitte 4e395b6b02 Add unit test for new rtmp path changes 2015-11-09 14:31:15 -05:00
Jacob Poul Richardt a25c4c98f3 Added logic to avoid incorrectly dividing a rtmp path with multiple query parameters in the connection part of the path. 2015-11-09 14:31:15 -05:00
Gary Katsevman b1e863677f @gkatsev added a tech registry. Fixes #2772. closes #2782 2015-11-09 14:12:57 -05:00
David LaPalomento 98f241d614 @dmlap updated swf to 5.0.1. closes #2795 2015-11-09 11:47:47 -05:00
Gary Katsevman 5d754c911d @gkatsev made initListeners more general and added Tech.isTech. Fixes #2767. closes #2773 2015-11-06 16:42:19 -05:00
Gary Katsevman fa2f08ad66 v5.1.0 2015-11-02 11:27:10 -05:00
jrivera 0b32893612 @imbcmdth Deferred the implementation of select functions in the tech to source handlers if they provide them. closes #2760 2015-10-30 16:09:27 -04:00
Carey Hinoki d0efd16b49 @chemoish Fix captions sticking to bottom for webkit browsers. Fixes #2193. closes #2702 2015-10-30 16:02:16 -04:00
Erik Straub c24a3a8173 @brkattk updated emulateTextTrack to exit early if no textTracks. closes #2426 2015-10-28 18:01:15 -04:00
Pat O&#x27;Neill e6f5d6b585 @misteroneill Add browserify:dist Target. Fix vtt.js URL.. closes #2741 2015-10-28 17:47:18 -04:00
Pat O&#x27;Neill 42e33ca537 @misteroneill updated modal dialog CSS. closes #2756 2015-10-28 17:30:56 -04:00
jforbes 655e14a733 @forbesjo Added Microsoft Caption Maker link. closes #2618 2015-10-28 16:14:44 -04:00
Ian Zamojc 871dac9c3a @Soviut Fixed argument names in some API docs. closes #2714 2015-10-28 16:10:51 -04:00
KahWee Teng 6e25aef060 @kahwee Fixed sandbox plugin example to work in Video.js 5. closes #2691 2015-10-28 16:06:33 -04:00
Dave Voyles 5f5357d535 @DaveVoyles updated URL to player API docs. closes #2685 2015-10-28 15:59:32 -04:00
Pat O&#x27;Neill 86f23d39fd @misteroneill removed z-index from big play button. closes #2639 2015-10-28 15:53:14 -04:00
Pat O&#x27;Neill 51f1863adc @misteroneill added a modal dialog. closes #2668 2015-10-28 13:28:15 -04:00
Gary Katsevman ab88bcdde3 @gkatsev fixes track tests and ignored empty properties in tracks converter. closes #2744 2015-10-27 15:54:48 -04:00
Nicky Gerritsen 589cab7fa7 @nickygerritsen added canPlayType method to player. closes #2709 2015-10-27 13:46:05 -04:00
jforbes c85b526a1c @forbesjo removed android/ios tests to increase build stability. closes #2739 2015-10-26 17:13:57 -04:00
jforbes 4598b38291 @forbesjo updated karma to use all installed browsers for unit tests. closes #2708 2015-10-26 17:06:16 -04:00
Gary Katsevman 93e079718e @gkatsev removed unhelpful isCrossOrigin test. closes #2715 2015-10-26 16:57:21 -04:00
Gary Katsevman 34742e09a5 Merge branch 'stable' 2015-10-23 17:37:57 -04:00
Gary 702fbe4d68 v5.0.2 2015-10-23 21:24:20 +00:00
Gary Katsevman d036f25681 Fixup changelog 2015-10-23 17:20:18 -04:00
Gary e98bc42500 v5.0.1 2015-10-23 20:20:49 +00:00
Gary Katsevman d47a8ab2dc Merge branch 'stable' 2015-10-23 16:15:16 -04:00
Gary Katsevman c89f645600 @gkatsev bumped chg to fix stalling issues. closes #2732 2015-10-23 16:15:07 -04:00
Gary Katsevman 6f3826a7ef Merge branch 'stable' 2015-10-23 12:00:11 -04:00
Gary Katsevman d9524d4d35 @gkatsev updated contrib update and have contrib release only update local branches. closes #2723 2015-10-23 11:59:57 -04:00
Gary Katsevman 1834d39c2f Merge branch 'stable' 2015-10-20 14:00:48 -04:00
Gary Katsevman 49698d2a8c @gkatsev bumped obj.assign to fix uncaught SecurityError in iframes. Fixes #2703. closes #2721 2015-10-20 13:57:21 -04:00
Gary Katsevman 9c28857247 bump object.assign. Fixes #2703 2015-10-20 13:46:55 -04:00
typcn 40b6ad3050 @typcn bumped grunt-sass to ^1.0.0 to support node 4.x. closes #2645 2015-10-19 11:34:57 -04:00
heff e58c2266de Merge branch 'stable' 2015-10-09 14:14:17 -07:00
heff 0832b89970 Added merge to master process back to the patch accept process 2015-10-09 14:13:23 -07:00
heff 7ce59efa7d Merge branch 'stable' 2015-10-09 14:07:57 -07:00
jrivera 8c101e2b35 @imbcmdth fixed an issue with emulateTextTracks being called before the tech dom was ready. closes #2692 2015-10-09 14:06:55 -07:00
heff aab9246253 Fixed the branch releases are created from 2015-09-29 16:15:22 -07:00
Steve Heffernan da09a44eda Updated usage stats in readme 2015-09-29 13:05:26 -07:00
Steve Heffernan 6beb0eb299 Update version in readme code 2015-09-29 13:04:40 -07:00
Matthew McClure a56781945a Removed unstable warning 2015-09-29 11:39:05 -07:00
heff 872459837b v5.0.0 2015-09-29 09:40:01 -07:00
heff 6354329a1b Removed outdated API docs 2015-09-29 09:31:22 -07:00
heff cd6c568a03 @imbcmdth fix potential triggerReady infinite loop 2015-09-29 09:28:02 -07:00
heff e225fbffc2 Merge branch 'master' into stable
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.less
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
	src/css/video-js.less
	src/js/control-bar/time-display.js
	src/js/exports.js
	src/js/lib.js
	src/js/media/flash.js
	src/js/media/flash.rtmp.js
	src/js/media/html5.js
	src/js/media/media.js
	src/js/player.externs.js
	test/unit/api.js
	test/unit/flash.js
	test/unit/media.html5.js
	test/unit/media.js
2015-09-29 09:14:50 -07:00
heff a5dad5ade2 v5.0.0-rc.104 2015-09-28 22:21:17 +00:00
heff 1d79c4a9e2 @heff changed component child lists to arrays instead of objects. closes #2477 2015-09-28 15:17:48 -07:00
heff c5321f4cbf v5.0.0-rc.103 2015-09-28 20:55:49 +00:00
heff 60c86465f8 @heff improved some skin defaults for external styling. closes #2642 2015-09-28 13:53:37 -07:00
Benoit 1f618d7b00 v5.0.0-rc.102 2015-09-28 18:25:20 +00:00
Benoit Tremblay 2de28927d7 @eXon added support for a tech-supplied poster. closes #2339 2015-09-28 11:23:25 -07:00
Pat 8d9695b6ad v5.0.0-rc.101 2015-09-25 18:16:18 +00:00
Pat O&#x27;Neill ad0820cfa3 @misteroneill fixed tsml to be used as a tag for template strings. closes #2629 2015-09-25 14:13:56 -04:00
heff 992e5e63f5 v5.0.0-rc.100 2015-09-25 15:25:18 +00:00
heff f6dca78c5e Fixed a contrib.json error 2015-09-25 11:23:28 -04:00
Gary Katsevman 0b7cf586c2 @gkatsev exposed isCrossOrigin and used it to enable CORS for textTrack XHRs. closes #2633 2015-09-24 19:58:25 -04:00
Pat O&#x27;Neill 1234faaf71 @misteroneill updated play control to use its state for icon. closes #2636 2015-09-24 16:37:10 -04:00
heff f5b80c8ea9 Updated the contrib release process for 5.0
Also unescaped changelog entries in contrib pr accept

--skip-ci
2015-09-23 17:26:04 -04:00
heff 2c10c7f310 v5.0.0-rc.99 2015-09-23 16:36:55 +00:00
heff 81806d5725 @heff fixed timeranges deprecation warnings in tests. closes #2627 2015-09-23 12:34:59 -04:00
heff 9788112e76 v5.0.0-rc.98 2015-09-23 16:31:12 +00:00
heff 42468e19be @heff removed a second copy of video.novtt.js from dist. closes #2630 2015-09-23 12:29:22 -04:00
Matthew ba6018d4ea v5.0.0-rc.97 2015-09-22 23:55:38 +00:00
Matthew McClure e121428565 moved actual grunt file to build dir 2015-09-22 15:58:42 -07:00
Pat 2be7263ac3 v5.0.0-rc.96 2015-09-22 15:46:50 +00:00
Pat O&#x27;Neill 3f8be868bd @misteroneill re-exposed videojs.TextTrack. closes #2625 2015-09-22 11:41:39 -04:00
jforbes 8fbe0a947f v5.0.0-rc.95 2015-09-22 15:39:08 +00:00
jforbes 1f06f23ded @forbesjo removed the PhantomJS dependency. closes #2622 2015-09-22 11:32:23 -04:00
Pat d072d9b371 v5.0.0-rc.94 2015-09-22 15:21:08 +00:00
Pat O&#x27;Neill 61a00db7cb @misteroneill rename &quot;extends&quot; to &quot;extend&quot; for ie8. closes #2624 2015-09-22 11:19:04 -04:00
jrivera a0b4293b82 v5.0.0-rc.93 2015-09-21 22:05:46 +00:00
jrivera 24ad9841ac @imbcmdth extended createTimeRange to support multiple timeranges. closes #2604 2015-09-21 18:04:10 -04:00
Gary ccedad44ef v5.0.0-rc.92 2015-09-21 21:54:09 +00:00
Gary Katsevman 81000369ec @gkatsev fixed potential double default style elements. closes #2619 2015-09-21 17:52:32 -04:00
heff 651a33a145 v5.0.0-rc.91 2015-09-18 17:31:30 +00:00
heff 51bae4d7cf Fixed a double loadstart and added readyState catch up events
- Fixed some issue comments
 - Fixed a double ready event

closes #2605
fixes #2588
2015-09-18 10:28:16 -07:00
David 968bd7432d v5.0.0-rc.90 2015-09-15 22:28:43 +00:00
David LaPalomento 24cdbdefff Use Raynos/xhr for XMLHttpRequests
- Get rid of our custom XHR shim. Export it as videojs.xhr.
- Updated XHR to be stubbed everywhere in tests to prevent errors.
- Added npm install to the review process

closes #2318
closes #2594
2015-09-15 15:25:11 -07:00
heff 0c416bd286 v5.0.0-rc.89 2015-09-15 20:04:00 +00:00
heff 4cb76873f4 Removed the loadedalldata event
closes #2591
closes #1676
2015-09-15 12:59:01 -07:00
heff 99376bf396 v5.0.0-rc.88 2015-09-15 19:56:34 +00:00
heff f7466af956 Made tech related functions clearly private in the player
This is important for enforcing the model that techs should
work the same for everything.

closes #2590
fixes #2060

- Made techGet and techCall private functions
- Made loadTech, techName, and unloadTech private
- Cleaned up all other private method naming in the player
- Removed some unneeded comments
2015-09-15 12:54:26 -07:00
heff 50bb4540a1 v5.0.0-rc.87 2015-09-15 18:01:20 +00:00
heff f10d8d0cb3 @heff added an attributes argument to createEl(). closes #2589
fixes #2176
2015-09-15 10:59:08 -07:00
Gary a3bfa8a73c v5.0.0-rc.86 2015-09-15 16:44:01 +00:00
Gary Katsevman 63451a7526 @gkatsev added a mouse-hover time display to the progress bar. closes #2569 2015-09-15 09:41:53 -07:00
heff 4f250e8fc2 v5.0.0-rc.85 2015-09-15 01:32:47 +00:00
heff 85b825a0dd @heff added a fancy loading spinner. closes #2582 2015-09-14 18:29:06 -07:00
heff 517489513f v5.0.0-rc.84 2015-09-15 01:27:53 +00:00
heff c9974657a9 @heff moved scss vars to be private. closes #2584 2015-09-14 18:26:14 -07:00
heff 313d18106b v5.0.0-rc.83 2015-09-14 23:04:09 +00:00
heff 32aa9ed7e4 @heff improved css selector strengths. closes #2583 2015-09-14 16:01:50 -07:00
jforbes 4d6c737a21 v5.0.0-rc.82 2015-09-14 22:56:55 +00:00
jforbes 2e1d051144 @forbesjo added Android and iOS browser testing. closes #2538 2015-09-14 15:55:01 -07:00
jforbes 2c74d9e355 v5.0.0-rc.81 2015-09-10 21:54:07 +00:00
jforbes 849b85bb83 @forbesjo fixed webkit deprecation warnings. closes #2559
fixes #2558
2015-09-10 14:53:30 -07:00
jforbes 1503bf1268 @forbesjo fixed webkit deprecation warnings. closes #2558 2015-09-10 14:51:21 -07:00
heff 4dadd01cf5 @heff fixed the inline volume control and made it the default. closes #2553 2015-09-10 14:49:32 -07:00
Gary 0bd7538fbc v5.0.0-rc.80 2015-09-09 21:24:11 +00:00
Gary Katsevman 1b745e7b11 @gkatsev made all sass variables !default. closes #2574 2015-09-09 17:20:06 -04:00
Gary a355f900b9 v5.0.0-rc.79 2015-09-09 18:21:46 +00:00
Gary Katsevman 0341ec12ad @gkatsev updated opacity of caption settings background color. closes #2573 2015-09-09 14:19:50 -04:00
heff 0b5f41c466 v5.0.0-rc.78 2015-09-08 19:48:48 +00:00
heff f7702f8f38 Fixed display the LIVE control bar item
...and also the layout in IE8 when live

Reorganized the styles some to group the vjs-live changes
with the components their affecting.

closes #2551
2015-09-08 12:45:22 -07:00
heff 9179bdbdf6 v5.0.0-rc.77 2015-09-07 19:12:24 +00:00
heff 1b057dfe85 Cleaned up durationchange process in the player 2015-09-07 12:09:59 -07:00
heff 658adb27ec v5.0.0-rc.76 2015-09-07 00:26:40 +00:00
heff 4b58fad8bd Fixed event bubbling in IE8
fixes #2414

Our fixEvent script makes a copy of the original event,
but it was failing to also set cancelBubble = true and
returnValue = false on the original event,
which is needed to make IE8 work like modern browsers.
2015-09-06 17:23:29 -07:00
Gary 3abc5c66df v5.0.0-rc.75 2015-09-04 18:57:55 +00:00
Gary Katsevman 1f5a83dc23 @gkatsev fixed the default state of userActive
closes #2557
fixes #2550
2015-09-04 11:55:48 -07:00
heff ccb6b35291 v5.0.0-rc.74 2015-09-03 21:48:35 +00:00
heff 5624adb75d @heff added back the default cdn url for the swf
closes #2533
fixes #2488
2015-09-03 14:46:30 -07:00
heff 63e21bdadd v5.0.0-rc.73 2015-09-03 20:57:06 +00:00
heff 4582e8a003 @heff added a default data attribute to fix the progress handle display in IE8
closes #2547
fixes #2449
2015-09-03 13:54:12 -07:00
heff 65b5a6e298 v5.0.0-rc.72 2015-09-02 22:48:59 +00:00
heff 3fb786e271 @heff removed playerOptions from plugin options because it created an inconsistency in plugin inits. closes #2532 2015-09-02 15:47:10 -07:00
Gary 0f6abfd210 v5.0.0-rc.71 2015-09-02 20:40:08 +00:00
Gary Katsevman 608dad1299 @gkatsev made the sass files available via npm in src/css. closes #2546 2015-09-02 16:37:44 -04:00
heff f151c3b67e v5.0.0-rc.70 2015-09-01 00:24:43 +00:00
heff f492450a01 Small fix to an IE9 broken test, introduced in #2513 2015-08-31 17:17:26 -07:00
heff b40865ad2b v5.0.0-rc.69 2015-08-31 23:38:31 +00:00
heff 4d97dd4d29 Fixed a number of errors in the log after testing
- Fixed a console error in dom tests from loading a track source
- Switched to non-fetching poster urls in tests to prevent errors
- Stubbed XHR for TextTrack tests to prevent log errors
- Fixed text track console errors that stubbing async didn't catch
    because there's some async happening in tracks that makes it so
- XHR isn't even used until the test is complete
- Removed extra code
- Added player.dispose more places and fixed attributes test
2015-08-31 16:36:11 -07:00
heff a584104b78 Release v4.12.15 2015-08-31 22:12:11 +00:00
heff 2e8b306578 Updated to v4.7.5 of the swf. closes #2531 2015-08-31 14:58:21 -07:00
David ea467b31b8 v5.0.0-rc.68 2015-08-31 19:49:31 +00:00
David LaPalomento e95e3e76b2 @dmlap expose start and end buffered times. closes #2501 2015-08-31 15:47:51 -04:00
David 6a26358da2 v5.0.0-rc.67 2015-08-31 19:39:09 +00:00
David LaPalomento b35c8774b8 @dmlap update to videojs-swf 5.0.0-rc1. closes #2528 2015-08-31 15:37:25 -04:00
Brandon Bay fca885a62f @bc-bbay migrate seeking on replay to the flash tech. closes #2519 2015-08-31 15:02:19 -04:00
Gary 336be2f8b7 v5.0.0-rc.66 2015-08-31 18:23:27 +00:00
Gary Katsevman 98315b0e52 @dmlap @gkatsev improve Flash tech error property and add an error setter to the base tech. closes #2517 2015-08-31 14:21:53 -04:00
David 547e82d8e8 v5.0.0-rc.65 2015-08-31 18:14:45 +00:00
David LaPalomento 90c6890567 @dmlap move seek on replay into the flash tech. closes #2527 2015-08-31 14:12:12 -04:00
Matthew c38778c296 v5.0.0-rc.64 2015-08-27 19:48:06 +00:00
Matthew McClure 473861ba38 Removed Microsoft Caption Maker dead link 2015-08-27 12:46:12 -07:00
Gary b27bbf16b1 v5.0.0-rc.63 2015-08-25 20:21:18 +00:00
Gary Katsevman de39cfc5ab @gkatsev improved tech controls listener handling.. closes #2511 2015-08-25 16:17:35 -04:00
David LaPalomento 75e65c6585 @dmlap update to videojs-swf 4.7.4. closes #2463 2015-08-25 09:45:54 -04:00
jforbes e10a2f4b03 v5.0.0-rc.62 2015-08-24 19:59:42 +00:00
jforbes dfe751d8d2 Increased BrowserStack polling to help with rate limit errors
closes #2497
2015-08-24 12:55:42 -07:00
heff bfbd065e42 v5.0.0-rc.61 2015-08-24 19:50:39 +00:00
heff f7d1289593 @heff fixed cross-platform track tests by switching to a fake tech. closes #2496 2015-08-24 12:48:42 -07:00
Gary 44fa9af226 v5.0.0-rc.60 2015-08-21 22:13:51 +00:00
Gary Katsevman f3b5075bcd @gkatsev fixed nativeControlsForTouch handling. Defaults to native controls on iphone and native android browsers.. closes #2499 2015-08-21 17:43:07 -04:00
Gary 0fe811df2c Release v4.12.14 2015-08-21 18:21:24 +00:00
Gary Katsevman a02f0befbc @gkatsev removed non-default track auto-disabling. closes #2468 2015-08-21 11:19:55 -04:00
jforbes ceba633edb v5.0.0-rc.59 2015-08-20 22:00:48 +00:00
jforbes 976ee6e30b @forbesjo switched automated testing to BrowserStack. closes #2492 2015-08-20 14:57:59 -07:00
Gary eca378c388 v5.0.0-rc.58 2015-08-19 23:37:55 +00:00
Gary Katsevman 904bf0cabf @gkatsev deep clone el for iOS to preserve tracks. closes #2494 2015-08-19 19:35:53 -04:00
Nicky 3228821926 v5.0.0-rc.57 2015-08-19 19:25:32 +00:00
Nicky Gerritsen 33de0085ae @nickygerritsen fixed texttrack handling in IE10. closes #2481 2015-08-19 15:23:11 -04:00
Gary d0e2ede27a v5.0.0-rc.56 2015-08-19 19:13:26 +00:00
Gary Katsevman c4ed1451e0 @gkatsev exported event helpers on videojs object. closes #2491 2015-08-19 15:11:28 -04:00
Gary 395780a1b6 v5.0.0-rc.55 2015-08-19 18:40:14 +00:00
Gary Katsevman b1055dce01 @gkatsev removed non-default track auto-disabling. closes #2475 2015-08-19 14:38:14 -04:00
Gary cc6369c524 v5.0.0-rc.54 2015-08-19 18:20:09 +00:00
Gary Katsevman ecca3a1b58 @gkatsev moved default and player dimensions to style els at the top of HEAD el. closes #2482 2015-08-19 14:18:14 -04:00
Gary Katsevman 55143b261d Merge branch 'master' of https://github.com/videojs/video.js 2015-08-19 14:16:16 -04:00
Gary Katsevman 76b5ffc7b5 @gkatsev moved default and player dimensions to style els at the top of HEAD. closes #2482 2015-08-19 14:13:58 -04:00
Pat 70d9bbd145 v5.0.0-rc.53 2015-08-19 17:57:19 +00:00
Pat O&#x27;Neill 79e58884de @misternoneill fixed vertical slider issues. closes #2469 2015-08-19 13:54:47 -04:00
Matthew 06f16d993e v5.0.0-rc.52 2015-08-17 18:30:57 +00:00
Matthew McClure 863f31546d @mmcc Fixed IE by using setAttribute to set &#x27;type&#x27; property. closes #2487 2015-08-17 11:29:02 -07:00
Pat 51f92181e8 v5.0.0-rc.51 2015-08-13 20:52:04 +00:00
Pat O'Neill 3a889ea4b5 Don't use setGlobalOptions in sandbox 2015-08-13 13:48:57 -07:00
Matthew ac97de0bd4 v5.0.0-rc.50 2015-08-13 20:45:58 +00:00
Matthew McClure 20b2a78287 @mmcc added type=button to button components. closes #2471 2015-08-13 13:43:57 -07:00
Gary 39ef157994 v5.0.0-rc.49 2015-08-12 23:06:54 +00:00
Gary Katsevman 4ec82d647d @gkatsev fixed text track errors on dispose and in cross-browser testing. closes #2466 2015-08-12 16:04:31 -07:00
Matthew 293c9875d8 v5.0.0-rc.48 2015-08-12 22:17:22 +00:00
Matthew McClure fa58f51fd1 Fixed the changelog reference
Had the wrong PR in mind when writing the changelog message.
2015-08-12 15:15:30 -07:00
Kemal Ogun Isik 4a4e85912e @misteroneill fixed a potential issue with vertical sliders by replacing an options check with the appropriate getter. closes #2460 2015-08-12 15:12:27 -07:00
David 8b97163250 v5.0.0-rc.47 2015-08-12 20:53:53 +00:00
David LaPalomento fecf3a0f8a @dmlap switched global options back to an object at videojs.options. closes #2461 2015-08-12 13:51:43 -07:00
Vladimir B 4fd59c89db Removed a duplicate changelog entry
closes #2445
--skip-ci
2015-08-12 11:36:03 -07:00
Matthew e4f2f3bd96 v5.0.0-rc.46 2015-08-12 17:50:11 +00:00
Matthew McClure f1a8421ea7 Fixed quoted boolean in options guide 2015-08-12 10:47:05 -07:00
Matthew McClure b41b12e0ab fixing merge conflict in changelog 2015-08-12 10:41:44 -07:00
Matthew McClure cbbae8fabd @mmcc made sure controls respect muted attribute. closes #2408 2015-08-12 10:39:47 -07:00
jforbes cd3f96978f v5.0.0-rc.45 2015-08-12 00:39:56 +00:00
jforbes 564da36339 @forbesjo updated the sauce labs config and browser versions
closes #2450
closes #2149
2015-08-11 17:37:27 -07:00
David c03e26c575 Release v4.12.13 2015-08-10 19:38:19 +00:00
Pat 70fec0bc50 v5.0.0-rc.44 2015-08-10 19:35:10 +00:00
Pat O&#x27;Neill ed790fdc38 @misteroneill pass vtt.js option to tech. closes #2448 2015-08-10 15:33:03 -04:00
Pat 589a0f86ee v5.0.0-rc.43 2015-08-10 19:25:17 +00:00
Pat O&#x27;Neill c0673d2852 @misteroneill create video.novtt.js in dist builds. closes #2447 2015-08-10 15:22:15 -04:00
Pat 67c0d999cc v5.0.0-rc.42 2015-08-10 19:11:38 +00:00
Pat O&#x27;Neill 1bf64890c0 @misteroneill include child components with &#x60;true&#x60; in options. closes #2424 2015-08-10 15:07:59 -04:00
Pat b528473655 v5.0.0-rc.41 2015-08-10 19:02:17 +00:00
Pat O&#x27;Neill a02e3609ab @misteroneill restore videojs.formatTime. closes #2420 2015-08-10 14:59:47 -04:00
David LaPalomento 9ed5be570d @dmlap update to videojs-swf v4.7.3. closes #2457 2015-08-10 14:28:10 -04:00
Pat O'Neill 8c6c7d6e27 Allow customizing the port used by grunt connect
Use next available port if requested one is taken

closes #2441
--skip-ci
2015-08-06 15:41:51 -07:00
Pat 6905d0b005 v5.0.0-rc.40 2015-08-06 22:11:12 +00:00
Pat O&#x27;Neill f80de2b1ac @misteroneill removed the deprecated Component init method. closes #2427 2015-08-06 15:09:13 -07:00
Pat 1f8e0cc48a v5.0.0-rc.39 2015-08-03 19:38:03 +00:00
Pat O&#x27;Neill abca8913e1 @misteroneill restore Html5.Events. closes #2421 2015-08-03 15:36:25 -04:00
Gary f97e84a41e v5.0.0-rc.38 2015-08-03 19:21:18 +00:00
Gary Katsevman 2dfd315ac1 @gkatsev always use emulated TextTrackLists so tracks survive tech switches. closes #2425 2015-08-03 15:19:36 -04:00
Nicky 7d335e0989 v5.0.0-rc.37 2015-08-03 17:28:02 +00:00
Nicky Gerritsen 1d0ae800b8 @nickygerritsen use the default seekable when a source handler is unset. closes #2401 2015-08-03 13:26:20 -04:00
Matthew cb6465e9d2 v5.0.0-rc.36 2015-08-03 16:36:56 +00:00
Matthew Pietz 746f07a0ec @sirlancelot change &quot;video&quot; to &quot;media&quot; in error messages. closes #2409 2015-08-03 12:35:18 -04:00
David LaPalomento 4979d765f8 Merge branch 'master' of github.com:videojs/video.js 2015-08-03 12:34:01 -04:00
Matthew Pietz d3d1a7fed7 @sirlancelot change &quot;video&quot; to &quot;media&quot; in error messages. closes #2409 2015-08-03 12:33:18 -04:00
Nicky b2db8b9fb6 v5.0.0-rc.35 2015-08-03 16:30:53 +00:00
Nicky Gerritsen fe65ffae65 @nickygerritsen scrubbing() is a method, not a property. closes #2411 2015-08-03 12:28:26 -04:00
heff 8418a316d6 v5.0.0-rc.34 2015-07-30 19:40:54 +00:00
heff 3bf415e522 @heff use a synchronous ready() internally. closes #2392 2015-07-30 15:38:01 -04:00
Pat 5c4681506b v5.0.0-rc.33 2015-07-30 18:13:56 +00:00
Pat O&#x27;Neill 8aa61d3b1a @misteroneill restore some 4.x utilities and remove deprecated functionality. closes #2406 2015-07-30 14:11:31 -04:00
David aa8601f22f v5.0.0-rc.32 2015-07-30 16:12:50 +00:00
David LaPalomento a76b42d50c @misteroneill restore some properties on window.videojs. Closes #2395 2015-07-30 12:10:04 -04:00
Matthew 06bff98ca6 v5.0.0-rc.31 2015-07-28 23:42:10 +00:00
Matthew McClure 6a9e2e01d0 Added username to unclaimed CHANGELOG entry 2015-07-28 16:40:23 -07:00
Matthew 63392f25a7 v5.0.0-rc.30 2015-07-28 23:32:49 +00:00
Matthew McClure e330e7b978 Added &quot;inline&quot; option to MenuButton and updated VolumeMenuButton to be able to utilize it. closes #2378 2015-07-28 16:30:05 -07:00
heff 57152ae62f v5.0.0-rc.29 2015-07-24 17:14:27 +00:00
heff e5a8c835e1 Updated Safari OS X version to 10.10 to fix browser tests 2015-07-24 10:11:20 -07:00
Benoit dd6ed45f8e v5.0.0-rc.28 2015-07-24 17:05:11 +00:00
Benoit Tremblay d11add5dc2 Send the video.js language to the tech
I want to set the YouTube player (or any other iframe tech)
in the same language than video.js. To do so,
it needs to know the language option.

closes #2342
2015-07-24 10:01:23 -07:00
Benoit 152e1ad808 v5.0.0-rc.27 2015-07-24 16:41:32 +00:00
Benoit Tremblay 39d9989589 @eXon made sure the volume persists between tech changes. closes #2340 2015-07-24 09:37:55 -07:00
Benoit 75af988c86 v5.0.0-rc.26 2015-07-24 16:35:39 +00:00
Benoit Tremblay dd0752e6b0 @eXon added the poster to the options the tech receives. closes #2338 2015-07-24 09:33:13 -07:00
heff e0b1008225 Fix IE8 tests
- Removed incompatible module
- Added ie8 shim to qunit index.html
- Fixed extends() usage

--skip-ci
2015-07-24 09:20:43 -07:00
Pat 3cabc75b83 v5.0.0-rc.25 2015-07-24 16:10:27 +00:00
Pat O&#x27;Neill 456ee4e84f @misteroneill fixed internal extends usage and added a deprecation warning. closes #2390 2015-07-24 09:07:58 -07:00
jrivera 01ea3d1ae3 Release v4.12.12 2015-07-23 17:37:30 +00:00
jrivera 69dde46aa2 @imbcmdth fix potential triggerReady infinite loop. closes #2398 2015-07-23 11:28:34 -04:00
David 8be7810049 v5.0.0-rc.24 2015-07-21 23:00:24 +00:00
David LaPalomento b097016215 @dmlap expose the xhr helper utility. closes #2321 2015-07-21 18:58:55 -04:00
David 843a57765d v5.0.0-rc.23 2015-07-21 21:33:22 +00:00
David LaPalomento 4ad45ef9a8 @dmlap fire seeking in the flash tech, not the SWF. closes #2372 2015-07-21 17:31:51 -04:00
David 4056c5f75c v5.0.0-rc.22 2015-07-21 21:14:00 +00:00
David LaPalomento d3d5d032fc @dmlap use seekable on source handlers when defined. closes #2376 2015-07-21 17:12:24 -04:00
David 52bbd468d5 v5.0.0-rc.21 2015-07-21 20:57:44 +00:00
David LaPalomento 1102452ca3 @dmlap export a basic played() on techs. closes #2384 2015-07-21 16:56:23 -04:00
David dd9930b6c6 v5.0.0-rc.20 2015-07-21 18:08:08 +00:00
David LaPalomento a18768b938 @dmlap export videojs.createTimeRange. closes #2361 2015-07-21 14:05:44 -04:00
David c98f775267 v5.0.0-rc.19 2015-07-21 17:00:51 +00:00
David LaPalomento 07f0483780 @dmlap switched events to not bubble by default. closes #2351 2015-07-21 09:58:12 -07:00
David 1eb416deef v5.0.0-rc.18 2015-07-21 16:09:35 +00:00
David LaPalomento d3655f79a1 Merge pull request #2389 from dmlap/fix-libsass
Use node.js 0.12 for travis
2015-07-21 12:07:45 -04:00
David LaPalomento dbad385157 Use node.js 0.12 for travis
libsass may be running into issues with bindings and iojs so use a version-pegged node.js for now.
2015-07-21 12:02:24 -04:00
Matthew ca5103befe v5.0.0-rc.17 2015-07-17 01:23:41 +00:00
Matthew McClure fa08d77766 Merge branch 'master' of github.com:videojs/video.js 2015-07-16 18:21:02 -07:00
Matthew McClure e5d4757e36 Fixed vertical option for volumeMenuButton. closes #2352 2015-07-16 18:20:23 -07:00
Gary 69348f4e0d v5.0.0-rc.16 2015-07-16 20:40:18 +00:00
Gary Katsevman 8cc967e022 pass fs state to player from enterFullscreen, split full-window styles into their own selector. closes #2357 2015-07-16 13:38:13 -07:00
jrivera d2de00cae1 @imbcmdth updated source handlers to use bracket notation so they wont break when using minified videojs. closes #2348 2015-07-16 13:48:34 -04:00
heff 3842890900 v5.0.0-rc.15 2015-07-15 22:24:33 +00:00
heff 3e35935182 Sped up tests by relying on watchify and splitting up tests
- Temporarily killed API tests. Combining them with other tests.
- Using browserify:watch for build/temp/video.js (sandbox testing)
- Using karma:watch for automated tests

Using individual watch tasks allows watchify to use smart caching in both
instances.

- Switched to grunt-concurrent for watch tasks
- Switched to travis containers, sudo: false
- Added caching of npm modules in Travis
- Consolidated travis testing
- Cleaned up grunt file
- Fixed travis.yml spacing
- Added the watchAll task for trying it out
- Moved travis test script logic to package.json
- Moved coverage reporting to Travis only

closes #2254
2015-07-15 15:22:34 -07:00
Gary dfd481037e v5.0.0-rc.14 2015-07-13 17:06:31 +00:00
Gary Katsevman 3268d71577 Insert cloned el back into DOM. Fixes #2214. closes #2334 2015-07-13 13:04:04 -04:00
Gary 7bcc2ba8f7 v5.0.0-rc.13 2015-07-10 21:46:54 +00:00
Gary Katsevman 9de463e35c Export bind on videojs. Fixes #2322
closes #2332
2015-07-10 14:44:29 -07:00
Gary 5bcf3b40e3 v5.0.0-rc.12 2015-07-10 20:42:55 +00:00
Gary Katsevman d5061d7691 Update vttjs to fix a trailing comma JSON error
closes #2331
2015-07-10 13:40:40 -07:00
David 70d82a03db v5.0.0-rc.11 2015-07-10 19:37:02 +00:00
David LaPalomento f53f3dc36f @dmlap exported the videojs.log function. closes #2317 2015-07-10 12:36:09 -07:00
David 590e731db4 v5.0.0-rc.10 2015-07-10 19:23:15 +00:00
David LaPalomento ccd6ed44b8 Don't track progress until ready
Delay manual progress checks until the tech is ready to avoid errors.
The Flash tech errors if buffered() is called before the SWF has loaded,
for instance.

closes #2316
fixes #2288
rel #2289
2015-07-10 12:22:20 -07:00
Pavel Horal f9316fcda0 @pavelhoral fixed subclassing without a constructor. closes #2308 2015-07-10 11:42:29 -07:00
Matthew 440dfe92f8 v5.0.0-rc.9 2015-07-09 23:21:22 +00:00
Matthew McClure ba4ab80455 Added a currentTime tooltip to the progress handle
- added data-current-time attr to PlayProgressBar
- show data-current-time attr in tooltip on hover
- separate hover state from styling

closes #2255
2015-07-09 16:18:43 -07:00
Matt db3e58b653 v5.0.0-rc.8 2015-07-09 23:05:34 +00:00
Matt Boles 77a96bea6f Improved JSDoc comments everywhere for new docs generation
closes #2270
2015-07-09 16:03:49 -07:00
Michelle f73f69c66c v5.0.0-rc.7 2015-07-09 22:42:04 +00:00
Michelle Anderson 3479a545aa Checking on the event the relatedTarget exists before setting its property
Fixes a bug where relatedTarget was undefined in Firefox

fixes #2024
closes #2025
2015-07-09 15:41:07 -07:00
David 46c79e2b19 Release v4.12.11 2015-07-09 18:58:21 +00:00
David LaPalomento c2820e9e38 @dmlap fixed an error caused by calling vjs_getProperty on the swf too early. closes #2289 2015-07-09 11:52:52 -07:00
Gary Katsevman c43863edbd @gkatsev updated the vtt.js version to fix JSON issues. closes #2327 2015-07-09 11:46:58 -07:00
Gary 004b1e8f7b v5.0.0-rc.6 2015-07-08 22:08:15 +00:00
Gary Katsevman 2b79dacdbc @gkatsev fixed the texttrackchange event and text track display for non-native tracks. closes #2215 2015-07-08 15:07:21 -07:00
Thijs 5fc794f4e7 v5.0.0-rc.5 2015-07-08 21:53:06 +00:00
Thijs Triemstra 56be47b80a Log an error when a plugin can't be found
closes #1931
closes #1928
2015-07-08 14:51:00 -07:00
Gaurav Saxena 34822537f4 @saxena-gaurav updated swf to 4.7.2 to fix flash of previous video frame. closes #2300 2015-07-08 14:27:39 -04:00
Matthew 49fbea6f4c v5.0.0-rc.4 2015-07-07 00:11:38 +00:00
Matthew McClure b77e3c9ade @mmcc added the vjs-big-play-centered class. closes #2293 2015-07-06 17:10:50 -07:00
David LaPalomento 99032bb2a7 @dmlap updated to videojs-swf@4.7.1 to fix a video dimensions issue on subsequent loads. closes #2281 2015-07-06 16:36:19 -07:00
Pavel 8d33388899 v5.0.0-rc.3 2015-07-02 04:24:40 +00:00
Pavel Horal 26a78627f1 @pavelhoral fixed a bug with user activity that caused the control bar to flicker. closes #2299
Fixes #2298
2015-07-01 21:22:58 -07:00
David b93dea70b8 Release v4.12.10 2015-06-23 20:43:28 +00:00
David LaPalomento 0f1c5f22f0 Add changelog entry for SWF update
Prepend attribution to the previous entry.
2015-06-23 16:34:48 -04:00
jrivera 56d4861bb0 src() should not return blob URLs with MSE source handlers. closes #2271 2015-06-23 16:28:23 -04:00
David LaPalomento 1404121fee Merge pull request #2280 from dmlap/swf-4.7.1
Bump the SWF up to 4.7.1
2015-06-23 15:57:54 -04:00
David LaPalomento dfd8408ac5 Bump the SWF up to 4.7.1
Pick up a fix for video dimensions being ignored after the first metadata tag.
2015-06-23 15:50:12 -04:00
jrivera 1bc8efc218 Release v4.12.9 2015-06-15 20:30:49 +00:00
jrivera 463ba4ea44 @imbcmdth fixed async currentSrc behavior. closes #2256 2015-06-15 16:26:07 -04:00
Steve Heffernan d5605be8f5 Merge pull request #2258 from mboles/master
Fix Button class comments for JSDoc
2015-06-12 10:54:09 -07:00
Matt Boles e4ddb4f769 Updated Button class comments 2015-06-12 11:31:18 -04:00
jrivera 20b46b9fb9 @imbcmdth updated currentSrc to return src instead of blob urls in html5 tech. Fixes #2232. closes #2232 2015-06-10 14:14:54 -04:00
heff 05b6bb2ae4 Removed swf creation from tests
- Broke out RTMP tests into their own file.
- Cleaned up the currentTime test to not create the swf
- Cleaned up the flash dispose test
- Cleaned up formatting for additional flash tests

--skip-ci
2015-06-09 12:49:12 -07:00
Matthew ffe7c32899 v5.0.0-rc.2 2015-06-08 21:39:27 +00:00
Matthew McClure ee22d4ad5b @mmcc un-hid the current and remaining times by default. closes #2241 2015-06-08 14:37:34 -07:00
David LaPalomento 0be74e51ff @dmlap added support for the seekable property. closes #2208 2015-06-08 13:47:04 -07:00
heff 3857d78261 v5.0.0-rc.1 2015-06-08 10:56:31 -07:00
heff 14c8705530 Updated build and sample files with IE8 shims
--skip-ci
2015-06-05 18:41:05 -07:00
Matthew McClure 00cc335d64 Added Shim/Sham note to setup guide
--skip-ci
2015-06-05 18:28:03 -07:00
Matthew 20748ba7f7 v5.0.0-34 2015-06-06 00:38:03 +00:00
Matthew McClure b3a2583e9e @mmcc fixed the progress handle transition jerkiness. closes #2219 2015-06-05 17:35:54 -07:00
Matthew 362821801e v5.0.0-33 2015-06-05 23:25:53 +00:00
Matthew McClure 34df8767a2 bumping font version to 1.3.0 2015-06-05 16:16:33 -07:00
heff 5bf28c9e3d v5.0.0-32 2015-06-05 22:49:14 +00:00
heff 4803ac2674 Removed the CDN publishing logic into it's own repo
See videojs/cdn#3

- Added a guide note about skipping analytics tracking on the CDN
- Updated videojs-font
- Added videojs-ie8 as a dependency
- Updated the examples directory URLs and added to dist
- Updated CSS to override font path
2015-06-05 15:38:52 -07:00
David 86a11a01ab Release v4.12.8 2015-06-05 21:31:55 +00:00
David LaPalomento fa6ad4929e @dmlap fix seekable export. closes #2227 2015-06-05 17:26:06 -04:00
arwid thornstrom 6410105190 @arwidt added Swedish and Finnish translations. closes #2189 2015-06-05 10:52:32 -07:00
bc-bbay 02cfee72d8 @bc-bbay made the duration display update itself on loadedmetadata. closes #2169 2015-06-05 10:41:04 -07:00
Carlos 7eff3aca48 v5.0.0-31 2015-06-05 17:39:36 +00:00
Carlos 55a391b54a @carpasse enhanced events to allow passing a second data argument. closes #2163 2015-06-05 10:36:59 -07:00
Steve 3a0f14728e v5.0.0-30 2015-06-05 00:39:39 +00:00
Steve Heffernan 040410122f Merge pull request #2218 from mmcc/ie10-flex-check
added IE10 flex support check
2015-06-04 17:37:50 -07:00
Matthew McClure 42f00f2bfc @mmcc deprecated the options() function and removed internal uses. closes #2229 2015-06-04 17:33:34 -07:00
Matthew McClure 56a9ef7571 added IE10 flex support check. closes #2212 2015-06-03 16:42:53 -07:00
Matthew McClure dac91a7b7b @mmcc moved the fonts into their own repo. closes #2223 2015-06-02 11:04:40 -07:00
David LaPalomento 1c35bfafc2 @dmlap add the seekable property. closes #2207 2015-06-01 17:40:40 -04:00
Steve f03a91909e v5.0.0-29 2015-05-30 02:15:59 +00:00
Steve Heffernan f056a5b2e6 Merge pull request #2220 from mmcc/ie6-progress-bar-bug
added display: none; to fix the custom spacer in ie8
2015-05-29 19:14:18 -07:00
Matthew McClure 9df41f6562 added display: none; to fix the custom spacer in ie8 2015-05-29 18:27:58 -07:00
Matthew 965af8113f v5.0.0-28 2015-05-29 23:58:59 +00:00
Matthew McClure d729547cbf @mmcc increased the size of the progress bar and handle on hover. closes #2216
fixes #2117
2015-05-29 16:56:43 -07:00
Steve a6a4a0fd24 v5.0.0-27 2015-05-29 23:04:55 +00:00
Steve Heffernan 2e7821a467 Merge pull request #2210 from psharmz/doc_fix
Small fix sandbox example file instructions
2015-05-29 16:03:16 -07:00
Matthew McClure 9c33bd72c7 @mmcc switched to using button elements for button components. closes #2209 2015-05-29 15:56:45 -07:00
heff c3c4046317 Added a line to the change log for #2217
--skip-ci
2015-05-29 15:41:44 -07:00
heff 2af3047467 v5.0.0-26 2015-05-29 22:41:13 +00:00
heff 2bda7aabcd Reverted .video-js inline-block style to fix Flash fullscreen [fixes #2205] 2015-05-29 15:31:57 -07:00
Parul Sharma 6ad6d17efb small fix in instruction in sandbox doc 2015-05-29 10:01:44 -04:00
heff 7ea3566a8c v5.0.0-25 2015-05-29 02:51:59 +00:00
heff 8d768ef0ab Switched lodash to use the compat version for IE8 support 2015-05-28 18:20:06 -07:00
heff 3bf01d9a41 v5.0.0-24 2015-05-28 18:05:09 +00:00
heff a88e311214 Fixed a number of IE8 and Flash issues from 5.0 changes
IE8 compatiblity fixes - Babel loose mode and ES5-shim

Reverted to old isPlainObject to fix IE8

Lodash.isplainobject was throwing a "Member not found error" on elements,
specifically the 'custom' track element being passed in options.

(turned out to be that we were using lodash modern, not compat)

Fixed full-window mode in IE8 by fixing fullscreen API check

Fixed the swf events by creating the object in component.createEl
fixes #2184

Added es5 shim and sham to the sandbox example
related to #1687
2015-05-28 11:00:08 -07:00
heff fb5d0ce6ad v5.0.0-23 2015-05-27 18:44:33 +00:00
heff 7c169d417c Fixed instances of tabIndex that did not have a capital I [#2176] 2015-05-27 11:42:01 -07:00
heff fdd133906c v5.0.0-22 2015-05-23 00:29:46 +00:00
heff a5758019e5 Updated the ready event to always be async
closes #1667

Fix text track tests.
Now that ready is async, we need to tick the clock so the ready handler
fires.

Remove unneeded ready test
2015-05-22 17:27:15 -07:00
heff 1ff361a825 Reverted an error in src() from the default args update 2015-05-21 20:42:25 -07:00
David 27ee448e1f v5.0.0-21 2015-05-22 02:50:34 +00:00
David LaPalomento 0ad43fd576 update the swf to v4.7 2015-05-21 19:47:44 -07:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 21edde8702 v5.0.0-20 2015-05-22 00:09:43 +00:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 6b2dca32fc Normalise lang codes to lowercase for insensitive match
Use primary code ('en') if specific code ('en-us') doesn not match
Always re-merge languages

closes #2177

Updated language function to lowercase internally

Updated component.localize to not require stubbing
2015-05-21 17:07:13 -07:00
Matthew McClure 4007add5e5 Moved to pure css slider handles
closes #2132

removed slider handle classes

Got rid of left-over handle styles
2015-05-21 13:43:53 -07:00
heff 7c5206eaf9 v5.0.0-19 2015-05-21 18:36:46 +00:00
heff 1bfe0b4fed Clean up and documentation of src/js/video.js and DOM functions
Preparing to export utility functions on the videojs object

closes #2182

Change el() to getEl() for consistency

Cleaned up DOM functions library

Clean up and document videojs object API

Fixed mergeOptions to modify the first object instead of a copy

More cleanup of the main video.js file and documentation

Fixed issues with mergeOptions

Cleaned up the addLanguage function

Removed unnecessary underscores in private module vars
2015-05-21 11:33:12 -07:00
eXon 5d550ffada Additional tech 2.0 improvements from #2126
closes #2166
closes #2126

this.tech.emitTapEvents(); should be handled by the tech

De-dupe the bufferedPercent code in both Tech and Player

Have the player generate the tech ID

Added autoplay/preload/loop/muted to tech option

Remove the watch for native timeupdates

Fixed the JSDoc for bufferedPercent

Removed the unit test for native timeupdate

Added cute whitespaces

buffer should always return a TimeRange
2015-05-21 11:19:33 -07:00
Matthew caf725a3d4 v5.0.0-18 2015-05-19 18:25:29 +00:00
Matthew McClure 11d9d9afe8 last use of inherited registerComponent removed 2015-05-19 11:10:17 -07:00
David 69a4884880 Release v4.12.7 2015-05-19 16:57:12 +00:00
David LaPalomento fbdf7ef041 @dmlap update swf to 4.7 to pick up preload fix. closes #2170 2015-05-19 12:43:22 -04:00
Brandon Bay c4717ebed9 @bc-bbay update time display on loadedmetadata. closes #2151 2015-05-19 12:02:34 -04:00
heff b2311c7664 v5.0.0-17 2015-05-19 00:57:10 +00:00
heff 1ffb13a799 Fixed all uses of registerComponent that relied on __proto__ inheritance 2015-05-18 17:35:21 -07:00
heff dc083f8cf4 v5.0.0-16 2015-05-16 01:25:32 +00:00
heff a8ff970d4a Broke up Lib and Util into smaller libraries of functions
Broke out bind, guid, and element data functions from Lib

Separated out more dom functions in to dom.js

Broke out URL functions into url.js

Removed setLocalStorage since it wasn't being used

Moved browser tests out of lib

Moved log functions into their own file

Removed trim() since it wasn't being used

Moved formatTime into its own file

Moved round into its own file and renamed roundFloat()

Moved capitalize into its own file and renamed as toTitleCase()

Moved createTimeRange into its own file

Removed Lib.arr.forEach infavor of the native forEach

Removed Lib.obj.create in favor of native Object.create (ES6-sham)

Removed obj.each in favor of native Object.getOwnPropertyNames().forEach()

Removed obj.merge and copy. Using lodash.assign instead.

Replaced Lib.obj.isPlain with lodash.isPlainObject

Removed Lib.obj.isArray in favor of the native Array.isArray

Also removed the lib.js tests file as all tests have been moved
or removed.

Removed Lib.isEmpty in favor of !Object.getOwnPropertyNames().length

Switched Util.mergeOptions and deepMerge to use new mergeOptions()

Moved Lib.TEST_VID to Html5.TEST_VID

Removed Lib references everywhere. Woo!

Attempting to fix sourcemap test errors by setting grunt-browserify version

Switched to object.assign from lodash.assign

Removed unused 'inherits' dependency

Reorganzied test files and added '.test' to file names

Combined js/core.js and js/video.js

Moved events.js into the utils directory
2015-05-15 18:20:35 -07:00
Chris Rebert 2bf0be72f3 build: bower.json: remove moot version field
Per https://github.com/bower/bower.json-spec/commit/a325da3d79baab018c572d75dc1781b12322f6cd

closes #2144

bower.json: main: fix path to video.js

bower.json: main: video-js.css => video-js.scss

Per https://github.com/bower/bower.json-spec/pull/43 :
> Use source files with module exports and imports over pre-built distribution files.

Also, the example in that PR includes
/sass/motion.scss in and excludes
/dist/movement.css & /dist/movement.min.css
from its `main`.

bower.json: Set moduleType & use non-dist video.js

Again, see https://github.com/bower/bower.json-spec/pull/43
2015-05-13 22:59:22 -07:00
heff 349ff89541 v5.0.0-15 2015-05-14 05:47:16 +00:00
heff 2fc8968002 @heff added support for fluid widths, aspect ratios, and metadata defaults. closes #1952 2015-05-13 22:45:01 -07:00
Brandon Bay 652a44026f @bc-bbay fixed a bug where the player would try to autoplay when there was no source. closes #2127 2015-05-13 15:10:55 -07:00
heff ec53eda738 build: Added the temp directory to gitignore on stable for switching from master 2015-05-13 15:07:30 -07:00
Matthew 6128305cc3 v5.0.0-14 2015-05-13 05:02:43 +00:00
Matthew McClure 0e63261db6 Merge pull request #2145 from cvrebert/patch-3
bower.json: Remove font files from `main`
2015-05-12 22:00:53 -07:00
Chris Rebert c740115821 bower.json: Remove font files from main
Per https://github.com/bower/bower.json-spec/pull/43 :
> font files [...] are not `main` files as they are not entry-points.

(See also the new example in the spec)
2015-05-12 19:30:50 -07:00
heff d8e7d13fd0 build: Updated test configuration for new Savage testing 2015-05-12 14:05:08 -07:00
heff fbdb3f1ce2 v5.0.0-13 2015-05-12 20:17:33 +00:00
heff 4a62ebb042 Added travis vars for sauce testing 2015-05-12 13:15:24 -07:00
heff b87fb3ce32 v5.0.0-12 2015-05-12 19:42:16 +00:00
heff fd50bd0921 Update travis yml for Savage pull request testing 2015-05-12 12:39:57 -07:00
Matthew McClure db05a1b90d Added @tjenkinson background-color changes 2015-05-11 15:02:28 -07:00
Matthew McClure e1c0f9fc35 Merge pull request #2138 from tjenkinson/master
Added background-color to vjs-poster to remove transparent borders around scaled poster image
2015-05-11 15:00:10 -07:00
Gaurav 7bbbf992a9 Release v4.12.6 2015-05-07 19:10:14 +00:00
Gaurav Saxena 36956e20df @saxena-gaurav fixed a bug from disposing after changing techs. closes #2125 2015-05-06 14:45:50 -04:00
heff c5f5ea419e Added globals in jshintrc to fix errors from new jshint version 2015-05-06 14:43:14 -04:00
Gary Katsevman b65bad8f20 @gkatsev added get and set global options methods. closes #2115 2015-05-06 14:12:17 -04:00
eXon e5595b1e38 @eXon began Tech 2.0 work, improved how tech events are handled by the player. closes #2057
closes #1485
2015-05-06 14:02:01 -04:00
Brandon de843affb7 v5.0.0-11 2015-05-06 16:12:56 +00:00
Brandon Bay 9c99def186 @bc-bbay fixed instance where progress bars would go passed 100%. closes #2040 2015-05-06 12:10:57 -04:00
Matthew 793da0979a v5.0.0-10 2015-05-04 18:38:30 +00:00
Matthew McClure 540258181c Merge pull request #2116 from gkatsev/flash-globals
Get the flash tech working again
2015-05-04 11:36:42 -07:00
Gary Katsevman 1480018cfb Get the flash tech working again 2015-05-01 15:51:55 -07:00
Gary 9b71d6b7d8 v5.0.0-9 2015-05-01 21:18:08 +00:00
Gary Katsevman 102c6fb197 @gkatsev added a sensible toJSON function. closes #2114 2015-05-01 14:16:19 -07:00
Gary aa7f7709b1 v5.0.0-8 2015-05-01 21:01:43 +00:00
Gary Katsevman fd7b997ecd @gkatsev added error logging for bad JSON formatting. closes #2113 2015-05-01 13:59:52 -07:00
Gary Katsevman 90b2f5d6ac build: @gkatsev updated the Gruntfile to use ES6. closes #2106 2015-05-01 12:54:31 -07:00
Gary 87b8f8ec77 v5.0.0-7 2015-05-01 19:50:46 +00:00
Gary Katsevman 43a14291fa @gkatsev updated the component.js styles to match the new style guide. closes #2105 2015-05-01 12:48:28 -07:00
Matthew 75aa65ebae v5.0.0-6 2015-05-01 19:45:17 +00:00
Matthew McClure a392d6c933 @mmcc added back the captions settings styles. closes #2112 2015-05-01 12:43:37 -07:00
heff a6f4fb8ca7 build: Made prerelease task clearer and ignore build changes 2015-05-01 11:53:23 -07:00
Gary 90702a4f3e v5.0.0-5 2015-05-01 18:30:14 +00:00
Gary Katsevman 0b8bcbfba4 We want to call global setInterval not our own
When we changed to concise methods, we ended up creating a new function
that shadowed the global setInterval, setTimeout, clearInterval, and
clearTimeout methods. A recent change in babel exposed this bug.
2015-05-01 11:09:48 -07:00
heff d05967c561 Added a prerelease command for automatic prereleases 2015-05-01 09:24:35 -07:00
Deirdre 3e1b76c9fb v5.0.0-4 2015-04-30 21:54:23 +00:00
Deirdre b72f651a59 v5.0.0-3 2015-04-30 21:51:09 +00:00
Deirdre Connolly f84632e057 @dconnolly exported the missing videojs.plugin function. closes #2103 2015-04-30 14:49:22 -07:00
heff cc6c3daaed Fixed loading grunt tasks that don't start with 'grunt-' 2015-04-30 14:47:20 -07:00
heff cba2c54fb6 Fixed prerelease task to update master 2015-04-30 14:27:44 -07:00
heff ebf0aa1a06 v5.0.0-2 2015-04-30 14:20:13 -07:00
heff 915a6b90f2 Added a prerelease task to contrib.json 2015-04-30 14:17:16 -07:00
heff c7265e3d9d Merge branch 'master' into review-dmlap-test-and-build-improvements 2015-04-30 12:03:52 -07:00
heff 476b8a4cf8 Merge branch 'master' into review-eXon-feature/watchify
Conflicts:
	Gruntfile.js
2015-04-30 11:44:57 -07:00
heff a131a00c4c Added a prerelease grunt task. Updated packages to correct version. 2015-04-29 16:21:05 -07:00
David LaPalomento 54519da32c Grunt improvements
Get test/index.html working when loaded directly into a browser. Remove extra browserifying via karma. Add timing info to to grunt output.
2015-04-29 15:02:14 -07:00
David LaPalomento b5968f13e2 @dmlap added an error message if techOrder is not in options. closes #2097 2015-04-29 14:05:22 -07:00
Steve Heffernan f7b1492332 Merge pull request #2088 from mmcc/add-scss-to-dist
Added scss files to dist folder
2015-04-29 13:19:40 -07:00
Matthew McClure 9e953a2681 removing scss from dist 2015-04-29 13:18:22 -07:00
Matthew McClure f21f840afb added scss files to dist folder 2015-04-29 13:16:18 -07:00
Steve Heffernan a40b0049ed Merge pull request #2096 from mmcc/heff-puts-dist-back-in-a-corner
Removing dist again in favor of some dark git magic
2015-04-29 12:48:18 -07:00
Matthew McClure dcb24ce744 Removing dist again in favor of some dark git magic 2015-04-29 11:09:17 -07:00
Brandon Bay bb9fde0f82 @bc-bbay rename onEvent methods to handleEvent. closes #2093 2015-04-29 10:17:46 -07:00
Brandon Bay 4fa6a942d9 @bc-bbay Load plugins before controls. closes #2094 2015-04-29 10:15:15 -07:00
jforbes 013d59db76 @forbesjo added a vjs-button class to button controls. closes #2084 2015-04-28 17:47:42 -07:00
Steve Heffernan 8e84adb612 Merge pull request #2087 from dmlap/minified-doc-updates
Update minified video.js name in guides and examples
2015-04-28 17:25:08 -07:00
David LaPalomento e234375168 Update minified video.js name
Change the docs to point to the new minified name for video.js. For #1013.
2015-04-28 17:00:10 -07:00
Steve Heffernan 258687fee4 Merge pull request #2086 from mmcc/nobody-puts-dist-in-a-corner
Nobody puts dist in a corner
2015-04-28 16:38:16 -07:00
Matthew McClure 1eae8697e6 Bumping to 5.0 prerelease 2015-04-28 16:04:12 -07:00
Matthew McClure 4cdca881d4 expose the dist file and derequire the bundle 2015-04-28 15:57:13 -07:00
Steve Heffernan cf25d3a857 Merge pull request #2085 from dfreamon/patch-1
Update the copyright
2015-04-28 15:16:23 -07:00
Darius Freamon b4fbdc24d5 update copyright 2015-04-28 16:14:05 -06:00
heff ae0eec312c Switched to box-sizing:border-box for all player elements
This doesn't immediately break anything (I know of) because the controls
were originally designed to work in both border-box and content-box
environments. Extra elements were added to create internally padding.

This does open the door for some simplification of the HTML, though the extra
elements could still be useful for extra skin design options.

closes #2082
closes #1444
2015-04-28 13:45:59 -07:00
jforbes 69738a86dc @forbesjo added the &#x60;scrubbing&#x60; property. closes #2080 2015-04-28 13:33:55 -07:00
heff f19d13b9bb @heff added and &#x60;extends&#x60; function for external subclassing. closes #2078 2015-04-28 11:50:09 -07:00
Gary Katsevman 94f33c8d43 @gkatsev removed event.isDefaultPrevented in favor of event.defaultPrevented. closes #2081 2015-04-28 11:45:06 -07:00
Matthew McClure 4ac762cf48 @mmcc added a new default skin, switched to SASS, modified the html closes #1999
- removed old less style. no going back now.
- switched back to video-js.scss naming and added a base-style injection class
- cleaned up and simplified big play btn
- Flexbox straight flexin.
- move to using variables for text and icon font families
- use table layout for IE 8 and 9
- moved to using extend for icons
- Switched to SASS, added a new default theme, updated the html
- added horizontal classes
- added connect-watch grunt task
- show all the things in the control bar so everything is available
  by default (and hidden via css
- reignore dist for now
- removing trailing comma to get the tests passing
- Switched to using libsass and removed incompatible "black magic"
- updating to es6 syntax
- removed old separator, added grunt task for dev, and updated example
- singular time-control and live-control. remove playing class on pause
- updated separator control styles
- Show full control bar when a player goes to fullscreen.
  Also added a grunt task specifically for skin development (only watches sass file changes and runs sass)
- allow poster image to toggle playback
- This allows the poster image to toggle play / pause on audio-only sources
- fixed issue with scrollbars in Chrome on Linux
- make the control bar not-quite-black
- added back some focus highlights until we decide on another path
2015-04-28 09:52:27 -07:00
Deirdre Connolly c62aa10637 @dconnolly replaced JSON.parse with a safe non-eval JSON parse. closes #2077 2015-04-27 17:05:39 -07:00
Matthew McClure 232daaed54 Merge pull request #1838 from mmcc/feature/control-bar-separator
Feature/control bar separator
2015-04-24 11:21:50 -07:00
Matthew McClure 4f52a47d7e generalized separator class and created specific insertion point class
split spacer into two files and converted to es6

insertion-point-spacer  -> custom-control-spacer
2015-04-24 11:21:26 -07:00
Matthew McClure 493f4d5df4 Created generic spacer component meant to make it easier to create
control bar layouts
2015-04-24 11:20:52 -07:00
eXon 621108ec03 Replaced grunt-watchify by watch option in grunt-browserify 2015-04-23 19:05:31 -04:00
eXon 65dddf7a0b Added watchify task 2015-04-23 06:43:50 -04:00
Matthew McClure e1e69941a1 @mmcc added ES6 default args and template strings. closes #2015 2015-04-22 15:26:37 -07:00
heff a02ee27802 @heff converted all classes to use ES6 classes. closes #1993 2015-04-14 13:08:32 -07:00
heff 7f70f09621 Added a line to the changelog for #1976 2015-04-03 17:05:14 -07:00
Steve Heffernan 6e29bccd01 Merge pull request #1976 from mmcc/es6ification
ES6ification
2015-04-03 17:02:05 -07:00
Matthew McClure f3036dd528 cleanup and fixed options shadowing in player 2015-04-03 15:25:58 -07:00
Matthew McClure 44953cf99b remove minified tests from grunt test task 2015-04-02 11:33:51 -07:00
Matthew McClure dfa791581f Check travis env before checking if it's a PR 2015-04-02 11:33:51 -07:00
heff 6e5fc8d687 More build and testing cleanup. Also some reorganization. 2015-04-02 11:33:51 -07:00
Matthew McClure 0c9d53321f Report test coverage analytics during test runs 2015-04-02 11:33:50 -07:00
heff f298d18023 Most of test conversion for es6ification 2015-04-02 11:33:50 -07:00
Matthew McClure 2e689f85e5 Starting ES6 conversion up to functional player 2015-04-02 11:33:50 -07:00
Steve Heffernan c9b53c5cfe Merge pull request #2001 from dmlap/changelog-for-1974
Update changelog for #1974
2015-04-02 09:04:46 -07:00
David LaPalomento 3fd1a58357 Update changelog
Add entry for #1974.
2015-04-02 10:30:29 -04:00
David LaPalomento 7a9c4cc3be Merge pull request #1974 from carpasse/feature/canhandlesource
Extended canHandleSource in media files to consistently guess mime types. Fixes #1833
2015-04-01 23:56:20 -04:00
Matthew McClure ed76c5b709 Lowercase .js for consistency 2015-04-01 16:51:14 -07:00
Matthew McClure 6cc1b5191b Update README to warn about master being for 5.0 2015-03-30 16:48:04 -07:00
Steve Heffernan 634d8c39f2 Merge pull request #1964 from LagunaCompany/patch-2
Fix spelling error in component.js
2015-03-30 12:49:46 -07:00
Matthew McClure 4805e41ee0 Merge pull request #1927 from juniorlisboa/master
Legend in pt-Br is wrong.
2015-03-30 12:47:21 -07:00
Carlos Pastor f69a229224 Extended getFileExtension test cases 2015-03-25 12:40:10 +01:00
Carlos Pastor 213c23d097 Added getFileExtension to libs. Extended canHandleSource in media files to consistently guess mime types. Fixes #1833 2015-03-24 19:52:04 +01:00
LagunaCompany 4296a7da2d Update component.js
Fix minor typo in comments.
2015-03-21 08:28:30 +00:00
heff 12df63d7e7 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
	package.json
2015-03-17 13:52:42 -07:00
heff 6786b70da1 Release v4.12.5 2015-03-17 20:47:00 +00:00
heff bccea74d23 Updated to videojs-swf v4.5.4 to fix a potential security issue. closes #1955 2015-03-17 13:41:21 -07:00
Matthew McClure cda6386e01 Added item for Bosnian, Serbian, Croatian translations 2015-03-16 12:47:56 -07:00
Matthew McClure 6b2e056ba6 Merge pull request #1897 from dn5/master
Added new translations (Bosnian, Serbian, Croatian)
2015-03-16 12:44:22 -07:00
Ole Laursen a0ce20c511 @OleLaursen added a Danish translation. closes #1899 2015-03-12 11:52:18 -07:00
Tamlyn Rhodes 89c7b868f6 Added doc entries for useractive and userinactive events
closes #1926
2015-03-12 11:47:59 -07:00
heff 9dea6bed33 @heff replaced Closure Compiler with Uglify for minification. closes #1940 2015-03-12 11:23:47 -07:00
David LaPalomento 93ea3cee1c @dmlap removed an ie6 hack for flash object embedding. closes #1946 2015-03-12 11:17:53 -07:00
Matthew McClure cd48d03945 @mmcc updated the slider to allow for vertical orientation. closes #1816 2015-03-12 11:16:09 -07:00
Junior Lisboa 855e0ccedb Legend in pt-Br is wrong. 2015-03-05 10:54:24 -03:00
heff 0020ba15b9 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
2015-03-04 17:37:32 -08:00
heff 9009593297 Release v4.12.4 2015-03-05 01:16:06 +00:00
heff 5b944877ae Randomized the Google Analytics calls to stay under the limit. closes #1916 2015-03-04 17:12:52 -08:00
heff 999dd60ff4 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
2015-02-27 17:16:52 -08:00
Matthew ab84de6960 Release v4.12.3 2015-02-28 01:10:21 +00:00
Matthew McClure 52e85e65fd added bin file for returning the current version 2015-02-27 17:06:01 -08:00
heff 20a4184ea7 @heff fixed setting the source to an empty string. closes #1905 2015-02-27 15:50:13 -08:00
heff 3fdef79b9b Merge branch 'stable' 2015-02-26 17:59:16 -08:00
heff 06b8541fdb Switched to grunt-aws-s3 for CDN uploads
closes #1800, closes #1658, closes #1855
2015-02-26 17:55:30 -08:00
heff 4003a4730d Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
2015-02-26 16:45:40 -08:00
Matthew ed8ccf599b Release v4.12.2 2015-02-27 00:09:30 +00:00
Matthew McClure 972c8bd744 manually tag before github-release 2015-02-26 16:05:14 -08:00
Matthew McClure 6e6c9fe885 remove tagrelease and commit unstaged changes manually (github-release handles tagging) 2015-02-26 15:05:16 -08:00
Matthew McClure bbad7207a2 fixing undefined package reference in cdn-links task 2015-02-25 17:13:52 -08:00
Gary Katsevman 2a1f9f357f @gkatsev fixed disabling of default text tracks. closes #1892 2015-02-25 16:12:01 -08:00
Matthew McClure 0b392fa9f5 breaking grunt tasks out into separate files to clean up the main Gruntfile. Also removed unused requires from the primary Gruntfile and making sure they are in the appropriate task file. 2015-02-25 16:05:31 -08:00
dn5 2c6570a1a5 Added new translations (Bosnian, Serbian, Croatian)
// Commit to master
2015-02-25 23:38:20 +01:00
Matthew McClure 725fddbd66 Updated version in quickstart example 2015-02-24 17:59:36 -08:00
heff 550d44332b Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
	dist/video-js/video.novtt.dev.js
	dist/video-js/video.novtt.js
2015-02-19 16:32:34 -08:00
heff 8e372d7ffd Release 4.12.1 2015-02-19 16:32:05 -08:00
Gary Katsevman 14c94561a9 Only rely on selectedIndex to set select option.
Firefox recently added selectedOptions support, however, unlike chrome
and other browsers, they made it read-only and have it throw an error.
In my testing (via http://jsfiddle.net/vwvdywf9/), on various browsers and platforms, just using selectedIndex was sufficient to change the selected option.

closes #1877
2015-02-19 16:29:22 -08:00
Gary Katsevman 8b0966c1b4 Store text tracks on player not tech
Test keeping text tracks between tech loads.
This does break without the previous commit.

closes #1874
2015-02-19 12:28:26 -08:00
Steve Heffernan 7bcb1d218c Merge pull request #1876 from videojs/playback-rate-doc
playbackRate takes a number
2015-02-18 17:35:32 -08:00
David LaPalomento 82f897b4fd More details on playback rate
Describe how the playback rate value is interpreted and link to the standard.
2015-02-18 10:37:00 -05:00
David LaPalomento 9b0c6c66ea playbackRate takes a number
The playbackRate() function does not take a boolean, it takes a (double-precision) number.
2015-02-18 10:00:50 -05:00
heff bcf164fd99 Merge branch 'stable' 2015-02-17 17:05:16 -08:00
heff 5bd0338d2e Moved s3 config to environment variables 2015-02-17 17:04:42 -08:00
heff fbca5eae51 Removed dist files 2015-02-17 16:44:34 -08:00
heff dd24d17372 Release 4.12.0 2015-02-17 16:44:25 -08:00
heff 5bae2d88c3 Cleaned up inconsistencies in the changelog 2015-02-17 16:41:10 -08:00
heff b14c2f73b3 Fixed a track event error for Android 2.3 2015-02-17 14:32:41 -08:00
heff f27df10920 Fixed a controls test on the iPhone
On the iphone the controls attribute of the video element is always true.
2015-02-17 13:49:32 -08:00
heff f96803a806 Fixed a poster test for IE11 2015-02-17 13:09:19 -08:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 b2fe4c6292 @mister-ben fixed a woff warning in Firefox. closes #1870 2015-02-17 12:28:15 -08:00
Tom Jenkinson eb597d3660 Added background-color to vjs-poster to remove transparent borders around
scaled poster image
2015-02-16 11:58:13 +00:00
Gary Katsevman 52e6768526 @gkatsev fixed captions showing by default in Chrome and Safari. closes #1865 2015-02-13 16:23:55 -08:00
Gary Katsevman 4e5c28cc56 @gkatsev greatly improved text track support and implemented vtt.js as the webvtt parser. closes #1749 2015-02-13 15:19:02 -08:00
İbrahim Alkan 5c59849f30 @ragecub3 added a Turkish translation. closes #1853 2015-02-12 15:55:49 -08:00
Shoshomiga 4e9974165d @shoshomiga added a Bulgarian translation. closes #1849 2015-02-12 15:52:26 -08:00
Simone 3459381c2a @iSimonWeb added font-path variable. closes #1847 2015-02-12 15:48:45 -08:00
Gavin 1036338134 @DevGavin fixed the Chinese translation. closes #1841 2015-02-12 15:43:13 -08:00
Nathan Woltman 265ed0eca2 @woollybogger exported the hasClass function. closes #1839 2015-02-12 15:35:09 -08:00
David LaPalomento 5e371b4625 @dmlap Add network and ready state properties. closes #1854 2015-02-12 18:26:32 -05:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 3742afe607 Add vjs-ended class when playback reaches the end of the timeline. closes #1857 2015-02-12 18:15:44 -05:00
Matthew McClure fd24c5c7a3 lowered tap movement and tap time thresholds
or, you know, actually change the threshold

updated component test to account for smaller touchmove threshold

closes #1830
2015-02-12 14:34:07 -08:00
Steve Randy Tantra fbb2197dfa @steverandy fixed an issue with scrolling over the player on touch devices. closes #1809 2015-02-12 12:01:20 -08:00
Ryo Chikazawa 19058302bd @chikathreesix fixed an object delete error in Chrome. closes #1858 2015-02-11 11:12:54 -08:00
kedar2a 789c72945a Added bower install information. Closes #1840 2015-02-09 16:45:24 -08:00
David LaPalomento f980cdb1fb Hide the poster when play fires. closes #1834 2015-02-09 12:11:00 -05:00
David LaPalomento 42fbd4c799 Export video.js as a named AMD module. closes #1844 2015-02-05 09:57:59 -05:00
Matthew McClure b0a589a800 Merge pull request #1842 from steveluscher/patch-1
“affect” => “effect” in options guide
2015-02-03 16:53:25 +00:00
Steven Luscher e5ca608fc0 “affect” => “effect” in options guide 2015-02-02 13:49:47 -08:00
heff cb0f93c27d Added contrib release commands for patch and minor 2015-02-02 00:55:13 +01:00
Matthew McClure d5bbd80db9 Reference videojs not vjs
`vjs` isn't exported, so this was causing confusion. Update to use `videojs`.
2015-01-26 09:27:40 -08:00
heff 1a11a8f256 Added contrib save command and cleaned up config 2015-01-23 17:35:22 -08:00
heff ec88f32702 Added npm install to the contrib release process
Fixed contrib branch delete
2015-01-23 10:57:36 -08:00
heff 2489cc1c10 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
2015-01-23 10:50:49 -08:00
heff aac97d287a Release 4.11.4 2015-01-23 10:50:22 -08:00
Lee Whitaker 3c83fd364d Update swf version to 4.5.3
closes #1823
2015-01-23 10:42:40 -08:00
Artem Suschev c8781cf51b @H1D fixed an issue with file extension type detection. closes #1818 2015-01-21 17:55:35 -08:00
Steve Heffernan 8777b7f7a9 Merge pull request #1819 from thijstriemstra/master
document the error event
2015-01-21 17:43:50 -08:00
David LaPalomento 4bde5c8928 Don't always add controls to the video element
Fix for #1561. If the HTML tech is being constructed without a video element to work off of, make sure that the controls attribute is only added under the same circumstances it would be at player init. Before this fix, if you loaded the Flash tech and then switched to the HTML tech, you would see the native controls underneath the video.js controls.

Fix controls attribute test on iOS
iOS uses native controls by default and so was failing the assertions that native controls weren't used. Force custom controls for this test case to make it work like everywhere else.

Update nativeControlsForTouch default
The default value changed so fix the predicate that tested for whether it was in use.

closes #1811, closes #1564, closes #1561
2015-01-21 17:35:55 -08:00
Thijs Triemstra fb3758dcab doc fix 2015-01-22 01:55:42 +01:00
Matthew McClure 78e95e14b8 @mmcc fixed an issue with text track hiding introduced in #1681. closes #1804 2015-01-21 16:44:59 -08:00
Matthew McClure 67c4eed937 @mmcc added a VERSION key to the videojs object. closes #1798 2015-01-21 16:37:13 -08:00
Toni Hermoso Pulido 300eeb759c @toniher added a Catalan translation. closes #1794 2015-01-21 16:25:50 -08:00
heff 2805bb0ad3 Updated contrib.json to support contrib install 2015-01-21 13:36:27 -08:00
Thijs Triemstra 4e2b4a215c document the error event 2015-01-21 17:11:43 +01:00
heff b51d83090b Added a line to the changelog, closes #1814 2015-01-20 11:01:05 -08:00
Carlos 0f4b19b94c Fixed problem with removing component
Component.id and Component.name are functions
we should either call the functions or pass component.id_ and component.name_
2015-01-20 10:58:25 -08:00
Bryce Fisher-Fleig e8030ea88f @brycefisher Added a guide on player disposal. closes #1803 2015-01-16 15:52:34 -08:00
Gary Katsevman 1c17a67f39 Fixed issue where ManualTimeUpdatesOff was not de-registering events. closes #1793 2015-01-16 12:05:21 -08:00
heff e8235c9022 Fixed type support checking for an empty src string. closes #1797 2015-01-16 11:43:58 -08:00
heff a3b12d9d03 Exported missing source handler functions. closes #1787 2015-01-12 14:28:22 -08:00
Matthew McClure a8d1ef114a Merge pull request #1795 from rusikf/patch-1
update 4.10 to 4.11 version in README
2015-01-12 10:33:11 -08:00
Ruslan Korolev 2ea2421e18 update 4.10 to 4.11 version in README [ci skip] 2015-01-12 13:19:43 +03:00
Steve Heffernan 67e2c0ff76 Merge pull request #1768 from moshoujingli/feature/fix_typo
Delete the duplicated 'a'
2015-01-05 11:19:59 -08:00
Bixiaopeng b2c3e2d759 Delete the duplicated 'a' 2014-12-24 18:02:04 +09:00
David LaPalomento c939ab86ca @dmlap fixed URL parsing in IE9. closes #1765 2014-12-23 08:25:49 -08:00
Steve Heffernan a96978b194 Merge pull request #1747 from thijstriemstra/master
Add plugin localization doc
2014-12-22 11:30:31 -08:00
heff fff41a9066 Added a line to the changelog for #1741 2014-12-22 11:17:15 -08:00
Jacques Caron 3780f8dbce Prevent menus from opening while scrubbing 2014-12-22 10:51:34 -08:00
Jacques Caron 24dff158fa Add vjs-scrubbing class to player while scrubbing 2014-12-22 10:51:34 -08:00
Sxmanek 9c1e410660 @Sxmanek added a Czech translation. closes #1739 2014-12-22 10:44:53 -08:00
Nguyễn Văn Ánh 8cf9f19c11 @anhskohbo added a Vietnamese translation. closes #1734 2014-12-22 10:15:50 -08:00
heff f0d500a633 Updated #1730 to use the ready function instead of warning.
Added a line to the changelog for #1730.
closes #1730
2014-12-22 09:54:21 -08:00
45aff0062cf1b0e55a6532b0a513db6be3952d17 fc0730db98 Warning for previously updated players; doc update 2014-12-22 09:46:48 -08:00
Matthew McClure a67201f913 @mmcc updated the hide/show functions to use a class instead of inline styles. closes #1681 2014-12-22 09:38:54 -08:00
heff a048468100 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-12-19 14:18:16 -08:00
heff 881be6f77d Release 4.11.3 2014-12-19 14:17:50 -08:00
heff c6d51faba3 Added a line to the changelog for #1755 2014-12-19 14:11:26 -08:00
matteo 169b4984e5 Fix rtmp rtmpSourceHandler calls to tech 2014-12-19 14:09:42 -08:00
heff 45b3601465 Added a line to the changelog for #1753 2014-12-19 14:05:58 -08:00
matteo e2c5462395 Export tech.setSetsource method for Html5 and Flash 2014-12-19 14:04:46 -08:00
heff 5545fc33e1 Added a line to the changelog for #1760 2014-12-19 13:58:11 -08:00
Greg Kraus 16d945c7ab moved event.preventDefault() inside of if-then structure 2014-12-19 13:51:11 -08:00
heff 716fc2dc2b Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-12-17 16:13:27 -08:00
heff ad3e430cc6 Release 4.11.2 2014-12-17 16:12:38 -08:00
Gary Katsevman d7f2924fdc Make sure that setSource is directly on prototype
This is to make the new source handlers backwards compatible and so it
wont break techs that extend existing techs that were converted to use
source handlers. closes #1746
2014-12-17 15:07:37 -08:00
Matthew McClure bb5582abd3 Add the playback rate menu to the content el. closes #1716, fixes #1712 2014-12-17 14:29:05 -08:00
Thijs Triemstra 9307844f79 doc update 2014-12-17 14:05:22 +01:00
Thijs Triemstra 9141a6256f add plugin localization doc 2014-12-17 00:06:06 +01:00
Steve Heffernan 2683c74c69 Merge pull request #1743 from PeterDaveHello/patch-1
Use svg instead of png to get better image quality
2014-12-13 23:25:20 -08:00
Peter Dave Hello c3139dcc1d Use svg instead of png to get better image quality 2014-12-14 13:16:48 +08:00
Peter Dave Hello a859575e62 @PeterDaveHello added a Traditional Chinese translation. closes #1729 2014-12-09 12:47:46 -08:00
heff aeecca728e Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-12-04 14:06:38 -08:00
heff daa66b9183 Release 4.11.1 2014-12-04 14:05:50 -08:00
heff 3d16a4378c @heff fixed a code bug in track XHR requests. closes #1715 2014-12-04 14:03:36 -08:00
heff d37e5c903f Removed dist files 2014-12-04 13:29:50 -08:00
heff 0469c5063c Release 4.11.0 2014-12-04 13:29:40 -08:00
heff dd9b4df727 @heff updated the SWF to the latest version. closes #1714 2014-12-04 13:24:05 -08:00
Steve Heffernan 0960a6108b Merge pull request #1713 from gkatsev/jshint-all-the-things
Make sure jshint checks all js files
2014-12-04 12:44:34 -08:00
Gary Katsevman 68f32226db Make sure jshint checks all js files
Also, update all the files to pass jshint.
2014-12-04 15:38:20 -05:00
nemesreviz c2e0c89d4c @nemesreviz added a Hungarian translation. closes #1711 2014-12-04 11:50:21 -08:00
Gary Katsevman c111d30b45 @mmcc fixed the vdata exception when you dispose a player with tracks. closes #1710 2014-12-03 14:21:25 -08:00
Matthew McClure 1f6c5179d8 @mmcc added functions for better timeout and interval handling. closes #1642 2014-12-03 11:31:39 -08:00
Ahmad M. Zawawi ea7bf36588 @azawawi added an Arabic translation. closes #1692 2014-12-02 16:23:33 -08:00
Steve Heffernan 76e662a756 @heff added the Source Handler interface for handling advanced formats including adaptive streaming. closes #1560 2014-12-02 14:22:34 -08:00
Thijs Triemstra 8a019ee046 @thijstriemstra fixed a number of typos in the docs. closes #1704 2014-12-02 11:22:48 -08:00
heff 2de84da25f Added a line to the changelog for #1702 2014-12-02 10:53:43 -08:00
Steve Heffernan 899bc3cb76 Merge pull request #1702 from rafalwrzeszcz/fix/invalid-markup
Fixed Flash object tag markup for strict XML.
2014-12-02 10:51:23 -08:00
Rafał Wrzeszcz eaf8a8348f Fixed XML markup. 2014-12-02 14:31:07 +01:00
Steve Heffernan 157dcbe9dd Merge pull request #1677 from sonicd300/patch-1
Updated to bower.json to include font files
2014-11-25 15:51:08 -08:00
Dan Toloudis 33e6630712 @toloudis fixed an issue with checking for an existing source on the video element. closes #1651 2014-11-25 15:31:53 -08:00
heff 2e71201e23 Cleaned up slider.js from #1616 (commit 7605d8c) and added changelog item for #1616 2014-11-25 14:38:36 -08:00
rutkat 1211e6f99d Changed keyup to keydown for more responive key listeners. closes #1545, closes #1616 2014-11-25 13:42:34 -08:00
Matthew McClure 7642691296 Update components link to be relative
Updated the components link to be entirely relative so we don't have to worry about which branch we're talking about.
2014-11-24 13:00:22 -08:00
Victor D'Agata d6cf3c0d84 Update to bower.json
Added fonts to bower.json in order to work with bower-main-files plugin, you can tell the plugin if you don't want stuff, but you can't say include XYZ, besides fonts are being used in the css.
2014-11-19 18:56:34 -05:00
Matthew McClure caf44a4ad3 Merge pull request #1650 from SteveALee/docfix
Fixed broken link to components guide
2014-11-10 09:51:39 -08:00
Steve Lee fd2b9a7f38 Fixed broken link to components guide 2014-11-07 21:18:20 +00:00
Matthew McClure fc7cebe155 Update version numbers in quickstart guide. 2014-11-05 16:01:03 -08:00
Matthew McClure bd6a9ff08c Merge pull request #1634 from anttimo/feature/fix-broken-readme-links
Fix two broken links to documentation in README.md
2014-11-05 15:58:12 -08:00
Antti Moilanen 540152051f Fixed two broken links to documentation. 2014-11-01 16:57:02 +02:00
Steve Heffernan 889ad338cc Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-10-30 17:25:51 -07:00
Steve Heffernan 0c2dad9ef3 Merge branch 'master' of https://github.com/videojs/video.js 2014-10-30 17:25:32 -07:00
Steve Heffernan 0919b77f31 Release 4.10.2 2014-10-30 17:25:22 -07:00
Steve Heffernan 758b9fda55 Fixed CDN links in setup guide 2014-10-30 17:24:09 -07:00
Matthew McClure 957687d449 @mmcc fixed localization of captions/subtitles menu off buttons. closes #1632 2014-10-30 17:21:58 -07:00
Steve Heffernan 768e40b169 Updated setup doc version url replacer to support multiple digit versions 2014-10-30 16:24:36 -07:00
Steve Heffernan 5d859a92b5 Fixed the VolumeMenuButton options to allow passing &#x27;vertical&#x27; to the VolumeBar. closes #1631 2014-10-30 13:59:05 -07:00
Steve Heffernan 1325722447 @heff fixed checking for child options in the parent options to allow for &#x60;false&#x60;. closes #1630 2014-10-30 13:19:01 -07:00
Matthew McClure 48a0049350 Remove extra 10 2014-10-30 10:12:58 -07:00
Steve Heffernan 7432648e38 Merge branch 'stable' 2014-10-29 08:39:31 -07:00
Steve Heffernan f420c5bd5f Added line to changelog for 4.10.1 2014-10-29 08:39:00 -07:00
Steve Heffernan 423939857f Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-10-29 08:36:40 -07:00
Steve Heffernan 7511bb606d Release 4.10.1 2014-10-29 08:36:16 -07:00
Steve Heffernan a12dd77057 Removed alert... 2014-10-29 08:31:13 -07:00
Steve Heffernan bcbe4f175a Removed dist files 2014-10-28 17:28:37 -07:00
Steve Heffernan 6958643678 Release 4.10.0 2014-10-28 17:28:25 -07:00
Steve Heffernan d55227668c @heff turned on the custom html controls for touch devices. closes #1617 2014-10-28 16:53:30 -07:00
Matthew McClure ce18a9af74 updated options to include sans-children, and included self-hosted font blurb
updated used by count
2014-10-28 16:48:29 -07:00
Matthew McClure a70b9e4957 added CORS information to tracks guide. Fixes #837
moar magic comments
2014-10-28 16:48:23 -07:00
Matthew McClure 38f1024ad3 doc updates + readme quick start 2014-10-28 16:48:23 -07:00
Matthew McClure 6093d35b4c updated options guide to include components 2014-10-28 16:48:23 -07:00
Steve Heffernan 330aed03c6 Merge pull request #1605 from mmcc/hotfix/keyboard-location
maybe actually check for keyLocation
2014-10-28 11:47:32 -07:00
Steve Heffernan f27bdd27ca @heff Added the ability to set options for child components directly in the parent options. closes #1599 2014-10-28 11:45:32 -07:00
Steve Heffernan 4199c3e5a9 Merge pull request #1598 from pascuals/patch-1
Update languages.md
2014-10-28 11:38:35 -07:00
Gavin fdb34f3179 @DevGavin added a Simplified Chinese translation. closes #1593 2014-10-28 11:29:05 -07:00
Matthew McClure f5117ae976 @mmcc fixed an issue with the VolumeButton assuming it was vertical by default. closes #1592 2014-10-28 11:19:34 -07:00
Steve Heffernan 4b818d9ebf @heff enhanced the event listener API to allow for auto-cleanup of listeners on other componenets and elements. closes #1588 2014-10-28 11:16:56 -07:00
Matthew McClure b8cc047a2e @mmcc fixed an issue where errors on source tags could get missed. closes #1575 2014-10-28 11:00:49 -07:00
Steve Heffernan 906de96632 Merge branch 'stable' 2014-10-28 10:35:56 -07:00
Steve Heffernan d0a918404f Added doc for remaining time and removed onWaitEnd doc 2014-10-28 10:20:39 -07:00
Matthew McClure a35da3e995 maybe actually check for keyLocation 2014-10-22 15:34:58 -05:00
pascuals d63912dd35 Update languages.md
Spanish translations are not updated
2014-10-20 15:19:43 +02:00
Steve Heffernan 1369e17dc9 Merge pull request #1577 from demersdesigns/master
Adding reference to generator-videojs-plugin
2014-10-16 13:03:15 -07:00
Steve Heffernan af02d158da @heff updated the poster to use CSS styles to display; fixed the poster not showing if not originally set. closes #1568 2014-10-16 12:59:41 -07:00
Steve Heffernan a6019d4207 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.js
2014-10-15 16:08:26 -07:00
Steve Heffernan b848fd736d Release 4.9.1 2014-10-15 16:07:59 -07:00
Steve Heffernan b619404069 Bumped to videojs-swf v4.5.1 to fix a data sanitization issue. closes #1587 2014-10-15 16:04:18 -07:00
Steve Heffernan 5e82f52a17 Fixed the contrib patch start command 2014-10-15 15:53:49 -07:00
Paul Demers 4711895d43 Adding reference to generator-videojs-plugin 2014-10-10 20:49:15 -04:00
Thijs Triemstra 375cc1ecf9 @thijstriemstra added a Dutch translation. closes #1566 2014-10-06 12:45:45 -07:00
OlehTsvirko 0b75b0f843 @OlehTsvirko added a Russian translation. closes #1563 2014-10-06 12:39:45 -07:00
OlehTsvirko 2e3d2417fb @OlehTsvirko added a Ukrainian translation. closes #1562 2014-10-06 11:26:27 -07:00
Jan Hesse 33f7805c2b @andekande improved the German translation. closes #1555 2014-10-06 11:18:17 -07:00
aptx4869 5e70bef2ab @aptx4869 fixed an issue where the native JSON parser wasn&#x27;t used. closes #1565 2014-10-06 11:16:08 -07:00
Steve Heffernan 064ab1166b Removed dist files 2014-09-30 18:51:58 -07:00
Steve Heffernan 85730d7a1b Release 4.9.0 2014-09-30 18:51:46 -07:00
Matthew McClure 18b6d25bc7 @mmcc added support for audio tags (html5 audio only). closes #1540 2014-09-30 18:34:51 -07:00
Steve Heffernan 8273809a18 Added a line to the changelog for #1519. closes #1519 2014-09-30 16:28:36 -07:00
Steve Heffernan 9bfe3fe5ae Merge branch 'review-rpless-feature/accessible-volume-menu' 2014-09-30 16:26:57 -07:00
Steve Heffernan ce97c24d79 @heff updated to swf v4.5.0 to fix event issues. closes #1554 2014-09-30 16:16:36 -07:00
Craig Rogers 9b7882e395 @twentyrogersc fixed the return value when setting the poster source. closes #1552 2014-09-30 15:38:22 -07:00
Philip Giuliani 6c4eac47a0 @philipgiuliani added an Italian translation. closes #1550 2014-09-30 15:31:26 -07:00
Matthew McClure 13f154d4d6 @mmcc made it possible to override the font-size of captions and subtitles. closes #1547 2014-09-30 15:27:05 -07:00
Matthew McClure e526c9335d @doublex fixed an issue with IE7 backwards compatibility. closes #1542 2014-09-30 15:15:40 -07:00
Steve Heffernan 61aee3376b Added a line to the changelog for #1533 2014-09-30 14:59:36 -07:00
Steve Heffernan 27d32d52c9 Exported the videojs.Flash.version method for use in external techs 2014-09-30 14:57:29 -07:00
Ryo Chikazawa ba7871dc5d Export videojs.Flash.embed 2014-09-30 14:49:50 -07:00
Steve Heffernan 675856aaf6 Reorganized the volume menu button styles and removed some duplicate definitions 2014-09-30 14:01:38 -07:00
Tom Johnson 6040a61498 @seniorflexdeveloper added new translations and translation updates. closes #1530 2014-09-29 16:38:09 -07:00
Steve Heffernan 64f3b7774c Fixed a spelling error in the player docs. closes #1528 2014-09-29 16:21:20 -07:00
Ryo Chikazawa f47bf26e49 @chikathreesix fixed an issue where data-setup options could be missed. closes #1514 2014-09-29 16:13:07 -07:00
Tetsuya Morimoto e0a124890b @t2y added a Japanese translation. closes #1497 2014-09-29 16:08:14 -07:00
Alex 585befce81 @alexrqs cleaned up the Spanish translation. closes #1494 2014-09-29 16:02:57 -07:00
Stephen d93bea98d7 @mynameisstephen fixed an issue where slider event listeners were not cleaned up. closes #1475 2014-09-29 15:55:51 -07:00
baloneysandwiches fd181aa9cd @baloneysandwiches added a hasClass method. closes #1464 2014-09-29 15:46:18 -07:00
Steve Heffernan 2a71d69c72 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.js
2014-09-25 14:18:03 -07:00
Steve Heffernan c0518a1ff0 Release 4.8.5 2014-09-25 14:15:59 -07:00
Steve Heffernan bb52851aa4 Updated to the latest version of the swf to fix HLS playback. closes #1538 2014-09-25 14:09:25 -07:00
Ryan Plessner f53583e275 Hide the volume bar by setting its content's width to zero. 2014-09-25 11:02:06 -04:00
Steve Heffernan a2710b60f1 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-09-23 16:26:06 -07:00
Steve Heffernan 2b57ada7df Release 4.8.4 2014-09-23 16:21:59 -07:00
Gary Katsevman d43831d6d0 @gkatsev fixed isFullscreen reporting on iOS devices. closes #1511
Squashed commit of the following:

commit 02fe7a40d0958e2ed84a6a0cf2be43bec259c72c
Author: Gary Katsevman <git@gkatsev.com>
Date:   Tue Sep 23 14:15:08 2014 -0400

    Feature detect old fullscreen instead of UA switch

commit f3eccbbe678c163021d790c69c3ab365e0a1fe1a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 22 21:31:34 2014 -0400

    No need for if since assume we're in fs

commit 0498b100843e0aa858b166d02a467e4471c126ab
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 22 21:28:10 2014 -0400

    Revert "Don't trigget vjs's fullscreenchange event"

    This reverts commit cc45177ee5fa950e665e066d170b137aaeb6e398.

    Conflicts:
    	src/js/media/html5.js

commit 1ed30853efb2ea043da4f18b4fdf75da15f55e88
Author: Gary Katsevman <git@gkatsev.com>
Date:   Wed Sep 17 12:00:29 2014 -0400

    Listen via 'this.one'.
    Don't bother checking whether the video element is fullscreen but just
    assume we are fullscreen.

commit 27e27075083d2ad408b5d47055881b2554f59154
Author: Gary Katsevman <git@gkatsev.com>
Date:   Tue Sep 16 18:12:36 2014 -0400

    Use one for event binding.

commit cc45177ee5fa950e665e066d170b137aaeb6e398
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 17:28:46 2014 -0400

    Don't trigget vjs's fullscreenchange event
    This event isn't really being used for this usecase right now, so, no
    need to trigger it.

commit ad505a680785d638289657aec4edad60879e945a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 16:45:48 2014 -0400

    Update exports for request & cancel fullscreen

commit e423635b6c8ad58a1ba04e1534a51c075e08b73a
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 16:15:10 2014 -0400

    On iOS, use ios specific enterFullscreen methods.

commit fe4a8fbf6ad73b6bc8f57d16c44f0ca4d3bf9450
Author: Gary Katsevman <git@gkatsev.com>
Date:   Mon Sep 15 14:53:20 2014 -0400

    Export isFullScreen correctly. Export isFullscreen as well.
2014-09-23 15:17:01 -07:00
Steve Heffernan 72cb71c3a5 Updated contrib.json to match new prompt formatting 2014-09-23 13:28:45 -07:00
Steve Heffernan ded72386ca Updated contrib.json to comply with new contrib formatting 2014-09-23 13:28:36 -07:00
Ryan Plessner 757c592b4a reverted the submenu behavior. it now needs to activated before it menuitems become tab targets. The volume control bar now uses the vjs-lock-showing class instead of new class. 2014-09-23 15:26:09 -04:00
Steve Heffernan 737b989d5e Removed dist files 2014-09-22 16:13:39 -07:00
Steve Heffernan ae04900c54 Release 4.8.3 2014-09-22 16:13:03 -07:00
Steve Heffernan 518614ca57 Added line to the changelog for #1526 2014-09-22 16:10:18 -07:00
Steve Heffernan 0ef6b4af73 Updated to version 4.4.4 of the swf 2014-09-22 16:04:02 -07:00
Daniel Roviriego ca1fdbb238 @deedos added a Brazilian Portuguese translation. closes #1520 2014-09-22 11:12:13 -07:00
Ryan Plessner 53d690c212 Changed the MenuItem and the Volume Control bar to gain focus when using tab navigation.
Previously, they could not be navigated to via the keyboard.
Fixs #1517.
Tested via manaul cross-browser tests using keyboard navigation (chrome, firefox, safari, and IE 11 ).
2014-09-19 13:58:19 -04:00
Steve Heffernan 186ead6b10 Updated contrib.json to match new prompt formatting 2014-09-17 11:53:41 -07:00
Steve Heffernan 4b64a92a2d Updated contrib.json to comply with new contrib formatting 2014-09-17 11:41:49 -07:00
Steve Heffernan b65f2da65e Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-09-16 16:42:25 -07:00
Steve Heffernan ee7c962494 Release 4.8.2 2014-09-16 16:38:42 -07:00
Steve Heffernan 05c18b7049 Added line to the changelog for #1512 2014-09-16 14:56:16 -07:00
Gary Katsevman 53ea60cd06 fixes #1512, fixes #1507
On ended, pause player if not paused or looping
IE11 (and maybe other browsers as well) only fire 'ended' event when the
video ends and doesn't fire pause. This makes IE11 not reset it's state
into a paused state that allows a user to replay immediately. However, a
two clicks on the play/pause button will allow you to replay.
In Chrome, we get first a pause event and then an ended event. When
'loop' is set, neither the last pause nor ended fire.
In the flash tech, the pause and ended events fire like in chrome in all
browsers.

Add tests for onEnded change

Appease jshint.
2014-09-16 14:53:46 -07:00
Matthew McClure cc5b2b838e Merge pull request #1489 from walsh9/feature/doc-link-fix
Fix broken link in CONTRIBUTING.md
2014-09-15 11:30:07 -07:00
Matthew Walsh 25044e34b0 Fix broken link in CONTRIBUTING.md
The link titled "Build and share plugins" goes to docs/plugins.md, which
doesn't exist. It should go to docs/guides/plugins.md
2014-09-07 20:26:56 -04:00
Steve Heffernan 2219cd0f01 Updated travis YML to exclude success messages from IRC 2014-09-05 15:25:32 -07:00
Steve Heffernan 9dc4ed29f2 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.less
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-09-05 14:59:25 -07:00
Steve Heffernan 18965bb8d7 Release 4.8.1 2014-09-05 14:58:12 -07:00
Steve Heffernan 3a1239df1e Added a line to the changelog for #1488 2014-09-05 14:53:40 -07:00
Steve Heffernan 49197e4f0e Merge branch 'hotfix/fullscreen-deprecations' into stable 2014-09-05 14:52:15 -07:00
Steve Heffernan 08da4c889f Added a line to the changelog for #1467 2014-09-05 14:50:00 -07:00
Steve Heffernan 1ff1d76a8c Merge commit 'a582c833e34c227ff29b707bad9cd4857f32c877' of github.com:MrVaykadji/video.js into french 2014-09-05 14:48:05 -07:00
Steve Heffernan 5abff360cc Added back missing deprecated fullscreen functions, and fixed a warning from using a deprecated method internally.
fixes #1451
2014-09-05 14:33:27 -07:00
Steve Heffernan 18be3ef9ac Added a line to the changelog for #1487 2014-09-05 14:31:20 -07:00
Matthew McClure 864432d7d3 updated styles for error messages and made poster absolutely positioned by default 2014-09-05 13:59:27 -07:00
Steve Heffernan 6c2efbf999 Added a line to the changelog for #1483 2014-09-05 13:53:11 -07:00
David LaPalomento eec1fc13fe Move language methods into externs
Trying to create a player-like subclass of component requires overriding languages() but that method was being minified. Add it to externs so that it can be overridden after minification. Fixes #1420.
2014-09-05 13:50:13 -07:00
Steve Heffernan 54b175d988 Added line to the changelog for #1482 2014-09-05 13:42:06 -07:00
David LaPalomento b9181ee55b Make sure the error property is set before proxying through the tech.
Some error events don't cause the error property on the video element to be set. In that case, handle the event like any other. Fixes #1465.
2014-09-05 13:36:50 -07:00
David LaPalomento d385f8257f Fixes #1481
Clear out pending errors on player disposal.
Source selection errors are dispatched asynchronously so that there is an opportunity to override the error message. If the player is disposed during that period, the error timeout wasn't being cleared properly. Fix for #1480.

Fix whitespace
When defining variables inline with declarations, stick to one variable per line.
2014-09-05 13:32:15 -07:00
Steve Heffernan 0ac8bcd389 Removed dist files 2014-09-03 08:47:37 -07:00
Steve Heffernan 88f59d7ad6 Release 4.8.0 2014-09-03 08:43:58 -07:00
Steve Heffernan 1c84f37fa0 Updated contrib.json for contrib prompt changes 2014-09-03 08:36:46 -07:00
Steve Heffernan 7d4b26625f Fixed a broken playbackRate test on Android 2.3 2014-09-02 17:38:11 -07:00
Steve Heffernan 7ead5f708f Added a line to the changelog for #1473 2014-09-02 16:47:47 -07:00
Steve Heffernan 16640274d7 Merge branch 'hotfix/error-timeout-squashed' of github.com:mmcc/video.js into mmcc-hotfix/error-timeout-squashed 2014-09-02 16:43:01 -07:00
Steve Heffernan 5f7ae5a7ba Added a line to the changelog for #1470 2014-09-02 16:29:15 -07:00
Steve Heffernan f3925c7364 Changed to feature prefix over suffix to make it read more as a boolean 2014-09-02 16:22:43 -07:00
Steve Heffernan c90d7d36f6 Merge branch 'media-tech-features2' of github.com:gkatsev/video.js into gkatsev-media-tech-features2 2014-09-02 16:11:26 -07:00
Steve Heffernan 6f069b765c Added line to changelog for #1449 2014-09-02 15:22:17 -07:00
Steve Heffernan a6fa0dcc80 Merge branch 'the-N-Zone' of github.com:gkatsev/video.js into gkatsev-the-N-Zone 2014-09-02 12:50:10 -07:00
Matthew McClure e72d682028 added timeout fix and tests. 2014-09-02 12:39:08 -07:00
Gary Katsevman 599217f158 Update tests to grab/restore progressEventsFeature 2014-09-02 14:57:29 -04:00
Gary Katsevman e60f2eef5c Update media.js and html5.js feature access.
Due to #1415, various usage of features moved around. This makes sure
that features are now called directly on the tech everywhere.
2014-09-02 14:51:13 -04:00
Gary Katsevman 7caa2fc1a7 Append Feature to 'features'. Update tests. 2014-09-02 14:46:19 -04:00
Gary Katsevman c0f91674e4 Promote 'features' to the prototype 2014-09-02 14:44:58 -04:00
Gary Katsevman e6897b6219 Inherit tech 'features' from 'MediaTechController'
Use vjs.obj.create to inherit 'features' from
'MediaTechController.prototype.features'. Because we are inheriting, if
the defaults change (prototype.features), we can receive these updates
in our tech if we had not changed properties of features manually.
2014-09-02 14:41:27 -04:00
Steve Heffernan 65e4b9f167 Added line to the changelog for #1453
Moved grunt languages configuration to lower in the gruntfile.
2014-09-02 11:40:18 -07:00
Tom Johnson 011861bbdb add support for videojs-grunt-languages
updates to change build/lang to build/files/lang

update grunt languages references and version

remove build/lang reference

update languages plugin reference for array support
2014-09-02 11:40:06 -07:00
Gary Katsevman df1944e9ff NaN & null should be treated as 0 in dimension()
When dimension() receives a NaN or null value for the number, it will
treat it as zero.
Updated tests to reflect that as well.
2014-09-02 14:37:42 -04:00
Steve Heffernan 1aabc440b6 Merge branch 'master' of https://github.com/videojs/video.js 2014-09-02 11:07:37 -07:00
Steve Heffernan c5bd01160a Added line to the changelog for #1409 2014-09-02 11:06:30 -07:00
Steve Heffernan 82aa55795e Removed html5Mock var declarations and fixed whitespace 2014-09-02 11:04:30 -07:00
Steve Heffernan 7c27add29d Merge branch 'issue-1408' of github.com:glencoesoftware/video.js into glencoesoftware-issue-1408 2014-09-02 11:00:36 -07:00
Matthew McClure 11b592ae01 Update CONTRIBUTING.md
Getting rid of some out of date info about Karma configuration.
2014-09-02 10:39:33 -07:00
MrVaykadji a582c833e3 French translation 2014-08-31 21:56:27 +02:00
Andreas Knab c4b4ebea4a Remove unneeded html5Mock 2014-08-28 12:28:07 +02:00
Steve Heffernan 1f33546f90 Added a line to the change log for #1455 2014-08-27 15:33:48 -07:00
Steve Heffernan 521f0eb941 Merge branch 'songpete-patch-1' 2014-08-27 15:31:15 -07:00
Steve Heffernan 22aa758067 Merge branch 'patch-1' of github.com:songpete/video.js into songpete-patch-1 2014-08-27 15:15:32 -07:00
Steve Heffernan 537ae2b805 Merge pull request #1435 from dmlap/test-manual-tracking
Add test for manual time tracking and dispose
2014-08-27 13:26:48 -07:00
Steve Heffernan fc0d37daec Merge branch 'guardian-html5-src-fix' 2014-08-27 13:12:46 -07:00
Steve Heffernan 2a9f1cdaac Added a line to the changelog for #1430 2014-08-27 13:11:55 -07:00
Steve Heffernan 87e25dd38e Merge branch 'html5-src-fix' of github.com:guardian/video.js into guardian-html5-src-fix 2014-08-27 13:08:02 -07:00
Steve Heffernan 16321d6208 Added line to the changelog for #1426 2014-08-27 13:05:33 -07:00
Steve Heffernan 34a8d64c04 Merge pull request #1426 from andekande/germantranslation
german Translation based on es.json
2014-08-27 12:59:50 -07:00
Pete Song 58c081f154 Bind 'onKeyPress' during keydown instead of keyup.
Binding during keydown will be more effective at preventing certain default behavior like moving the page down as these events may happen prior to keyup. Addresses #1452
2014-08-26 20:45:39 -04:00
Gary Katsevman 68ad48d8e8 Ignore null, undefined, and NaN is dimension()
Add vjs.isNaN to have a better cross browser isNaN checker.
Previously, only undefined was ignored, so, it tried setting the
dimension using null and NaN as values. In most browsers this isn't a
problem, but in particular on IE8, things break.
With this PR, all three of those values will be ignored.
2014-08-25 18:41:33 -04:00
Andreas Knab 49f58e0bbd Switch to sinon fake timers 2014-08-25 16:42:58 +02:00
Andreas Knab f716807852 Add test cases for default and disabled timeout 2014-08-25 11:35:06 +02:00
Andreas Knab 6d65871cb0 Add simple inactivityTimeout test 2014-08-25 11:28:52 +02:00
Steve Heffernan 055d81dc3a Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-08-20 15:17:08 -07:00
Steve Heffernan 760eb308db Release 4.7.3 2014-08-20 15:16:22 -07:00
Steve Heffernan 03059c17d8 Added line to the changelog for #1424 2014-08-20 15:12:12 -07:00
Eric Berdahl 5ee97ea9a1 Publish (i.e. prevent closure compiler from obfuscating name of) videojs.Player.prototype.selectSource function. This allows developers to provide their own algorithms for selecting which source a Player should use. 2014-08-20 15:11:58 -07:00
Steve Heffernan 5761ab33bd Added line to the changelog for #1427 2014-08-20 15:07:52 -07:00
Tom Johnson c19a3f3f48 add fix for localization of not supported message
add base documentation for language support

typo fix

added utility function for adding languages per conversation with @heff. Includes test.

move addLanguage to core. update both core and util tests. added export property

added language sandbox for demo

fix comment

doc udpate

remove build instructions

add addLanguage API to doc

fix deep merge in test

test update

update local reference to string for compiled tests
2014-08-20 15:04:30 -07:00
Steve Heffernan a888108e2c Merge pull request #1422 from SunnyLi/patch-1
Fix typo in video tracks documentation
2014-08-20 13:00:32 -07:00
David LaPalomento a1eb8dd975 Add test for manual time tracking and dispose
Make sure time and progress event synthesis is turned off after the tech is disposed.For #1431.
2014-08-20 14:39:02 -04:00
Matt Osborn 21f2d3c150 fixing techGet for HTML5 src method 2014-08-19 17:04:31 +01:00
Jan Hesse dd0c7efa60 german Translation based on es.json 2014-08-18 13:11:05 +02:00
Sunny Li ec61386f47 Fix typo in video tracks documentation
small typo
2014-08-16 12:45:31 -04:00
Andreas Knab 98edeccb3f Allow disabling of inactivity timeout 2014-08-15 14:39:49 +02:00
Steve Heffernan 342bdce748 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-08-14 16:32:26 -07:00
Steve Heffernan 7baa40220f Release 4.7.2 2014-08-14 16:31:27 -07:00
Steve Heffernan aaab1500c8 Added line to the changelog for #1417 2014-08-14 16:29:39 -07:00
Steve Heffernan 487c05628c Fixed console log tests that were breaking in IE8 2014-08-14 16:15:13 -07:00
David LaPalomento dfdbdbc9bb Bump SWF to 4.4.3
Pick up updated flash compiler settings.
2014-08-14 15:09:06 -07:00
David LaPalomento f037818656 Don't dynamically turn off progress events
The major browsers that support HTML video now reliably support progress events, so don't worry about synthesizing them for HTML anymore.
2014-08-14 15:08:54 -07:00
David LaPalomento f4ce62d4b1 Move manual events into tech controller
Migrate the timers that manage creating timeupdate and progress events when the tech doesn't support them natively. Now, techs that extend MediaTechController will continue to automatically pick up synthetic playback and buffering events but they're scoped much more closely to the entity that needs them. In addition, time and progress tracking have been moved much earlier into the component initialization which fixes #1414.
2014-08-14 15:08:37 -07:00
Andreas Knab 0b4737d209 Allow per-player setting of inactivityTimeout 2014-08-12 13:20:48 +02:00
Andreas Knab 3cfbf94245 Fix issue with minified version 2014-08-12 13:20:35 +02:00
Andreas Knab e4a0d264d6 Make inactivity timeout configurable 2014-08-11 11:01:15 +02:00
Steve Heffernan 7f4e6eb432 Removed dist files 2014-08-06 11:27:17 -07:00
Steve Heffernan 692a0e9c09 Release 4.7.1 2014-08-06 11:26:56 -07:00
Steve Heffernan a7d6c350e7 Added line to changelog for #1401 2014-08-06 11:24:41 -07:00
Steve Heffernan 9e34570c0f Merge pull request #1401 from jabes/patch-1
Prevent EMALFORMED errors with bower.json
2014-08-06 11:18:38 -07:00
Justin Bull c529f0898d Update bower.json
Prevent EMALFORMED errors with bower.
2014-08-05 19:08:39 -07:00
Steve Heffernan 3bf4afc831 Removed dist files 2014-08-05 18:09:20 -07:00
Steve Heffernan f3d7196a73 Release 4.7.0 2014-08-05 18:05:38 -07:00
Steve Heffernan 7ea1d8f544 Modified language json structure to not include the code.
Also removed languages from being combined with core until we add the ability to choose languages.
2014-08-05 17:48:00 -07:00
Tom Johnson 6b612d8cdc Added localization support. closes #1360 2014-08-05 17:48:00 -07:00
Steve Heffernan e4fbf27358 Merge pull request #1397 from anttimo/feature/fix-1390-add-svg-to-font-face
Add svg to font-face. fixes #1390
2014-08-05 12:13:43 -07:00
Steve Heffernan 0af41818e0 Merge branch 'master' of https://github.com/videojs/video.js 2014-08-05 12:10:09 -07:00
Steve Heffernan 1ffea6ce07 Removed a few leaked globals. This along with #1396 closes #603 2014-08-05 12:09:29 -07:00
Benjamin Peterson bf8b62cc81 put some variables in an anonymous function, so they don't pollute the global scope 2014-08-05 12:08:12 -07:00
Gary Katsevman f32ec15344 extern remainingTime 2014-08-05 12:08:12 -07:00
Steve Heffernan 949bfa2d39 Merge pull request #1398 from ctd1500/fix-readme
Updates the Build Status in the readme
2014-08-05 10:22:18 -07:00
ctd1500 bae224e4c4 Fixing the build status icon and link. 2014-08-04 23:21:42 -07:00
ctd1500 64564c0dcd Fixing a couple of spelling errors 2014-08-04 23:21:10 -07:00
Steve Heffernan 003c5ef38d Merge pull request #1395 from gkatsev/extern-remainingtime
extern remainingTime
2014-08-04 16:17:31 -07:00
Steve Heffernan 7dc919c89e Added line to changelog for #1385 2014-08-04 16:16:09 -07:00
Steve Heffernan 52667554dc Merge pull request #1385 from Akkuma/feature/sliding-class
Added a class for when slider is "sliding"
2014-08-04 16:14:35 -07:00
jackunion a0d8db9ed1 Fixed an issue where the user was unable to scroll/zoom page if touching the video
closes #1373, closes#895

fixes #895

Moved event.preventDefault() to 'touchend' listener

missing semicolon
2014-08-04 16:08:25 -07:00
Steve Heffernan d64205de79 Added line to changelog for #1369 2014-08-04 15:53:49 -07:00
Steve Heffernan 527a33a252 Maded some revisions to videojs/video.js#1369
closes #1369
2014-08-04 15:53:28 -07:00
Steve Heffernan b3bbb17dd4 Restore the original video tag attributes on a tech change
set attributes of video tag and not only values

add unsupported attribute to the video tag - test failing

helper to set attributes on an element from a map of values

dummy compare of html content with a sort of the attributes

ignore html attributes order for comparition

save original tag attributes

restore original tag attributes n creation and overwrite if required by settings

replace object.keys with vjs.obj.each for ie<9

fix spacing

API consistency, getAttributeValues renamed to getElementAttributes

clear variable naming

move setElementAttributes close to getElementAttributes
2014-08-04 15:47:56 -07:00
Steve Heffernan 403afcf57d Updated some contrib commands 2014-08-04 14:23:19 -07:00
Gary Katsevman 3c4c5a5aee extern remainingTime 2014-08-04 14:56:25 -04:00
Antti Moilanen cfb688983b Add svg to font-face. fixes #1390 2014-08-04 15:55:45 +03:00
Steve Heffernan bcf3f34dde Added finished messages to contrib issue commands 2014-08-03 17:36:57 -07:00
Steve Heffernan 4c42446d44 Updated report and request contrib commands 2014-08-03 17:34:25 -07:00
Steve Heffernan 2619593691 Merge pull request #1393 from gkatsev/disable-the-sauce
Disable saucelabs until we figure it out
2014-08-01 17:28:54 -07:00
jerrylow fa5116ffe7 Issue-1370 remove default class on subtitle off
closes #1371, closes #1370

Update track show to user showtrack

Remove underscores
2014-08-01 17:25:21 -07:00
Steve Heffernan 49eeb600fd Added Slider.onMouseMove to fix breaking test 2014-08-01 17:24:08 -07:00
Gary Katsevman 39fe83e1c0 Disable saucelabs until we figure it out 2014-08-01 20:18:08 -04:00
Matthew McClure 8b5eb5089f Merge pull request #1386 from Akkuma/feature/optimized-slider-handlers
Bound move/end context once instead of repeatedly
2014-08-01 16:47:47 -07:00
Steve Heffernan fa75d61cf8 Added line to changelog for #1351 2014-08-01 13:14:47 -07:00
Paul Ryan c5fb952935 Added vjs-waiting and vjs-seeking css classnames and updated the spinner to use them
closes #1351, closes #1225, closes #684, closes #518

Split up seeking and waiting styles. Updated loading spinner to use them.
2014-08-01 13:13:24 -07:00
sethborg f00f354ab9 Disposing the html5 video element more throughly when switching techs so it doesn't continue to load.
closes #1334

Update html5.js

If the HTML tag is not removed, the video will still download in the background in Firefox after the player is disposed.

Update component.js

Moved my fix to src/js/media/html5.js

Changed order of html5 element dispose and using this.el_ instead of player.tag
2014-08-01 13:04:25 -07:00
Steve Heffernan 8afc2f919b Added line to the change log for #1253 2014-08-01 12:47:29 -07:00
brainopia b2fbc8059b Added support for multiple time ranges in the load progress bar
closes #1253

Display a true load progress (with accounting all buffered regions)

Add played property for player

Correctly display played regions in progress-bar

Support #played in MediaFaker so tests would pass

Remove play-progress regions but add some opacity to play-progress

Remove opacity

Revert "Add played property for player"

This reverts commit 6d8bf982c23c85b0e17edf93d7b2d02ded8ff611.

Fixed an issue where a load progress of NaN was throwing an error

Reverted some remaining `played` changes

Updated the progress bar to encapsulate time ranges

In the previous commit the progress bar was broken up into timeranges.
This had the effect of looking broken, so now the progress bar covers
all time ranges, and the time ranges a subtley different in color
from the progress bar.
2014-08-01 12:46:32 -07:00
Desdemina 6921b552ef Update tracks.md with Caption Key info. Closes #1379 2014-07-31 13:07:27 -07:00
Gregory Waxman aaa88c70f2 Bound move/end context once instead of repeatedly 2014-07-30 17:08:44 -04:00
Gregory Waxman 3da12eba29 Added a class for when slider is "sliding" 2014-07-30 17:01:57 -04:00
Steve Heffernan 14c64f197f Added line to changelog for #1363 2014-07-29 16:03:30 -07:00
Steve Heffernan d10977ebf3 Merge branch 'feature/ie8-compat-events' of github.com:HeadOnAPlate/video.js into HeadOnAPlate-feature/ie8-compat-events 2014-07-29 15:57:26 -07:00
Steve Heffernan f69881c276 Added docs and changelog line for #1320 2014-07-29 10:42:10 -07:00
Steve Heffernan 116681771b Merge branch 'source-type' of github.com:guardian/video.js into guardian-source-type 2014-07-29 10:36:57 -07:00
Matt Osborn 11524ca2c3 Merge pull request #1 from heff/guardian-source-type
Guardian source type
2014-07-29 17:31:29 +01:00
Steve Heffernan 624bf16070 Merge branch 'master' into fix-flash-ready
Conflicts:
	src/js/media/flash.js
	test/unit/flash.js
2014-07-28 17:27:29 -07:00
Steve Heffernan 0ddc344e76 Fixed a change that got lost in the merge 2014-07-28 17:10:52 -07:00
Steve Heffernan 781b4e59f5 Merge branch 'fix-hidden-flash-methods-squashed'
Conflicts:
	src/js/media/flash.js
2014-07-28 17:07:53 -07:00
Steve Heffernan 0bc7ca0954 Fixed test to use exported property 2014-07-28 17:03:27 -07:00
Steve Heffernan 0ce57ae149 Removed iFrameMode from flash because it is not being used 2014-07-28 17:03:14 -07:00
Steve Heffernan f6ab92977e Switched to string keys for flash currentTime propreties so they would be exported 2014-07-28 17:02:48 -07:00
Steve Heffernan 707d0e7660 Added line to changelog for #1345 2014-07-28 16:28:17 -07:00
Steve Heffernan 951370dec9 Merge pull request #1345 from jackunion/issue_492
fixes #492
2014-07-28 16:26:52 -07:00
Steve Heffernan 5ef0da4ac6 Added line to changelog for #1340 2014-07-28 16:13:04 -07:00
Steve Heffernan ae90526f2c Merge branch 'hotfix/flash-dispose' of github.com:dmlap/video-js into dmlap-hotfix/flash-dispose 2014-07-28 16:10:47 -07:00
Steve Heffernan 540e7f0cb7 Added line to changelog for #1337 2014-07-28 15:53:59 -07:00
Steve Heffernan cab595a5dd Merge branch 'fix/bower-ignore' of github.com:gkralik/video.js into gkralik-fix/bower-ignore 2014-07-28 15:52:40 -07:00
Steve Heffernan 9217d5c2e7 Added line to changelog for #1321. Removed unneeded hasOwnProperty. 2014-07-28 15:07:57 -07:00
Steve Heffernan 34ad720626 Merge branch 'data-attributes' of github.com:gkatsev/video.js into gkatsev-data-attributes 2014-07-28 15:00:09 -07:00
Steve Heffernan 97c7e4c759 Moved source list handling out of src() and into its own function to simplify src 2014-07-28 14:43:12 -07:00
Steve Heffernan 738fa73949 Merge branch 'source-type' of github.com:guardian/video.js into guardian-source-type
Conflicts:
	src/js/exports.js
2014-07-28 13:46:35 -07:00
Steve Heffernan d3e03accce Added line to the changelog 2014-07-28 13:39:53 -07:00
Steve Heffernan edd2e11486 Updated trigger param docs to be single-line for the docs parser 2014-07-28 13:37:43 -07:00
Steve Heffernan 2466c76a57 Merge branch 'feature/component-trigger-fix' of github.com:bceacuna/video.js into bceacuna-feature/component-trigger-fix 2014-07-28 13:29:19 -07:00
Gary Katsevman c794aeca34 quote vertical option so it doesn't get minified 2014-07-28 11:37:39 -07:00
Steve Heffernan e17dd2c68d Merge pull request #1361 from gutworth/fix-ws
fix whitespace in util.js
2014-07-25 15:36:46 -07:00
Niels Doucet 472988df58 #1309 fix adding/removing event handlers in IE8 2014-07-24 09:13:27 +02:00
Benjamin Peterson 6789c921f5 fix whitespace in util.js 2014-07-23 20:50:06 -07:00
Steve Heffernan b1c3bd4f84 Added npm install and grunt to the contrib update command 2014-07-23 11:56:55 -07:00
Steve Heffernan f6ba25ddf6 Made the swf account for being ready after the tech was disposed 2014-07-16 14:01:01 -07:00
Steve Heffernan 02949f5b91 Allow overriding flash methods that were previously hidden by creating them in init 2014-07-14 16:07:26 -07:00
jackunion bb93a18ca8 fixes #492
Binds up/down arrows for sliders
2014-07-13 20:46:20 +04:00
Steve Heffernan 3352346a74 Removed dist files 2014-07-11 14:50:42 -07:00
Steve Heffernan a97a002ed6 Release 4.6.4 2014-07-11 14:48:42 -07:00
Steve Heffernan fa635f835f Updated contrib release steps 2014-07-11 14:44:47 -07:00
Steve Heffernan 2af481e0ec Updated to swf version 4.4.2 to fix the network state reporting 2014-07-11 14:38:30 -07:00
Steve Heffernan 7debdea507 The base media tech class now checks the networkState at init to determine if loadstart should be manually fired.
Previously this was only done in the HTML5 tech, but Flash needs it as well. This relies on videojs/video-js-swf#106.

Also removed the 'not implemented' warnings from the media tech functions. I think there's a better way we can help tech authors here, and it was blocking the ability to check if a function was implemented for real.

Fixes #1300, fixes #1341
2014-07-10 19:18:58 -07:00
David LaPalomento a77e39f342 Set this.el_ directly instead of using another variable
The flash tech doesn't need to hold onto a reference to the placeholder element after the embed code has been generated. Set this.el_ to the embed code immediately instead of using another property to track it during init. Tested in IE8.
2014-07-10 17:17:53 -04:00
David LaPalomento da19fa3ead Track the object element during init and remove it if the tech is disposed before onReady. For #1339.
If dispose() was called before the SWF triggered onReady(), the placeholder div would be cleaned up but the actual object element would be left behind to mess things up in the future. Keep track of the object element during initialization and make sure it is removed if flash is unloaded early.
2014-07-09 16:29:30 -04:00
Matt Osborn d6d3dd1d4d using vjs.bind 2014-07-09 10:14:44 +01:00
Matt Osborn 926ccac6a7 removing redundant ready check 2014-07-09 10:12:17 +01:00
Gregor Kralik bdc89a0b24 bower: ignore dot files, build and tests 2014-07-09 11:02:08 +02:00
themicp 392cbda095 Added support for listening to multiple events through a types array. closes #1231 2014-07-08 11:51:47 -07:00
Gary Katsevman d5372545a2 Added additional browsers for saucelabs testing. closes #1216 2014-07-08 11:46:02 -07:00
Gary Katsevman 813f28fb4d Added a base for running saucelabs tests from grunt. closes #1215 2014-07-08 11:43:57 -07:00
Steve Heffernan 1378f566ab Merge branch 'stable'
Conflicts:
	contrib.json
2014-07-08 11:08:16 -07:00
Steve Heffernan ab520e9dd7 Updated stable with new contrib commands, including test, watch, server 2014-07-08 11:06:29 -07:00
spectralsun 14ecc2fc89 added missing exports. closes #1328 2014-07-07 10:43:44 -07:00
John Doe bdf6c54dbc Merge branch 'stable' 2014-07-07 10:09:01 -07:00
Matthew McClure c0451fa674 Merge pull request #1331 from StevenMeyer/patch-1
Corrected API method name (#1330)
2014-07-07 10:06:53 -07:00
Steven Meyer 5812d64154 Corrected API method name
Corrected API method name and added helpful message on using events.

I was confused for a while regarding how to use the events, so it might help someone else.
2014-07-04 14:24:34 +01:00
Matt Osborn 3b60b9decd setSource method tweaks 2014-07-02 12:26:04 +01:00
Gary Katsevman b65eb0e5f3 switch to vjs.obj.each 2014-07-01 16:11:32 -04:00
Gary Katsevman c9b1217e10 Copy over data attrs from video el to wrapper el. 2014-07-01 15:10:45 -04:00
Matt Osborn 9e8a31065e adding a currentType method to get current source type if known 2014-07-01 10:46:16 +01:00
Erick Acuna d24a9b48ac Updated jsdoc 2014-06-26 10:50:25 -04:00
Steve Heffernan 80147f0054 Updated the contrib feature accept process to support upstream repos and added a review process 2014-06-25 17:54:47 -07:00
Matt Osborn fe6946d451 Fixed an error when disposing a tech using manual timeupdates. closes #1312 2014-06-25 17:40:25 -07:00
Cavitt b66ef806e5 Exposed the vertical option for slider controls. closes #1303 2014-06-25 17:27:56 -07:00
Steve Heffernan fc4d00c658 Condensed the contrib commands 2014-06-25 15:48:40 -07:00
Steve Heffernan 1448638285 Updated contrib install process 2014-06-24 14:57:47 -07:00
Erick Acuna 0ee79afdfe Fixed issue number 1298 component.trigger does not pass event object #1298 2014-06-24 12:43:18 -04:00
Patrick Forget 8a05aa11a1 Added a composer.json for PHP packages. closes #1241 2014-06-13 17:01:11 -07:00
David LaPalomento 155781058e Fixed an IE11 issue where clicking on the video wouldn&#x27;t show the controls. closes #1291 2014-06-13 14:16:03 -07:00
Steve Heffernan 595a6131c1 Added tests for cue times with flags 2014-06-13 13:41:23 -07:00
Troy Brandt bb50466733 Fixed issues around webvtt cue time parsing. Fixed #877, fixed #183.. closes #1236 2014-06-13 13:30:16 -07:00
Steve Heffernan 91aa06fe56 Updated the chapters menu styles to center the menu to the button. 2014-06-13 11:33:23 -07:00
Chris Fung 95173ebf7c Fixed support for webvtt chapters. Fixes #676.. closes #1221 2014-06-13 11:30:44 -07:00
shmulik 6d78c95bb4 Added cross-browser isArray for cross-frame support. fixes #1195. closes #1218 2014-06-12 15:24:46 -07:00
Steve Heffernan 6116e3c3da Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video-js.swf
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-06-12 14:10:21 -07:00
Steve Heffernan b2f6175a7b Release 4.6.3 2014-06-12 14:08:27 -07:00
Steve Heffernan 3720a2de12 Fixed a minification issue with the fullscreen event. fixes #1282. closes #1286 2014-06-12 14:05:27 -07:00
David LaPalomento 39ae5178ee Updated to version 4.4.1 of the SWF. closes #1285 2014-06-12 14:02:44 -07:00
Steve Heffernan e77f8c95d3 Merge branch 'stable' 2014-06-10 17:15:49 -07:00
Steve Heffernan 61a919d529 Updated test dependencies to fix travis tests 2014-06-10 17:13:20 -07:00
Steve Heffernan 9d311640b1 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-06-10 16:59:17 -07:00
Steve Heffernan 17cb669047 Release 4.6.2 2014-06-10 16:58:41 -07:00
Steve Heffernan 71c0a72717 Fixed an issue with the firstplay event not firing when autoplaying. closes #1271 2014-06-10 16:55:08 -07:00
Steve Heffernan aedaa17e3c Added tests for cue time parsing, including for #183 (test-only) 2014-05-21 17:28:18 -07:00
Steve Heffernan e3e836f41e Added tests for cue parsing, including tests for #877 2014-05-21 16:50:58 -07:00
Steve Heffernan 7aeb288848 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-05-20 13:59:47 -07:00
Steve Heffernan 5edc3a5cbc Release 4.6.1 2014-05-20 13:58:26 -07:00
Steve Heffernan 3f9a2ca35b Udpated playbackRate menu to work in minified version. closes #1223 2014-05-20 13:56:43 -07:00
Steve Heffernan 9a2bee9abf Removed dist files 2014-05-20 10:42:20 -07:00
Steve Heffernan d01de49ded Release 4.6.0 2014-05-20 10:42:01 -07:00
Steve Heffernan 1744d64142 Fixed contrib.json to work with handlebars 2014-05-20 10:39:21 -07:00
Steve Heffernan 956f3e03eb Temporarily removed the saucelabs ipad test because it was errororing unrelated to tests 2014-05-19 13:59:12 -07:00
Brad Chase 23ab370ab6 Added a player option to offset the subtitles/captions timing. closes #1212 2014-05-19 13:40:04 -07:00
Steve Heffernan bd66416b75 Updated the CDN font to point to the new font version, /f/3/ 2014-05-19 13:34:26 -07:00
Matthew McClure 6bb92282c3 Added a cog icon to the font icons. closes #1211 2014-05-19 13:21:32 -07:00
Dominic f3ab261d5b Added a clearer error message when a tech is undefined. closes #1210 2014-05-19 12:45:00 -07:00
Steve Heffernan 38c394fc90 Fixed another issue with changelog adding during feature accept command 2014-05-19 12:07:54 -07:00
Gary Katsevman a97bb5f74b Fixed saucelabs integration to run on commits in TravisCI. closes #1214 2014-05-16 15:18:24 -07:00
Steve Heffernan 4d05b6febb Fixed changelog adding in contrib accept script 2014-05-16 15:07:13 -07:00
Gary Katsevman 3189ec1a0b Added cross-browser testing with SauceLabs, and added Karma as the default test runner. closes #1187 2014-05-16 14:48:05 -07:00
Steve Heffernan b8f525cb81 Added contrib feature accept and review commands 2014-05-16 11:32:47 -07:00
Steve Heffernan 46aa551e1e Modernized the fullscreen API and added support for IE11. fixes #1155 closes #1205 2014-05-15 14:46:28 -07:00
Steve Heffernan 97c1f83dc7 Added a missing changelog item 2014-05-14 16:01:52 -07:00
Steve Heffernan 0c3fb04acb Fixed issues from comments on d7f840a969
- use triple equals
- don't block play call on error
2014-05-14 15:46:23 -07:00
Steve Heffernan bad5130c8f Fixed the loadstart event listener order so it's attached before the HTML5 tech triggers it. fixes #1208 fixes #1207 fixes #1193 2014-05-14 15:04:31 -07:00
Artem Suschev 8dfe0a4d06 Added support for playbackRate switching. closes #1132 2014-05-13 14:02:02 -07:00
Erik Skogby 047bd8f618 Made vjs.get work with xDomain in IE < 10. closes #1095 2014-05-13 12:35:40 -07:00
Steve Heffernan d7f840a969 Better error handling. closes #1197
Squashed commit of the following:

commit 81d785980d3f3e4c1025f7b421f0ecb7320469f1
Author: Steve Heffernan <steve@zencoder.com>
Date:   Mon May 12 12:53:59 2014 -0700

    Removed unneeded comments

commit c7ad7322e49df9cb22665692dbfe615dfa44758f
Author: Steve Heffernan <steve@zencoder.com>
Date:   Fri May 9 14:29:31 2014 -0700

    Addressed comments in #1191
    Now clearing errors on loadstart events.
    Added some default error messages.

commit a742239d0e799fa6a5fee056cc37b3c2e3ab4510
Author: Steve Heffernan <steve@zencoder.com>
Date:   Wed May 7 15:38:31 2014 -0700

    Fixed the error display to hide by default

commit 561c3f844956db6f532cae8ed81a86cc39b10db1
Author: Steve Heffernan <steve@zencoder.com>
Date:   Mon May 5 10:44:47 2014 -0700

    Added support for displaying a message for the error.

commit 22142078427ead85548c4755bf1943a0a07b22b4
Author: Steve Heffernan <steve@zencoder.com>
Date:   Fri May 2 17:18:22 2014 -0700

    Updated spinner to hide on all errors

commit 95d7e7027467cf96b14db6692d93c7c7f41c5810
Author: Steve Heffernan <steve@zencoder.com>
Date:   Fri May 2 15:37:44 2014 -0700

    Exported ErrorDisplay

commit 11ca9cdd8db4d1559f5d1908c4e67be32ca7a25e
Author: Steve Heffernan <steve@zencoder.com>
Date:   Fri May 2 15:35:46 2014 -0700

    Updated flash tech to support new errors

commit 56cbe66f4233e54f13550367590864102f5de0fe
Author: Steve Heffernan <steve@zencoder.com>
Date:   Fri May 2 13:06:49 2014 -0700

    Started on better error handling and displaying in the UI when an error has occurred.

commit 740014c57b264079cf4084965a9384b49a7c0f64
Author: Steve Heffernan <steve@zencoder.com>
Date:   Wed Apr 30 16:11:33 2014 -0700

    Added better global log/error/warn functions.
    Added sinon.js for stubs in tests.
    Updated grunt version to satisfy peer dependency warning.
2014-05-12 17:08:48 -07:00
Steve Heffernan 01567428b0 Merge branch 'stable' 2014-05-09 13:10:27 -07:00
Steve Heffernan 4235a3d8c1 Added bug and request contrib commands 2014-05-09 13:09:58 -07:00
Steve Heffernan 4bb3a23331 Made negative LESS calculations a little more readable.
Added line to the changelog for PR merge.
2014-05-09 10:56:46 -07:00
Steve Heffernan 7782eda524 Merge branch 'master' of github.com:fobiaxx/video.js into fobiaxx-master 2014-05-09 10:45:58 -07:00
Matthew McClure 92eac13caa More explicit MIME type note
Added a more explicit MIME type note in setup. Moved to a footnote and made comment more verbose to avoid confusion.
2014-05-07 15:31:02 -07:00
Steve Heffernan bcb69a0b23 Merge branch 'master' of github.com:videojs/video.js 2014-05-07 15:23:43 -07:00
Steve Heffernan 3fd0c92c95 Added line to changelog 2014-05-07 15:23:32 -07:00
Matthew McClure a6718913be Merge pull request #1149 from bosoniq/master
Included self-hosting MIME type instructions
2014-05-07 15:22:13 -07:00
Chris Fung 1df28ff311 Fixed the default flag for captions/subtitles tracks. closes #1153 closes #656 2014-05-07 14:59:01 -07:00
Jon Zepernick dbff62e3f0 Made tap events on mobile less sensitive to touch moves. closes #1111 2014-05-06 17:22:29 -07:00
Steve Heffernan ef25557577 Added line to changelog 2014-05-06 17:03:44 -07:00
Steve Heffernan 269f7b15c0 Merge branch 'master' of github.com:michelt/video.js into michelt-master 2014-05-06 17:01:53 -07:00
Steve Heffernan adf4e507c1 Added line to the changelog 2014-05-06 14:51:09 -07:00
Steve Heffernan a5bc6884e2 Merge branch 'Akkuma-master' 2014-05-06 14:37:33 -07:00
Gregory Waxman e7617bfdd4 Merge pull request #1 from heff/Akkuma-master
Updates for videojs/video.js#1093
2014-05-06 11:16:15 -04:00
Steve Heffernan 27f0f789e0 Updated to match comments in #1093 2014-05-05 17:11:14 -07:00
Steve Heffernan 3e5ef19212 Merge branch 'master' of github.com:Akkuma/video.js into Akkuma-master
Conflicts:
	src/js/lib.js
2014-05-05 16:34:15 -07:00
Steve Heffernan d96e008978 Updated setup.md and demo.html with fallback paragraph 2014-05-05 15:48:34 -07:00
Steve Heffernan 227700a236 Added a more informative and styled fallback message for non-html5 browsers that also have JavaScript disabled 2014-04-29 13:39:38 -07:00
Fernando José La Calle Prada 923ce038f7 Fixed compilation failure with LESS v1.7.0 and GRUNT v0.4.4. The operations on the variables must be enclosed in parentheses so the compiler takes as math operations and not as strings. 2014-04-29 16:21:34 +02:00
Steve Heffernan 16eea0a1df Merge branch 'feature/fix-timeupdates' of github.com:heff/video-js into heff-feature/tech-error 2014-04-25 15:39:45 -07:00
Steve Heffernan f4704ee74f Merge branch 'feature/tech-error' of github.com:heff/video-js into heff-feature/tech-error 2014-04-25 15:38:20 -07:00
Steve Heffernan 8c9a4cc434 Merge branch 'mousespam' of github.com:download13/video.js into download13-mousespam 2014-04-25 15:31:31 -07:00
Steve Heffernan f98012a471 Trigger one last timepudate when stopping manual timeupdates. fixes #1002 2014-04-25 13:42:11 -07:00
Steve Heffernan 65833f5231 Making sure a tech exists when starting manual progress and timeupdate events 2014-04-25 13:14:03 -07:00
Andrew Pitt e8722ff522 Included self-hosting MIME type instructions 2014-04-18 11:42:14 +02:00
Andrew Pitt c1029eab16 Update setup.md 2014-04-18 11:35:42 +02:00
Steve Heffernan 46605739e2 Merge branch 'feature/fix-menu-title' of github.com:coursera/video.js into coursera-feature/fix-menu-title 2014-04-17 22:55:16 -07:00
Andrew Pitt 31918fc46d Included self-hosting MIME type instructions
Added information on MIME type server configuration to self-hosting instructions in setup.md
2014-04-16 11:13:46 +02:00
Steve Heffernan 3bafdeef51 Merge branch 'master' of github.com:videojs/video.js 2014-04-12 14:05:28 -07:00
Steve Heffernan 2473d5bf7a Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.js
2014-04-12 14:05:13 -07:00
Steve Heffernan 4242fe3857 Release 4.5.2 2014-04-12 14:03:18 -07:00
Steve Heffernan da45dad831 Updated versioning to bump bower and component json files also
fixes #1123, fixes #1140
2014-04-12 13:47:39 -07:00
Steve Heffernan 2fca84435d Merge pull request #1130 from stin7/patch-1
getElementsById -> getElementById
2014-04-11 14:50:08 -07:00
Austin d8f721abf5 getElementsById -> getElementById
small typo fix in code that leads to error
2014-04-05 11:21:25 -07:00
Jon Wong 9d258742c5 Adjusting menu to use title given in options 2014-04-03 23:35:15 -07:00
Jon Wong 35d7258973 Merge branch 'feature/fix-menu-title' of git://github.com/coursera/video.js into coursera-feature/fix-menu-title 2014-04-03 14:26:38 -07:00
Steve Heffernan 4e0c2b366d Updated volume slider to use ems intead of percent for default value clarity 2014-04-03 13:49:30 -07:00
David LaPalomento aa8d50b219 Don't force sliders to get evaluated on load. closes #1122
Squashed commit of the following:

commit d5957da3b282166c882c5d81e64936dec118ecf6
Author: David LaPalomento <dlapalomento@gmail.com>
Date:   Mon Mar 31 16:22:43 2014 -0400

    Peg the volume control to 1.0 on init
    Setup styles so that the volume control initially renders at full volume. This matches browser behavior where volume is available and saves Javascript from having to manually update the volume control on init. After the initial draw, the volume control is updated dynamically the same way it was before.

commit 8bc861fb861d4126f80fd11ed17d1f550498c559
Author: David LaPalomento <dlapalomento@gmail.com>
Date:   Wed Mar 12 17:16:30 2014 -0400

    Don't force sliders to get evaluated on load
    Since the load and play progress sliders are guaranteed to start from zero, set that through CSS. Calling Slider.prototype.update forces a re-flow because element dimensions are queried and style rules changed. That reflow consistently took around 60ms on my laptop which would mean dropped frames and "jerkiness" on initialization.
2014-04-03 13:46:48 -07:00
Matthew McClure 95c29e684f Reset player on source change. closes #1050 closes #1124 2014-04-03 11:16:09 -07:00
Jon Wong c7e35e51de Making sure that the title element gets placed into the UL element
Included are two sanity check tests for the two areas being checked
to make sure that the menu title items are being correctly placed
in the actual UL element of the menu.

Fixes #1107
2014-04-01 22:32:14 -07:00
Steve Heffernan d784f9d0d9 Added line to the changelog 2014-04-01 17:21:50 -07:00
Tom Johnson 6a097c0236 Basic UI for Live
Squashed commit of the following:

commit 2c5d4d523e2e1f3a1bcdafda292d6a0ebea7a200
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Tue Apr 1 15:02:37 2014 -0700

    update control text for liveDisplay component

commit 10f21cc2a09b6823a73fae4cf1881490f9038d30
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Tue Apr 1 12:23:20 2014 -0700

    whitespace fix

commit 6a093d67989479f63ed4ac6bdddd5d1a3d0b08bb
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Tue Apr 1 12:21:42 2014 -0700

    remove window scope of infinity

commit 2dd8284bd3c7b2c7692a78563c3cfe9558f25ab4
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Tue Apr 1 12:12:13 2014 -0700

    update to fix infinity capitalization. only do css logic on valid duration. set any duration of less than zero to window.Infinity

commit f940bef8b50156c5b8fcd969c9b5d39be9fe5589
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Tue Apr 1 10:01:27 2014 -0700

    update to less than zero on player durationChange

commit 554c003dac640b7a658355cd46b6ab146cf50b24
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Mon Mar 31 17:26:13 2014 -0700

    update exports, fix tests

commit 2fb10cb06a65c3f91342563bfa925d9a472ede33
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Mon Mar 31 13:39:00 2014 -0700

    fix tests, remove update display list in LiveDisplay

commit bc47c5ed67e036c79067ebc6666b310fd0b68d04
Author: Tom Johnson <seniorflexdeveloper@gmail.com>
Date:   Mon Mar 31 13:13:43 2014 -0700

    Basic UI for Live
2014-04-01 17:19:28 -07:00
Steve Heffernan efe25c0b13 Removed dist files 2014-03-27 14:33:12 -07:00
Steve Heffernan 06e141df58 Merge branch 'stable'
Conflicts:
  dist/video-js/video-js.css
  dist/video-js/video-js.min.css
  dist/video-js/video.js
2014-03-27 14:33:06 -07:00
Steve Heffernan 848cfd6620 Release 4.5.1 2014-03-27 14:31:36 -07:00
Steve Heffernan d3af3e0e07 Added line to the changelog 2014-03-27 14:29:46 -07:00
Steve Heffernan af50b8ee29 Fixed canPlaySource export that got lost in last release 2014-03-27 14:25:58 -07:00
Steve Heffernan aeb4aa3ada Removed dist files 2014-03-27 13:37:38 -07:00
Steve Heffernan 825de43819 Release 4.5.0 2014-03-27 13:35:51 -07:00
Steve Heffernan 066438670f Fixed the release type ID placement in contrib.json 2014-03-27 13:32:06 -07:00
Steve Heffernan e8d36e0fab Exported upatchCanPlayType and moved tests to api.js 2014-03-27 13:24:03 -07:00
Steve Heffernan a9ad77aa00 Removed a low value test that was causing a hang in testing 2014-03-27 11:53:06 -07:00
Steve Heffernan b3b42e3822 Made findPosition return rounded values to fix Android tests 2014-03-27 11:44:50 -07:00
Steve Heffernan 88403221a9 Fixed canPlayType patch tests on Android 2014-03-27 11:19:21 -07:00
Steve Heffernan 2079af7320 Merge pull request #1116 from dmlap/hotfix/gcc-currentSrc
Fix currentSrc when Flash returns null
2014-03-26 16:53:55 -07:00
David LaPalomento c8bd862e3e Fix currentSrc when Flash returns null
It looks like GCC was mangling `rtmpConnection` and `rtmpStream` before invoking them. Unfortunately, we define those methods as string literals so they do not have mangled equivalents. Invoke them using string literals so GCC never mangles the method names.
2014-03-26 19:45:42 -04:00
Steve Heffernan 74c73969cd Merge branch 'gkatsev-defaultprevented' 2014-03-26 14:45:53 -07:00
Steve Heffernan c286c826db Added line to changelog 2014-03-26 14:45:08 -07:00
Steve Heffernan 33f388366d Merge branch 'master' of github.com:videojs/video.js 2014-03-26 14:40:38 -07:00
Steve Heffernan f363523551 Switched to single quotes 2014-03-26 14:39:33 -07:00
Steve Heffernan e87fe460cc Merge branch 'monkeyhls' of git://github.com/gkatsev/video-js into gkatsev-monkeyhls 2014-03-26 14:37:20 -07:00
Steve Heffernan 2c12ed98a7 Merge branch 'defaultprevented' of git://github.com/gkatsev/video-js into gkatsev-defaultprevented 2014-03-26 14:32:50 -07:00
Steve Heffernan 87ee28e6cb Merge pull request #1112 from seniorflexdeveloper/feature/grunt-connect
Grunt Connect
2014-03-26 14:30:45 -07:00
Gary Katsevman e39557e790 Always unpatch canPlayType.
Fix up tests to not ignore some if canPlayType is not available since
unpatch is no longer broken.
2014-03-26 16:59:04 -04:00
Gary Katsevman e2a1cac136 fix typo for unpatchCanPlayType 2014-03-26 16:58:49 -04:00
Gary Katsevman d21019ad78 add existence test for patch and unpatch methods 2014-03-26 16:39:11 -04:00
Gary Katsevman 94ec725a66 update for IE8 and fixup stupid tests 2014-03-26 14:58:36 -04:00
Gary Katsevman 75bd76f55c return the patched function from unpatchCanPlayType 2014-03-26 14:58:20 -04:00
Gary Katsevman fef6282d55 remove unused var 2014-03-26 13:49:21 -04:00
Gary Katsevman f1d2aef048 Don't assume only mimetype available for matching 2014-03-26 13:41:49 -04:00
Tom Johnson d1d97bfe9b update contributing doc with grunt commands 2014-03-25 15:38:32 -07:00
Tom Johnson 0a1d4b2645 use grunt connect for development 2014-03-25 15:22:29 -07:00
Gary Katsevman 0c856ce9a4 call unpatchCanPlayType after tests 2014-03-25 15:32:03 -04:00
Gary Katsevman 817253b74f Also, switch out HTMLVideoElement to constructor reference in tests 2014-03-24 19:07:19 -04:00
Gary Katsevman f86e073f03 Switch HTMLVideoElement to constructor reference 2014-03-24 18:54:10 -04:00
Gary Katsevman 86c3f94c87 fix up jshint errors 2014-03-24 18:00:00 -04:00
Gary Katsevman d48d6cf99d add a test 2014-03-24 17:56:02 -04:00
Steve Heffernan 0f2aadcfcd Merge branch 'stable' 2014-03-24 13:53:54 -07:00
Steve Heffernan 4daf1f173c Merge pull request #1098 from arxpoetica/patch-1
Fix code in examples.
2014-03-24 13:52:37 -07:00
michelt 61eb54afa8 Replaced webkitRequestFullScreen with webkitReplaceFullscreen 2014-03-20 18:45:48 +01:00
Gregory Waxman 799f1762ff Fixed some formatting issues & added .each doc 2014-03-20 11:04:37 -04:00
Robert Hall 416ee1b2a0 Fix code in examples.
The examples are broken with extra parentheses. Fixed.
2014-03-19 13:58:00 -04:00
Gregory Waxman 204bb84ecb Array traversing for children opts - closes #1070 2014-03-18 15:49:59 -04:00
Gary Katsevman 5381f70d1c + vjs.Html5.{patchCanPlayType,unpatchCanPlayType}
patchCanPlayType is called on load.
It patched video#canPlayType if needed.
unpatchCanPlayType will revert the patch and return the patch function.
There are also corresponding tests that test patchCanPlayType,
unpatchCanPlayType and also whether the patch functions themselves work
correctly.
2014-03-17 20:47:47 -04:00
Gary Katsevman 252ad3f466 be case insensitive 2014-03-13 18:25:03 -04:00
Matthew McClure 80d7b5014a Merge pull request #1075 from seniorflexdeveloper/hotfix/spinner
Loading Spinner Fixes
2014-03-13 14:26:20 -07:00
Matthew McClure 32e4d4c9d0 Merge pull request #1080 from tchakabam/master
Fixes null pointer exception and improves behavior of src() of when to trigger ready event
2014-03-13 14:18:36 -07:00
Stephan Hesse d289a336b8 Fix bower version (was 4.4.0 in bower.json but should be same as semver tag) 2014-03-13 22:16:39 +01:00
Gary Katsevman e35083bc28 Monkeypatch canPlayType on Android 4.0+ for HLS
Android devices starting with 4.0 can play HLS natively to some extent.
However, they do not say so in the canPlayType method. This commit
monkey patches canPlayType to respond with "maybe" for
"application/x-mpegURL" and "application/vnd.apple.mpegURL". Otherwise,
it'll fallback to the original canPlayType method.
2014-03-13 16:34:29 -04:00
Stephan Hesse 4051a9cbee Fixed compile: removed trailing whitespace 2014-03-13 18:59:51 +01:00
Stephan Hesse 26f6f4b0ea Enough to check for this.tech != null 2014-03-13 00:46:00 +01:00
Stephan Hesse cbefd37acf Added comment to triggerReady call 2014-03-13 00:45:06 +01:00
Tom Johnson 378d6ef482 - Bind hide on ended event to resolve issue #1028.
- Remove duplicate seeked event line.
2014-03-11 21:29:14 -07:00
tchakabam 02155c6b13 Trigger ready callback even when no tech available so client app can display custom fallback message 2014-03-11 16:47:51 +01:00
tchakabam 7a4c602be0 Fixes exception when userActive called but tech not initialized 2014-03-11 16:20:12 +01:00
Erin b7cc2a8a4c Prevent mousemove spam
Some platforms produce frequent mousemove events whether or not the mouse has moved. This causes the UI to always be displayed since userActive_ is always `true`. By keeping track of the last mouse position and only firing if the new position is different, we can eleminate the event spam.
2014-03-09 13:39:34 -07:00
Steve Heffernan e7b1098563 Merge branch 'master' of github.com:videojs/video.js 2014-03-06 13:18:58 -08:00
Steve Heffernan a64a5e27cf Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-03-06 13:18:49 -08:00
Steve Heffernan bdeaae1c92 Release 4.4.3 2014-03-06 13:15:53 -08:00
Steve Heffernan e2b2d14f48 Added line to the changelog 2014-03-06 12:55:25 -08:00
Steve Heffernan 96c274de63 Merge branch 'patch/setposter-export' of git://github.com/heff/video-js into heff-patch/setposter-export 2014-03-06 12:49:36 -08:00
Steve Heffernan 6244c39129 Added line to the changelog 2014-03-06 12:48:12 -08:00
Steve Heffernan e4b269e294 Added an IIFE to prevent deoptimization 2014-03-06 12:36:36 -08:00
Gary Katsevman f3166ad082 Add speced event.defaultPrevented 2014-03-06 13:36:40 -05:00
Steve Heffernan 54609dc3f5 Merge pull request #1061 from frankhereford/master
Update the Readme.md file with the current year.
2014-03-05 16:16:04 -08:00
Steve Heffernan 2005fe2136 Exporting tech.setPoster(). Fixes #1028 2014-03-05 16:08:49 -08:00
frankhereford efd4822c6b Update the Readme.md file with the current year. 2014-03-05 17:44:07 -06:00
Steve Heffernan d538debb1d Added try/catch to protect against IE with no Media Player 2014-03-05 15:04:04 -08:00
Steve Heffernan 48230ea1a1 Added line to changelog 2014-03-05 13:42:32 -08:00
Steve Heffernan 661cbd1eb0 Close GH-1059: Added a grunt task for opening the next issue that needs to be addressed. 2014-03-05 13:41:26 -08:00
Steve Heffernan fe2b702e32 Merge branch 'stable' 2014-03-04 11:33:35 -08:00
Steve Heffernan d47435a18f Merge pull request #1057 from paolodina/patch-1
Update setup.md
2014-03-04 11:33:12 -08:00
Steve Heffernan 7c772fbf3e Merge branch 'bugfix/src-getter' of git://github.com/dmlap/video-js into dmlap-bugfix/src-getter
Conflicts:
	src/js/media/flash.js
2014-03-04 11:24:10 -08:00
Paolo Dina 4116d9ec14 Update setup.md 2014-03-04 20:13:14 +01:00
David LaPalomento f155814cd9 Merge pull request #1 from heff/bugfix/src-getter
Made the src method return the player when setting
2014-03-04 14:11:56 -05:00
Steve Heffernan a0f929dd57 Added line to the changelog 2014-03-04 09:32:28 -08:00
Lee Whitaker cc5e515360 Use .npmignore to package a smaller subset of videojs for distribution. Make sure to include the video-js.less file for the designer to use. 2014-03-04 09:50:58 -05:00
Steve Heffernan 2e26703162 Fixed captions positioning when player isn't playing 2014-03-03 13:47:16 -08:00
Steve Heffernan 0ad8abfef1 Added line to the change log 2014-03-03 13:37:46 -08:00
Steve Heffernan 61883ab4e2 Merge branch 'master' of git://github.com/harhoo/video.js into harhoo-master 2014-03-03 13:33:34 -08:00
Steve Heffernan 0f854c751b Merge branch 'stable' 2014-03-03 13:32:51 -08:00
Steve Heffernan 5b133823e5 Updated contrib.json with feature workflow 2014-03-03 13:32:21 -08:00
harhoo 3e19d7621a Whitespace changes 2014-03-03 15:31:47 +00:00
harhoo b0a6cf335a Move captions down when controls are inactive 2014-03-03 10:26:51 +00:00
Steve Heffernan ed78764379 Updated changelog 2014-02-27 17:57:20 -08:00
Steve Heffernan 7f44942c9b Merge branch 'add/component-support' of git://github.com/peteschaffner/video.js into peteschaffner-add/component-support 2014-02-27 17:55:29 -08:00
Steve Heffernan e9da3350d4 Made the src method return the player when setting, and made Flash return the current srouce for flash.src() 2014-02-27 17:34:01 -08:00
Steve Heffernan c6c49ac580 Merge pull request #1040 from ange007/patch-2
There was no semicolon
2014-02-25 16:03:00 -08:00
Pete Schaffner 4b0db76d77 Bump version 2014-02-25 15:32:45 +01:00
Vladimir B. 6b28ba268a There was no semicolon
There was no semicolon
2014-02-25 13:11:03 +02:00
Pete Schaffner 5146c1fa4a Add component.json file 2014-02-25 07:19:24 +01:00
Steve Heffernan b98d719564 Merge branch 'stable'
Conflicts:
	dist/video-js/video-js.css
	dist/video-js/video-js.min.css
	dist/video-js/video.dev.js
	dist/video-js/video.js
2014-02-24 22:03:34 -08:00
Steve Heffernan 7aefee5d7d Release 4.4.2 2014-02-24 21:57:43 -08:00
Steve Heffernan c1e623bed7 Added line to the changelog 2014-02-24 21:51:56 -08:00
Steve Heffernan 333db84510 Made module.exports a string key so it'd be exported. fixes #1033 2014-02-24 21:19:06 -08:00
Steve Heffernan 8f40fa4548 Merge branch 'stable' 2014-02-24 21:15:24 -08:00
Steve Heffernan 9c282811e1 Merge pull request #1037 from heff/patch/patch
Added patch process to contrib.json
2014-02-24 21:13:26 -08:00
Steve Heffernan d68f5a93a5 Updated contrib.json with patch commands 2014-02-24 21:10:29 -08:00
Steve Heffernan 1dd8a15655 Updated contrib patch process 2014-02-24 11:32:35 -08:00
Steve Heffernan 3336f1fe02 Merge branch 'stable' 2014-02-19 12:49:47 -08:00
Steve Heffernan 4fe74d52a9 Updated the CDN links in the setup guide 2014-02-19 12:49:29 -08:00
Steve Heffernan 0d58df8edb Merge branch 'stable' 2014-02-18 17:18:25 -08:00
Steve Heffernan f135b97ce0 Fixed the version numbers in the changelog 2014-02-18 17:17:58 -08:00
Steve Heffernan 051657334f Removed dist files 2014-02-18 17:04:21 -08:00
Steve Heffernan 7be94c3882 Release 4.4.1 2014-02-18 17:04:02 -08:00
Steve Heffernan 4f66e09595 Updated changelog 2014-02-18 16:58:11 -08:00
Steve Heffernan 1bb2c7ed57 Added .npmignore so dist/ files won't be ignored in packages 2014-02-18 16:57:14 -08:00
Steve Heffernan 1e781d14df Updated the release process to remove dist files after the release 2014-02-18 15:40:56 -08:00
Steve Heffernan ee9a18d5ac Removed dist files after publishing 2014-02-18 15:09:45 -08:00
Steve Heffernan ce0c4b12d2 Fixed contrib release branch pushes 2014-02-18 14:39:20 -08:00
Steve Heffernan 9e5dce5c14 Release 4.4.0 2014-02-18 13:43:40 -08:00
Steve Heffernan 88dca0a2e2 Fixed contrib release to use bump-only, so it doesn't tag and push 2014-02-18 13:41:56 -08:00
Steve Heffernan 8aa2eb4719 Updated package github url. fixes #1020 2014-02-18 13:31:18 -08:00
Steve Heffernan ecaf748e4f Added a bower.json 2014-02-18 13:27:02 -08:00
Steve Heffernan c9cad9ca1e Updated to the latest version of the swf 2014-02-18 13:19:35 -08:00
Steve Heffernan 956aaa0425 Added release process using contrib.json 2014-02-14 16:52:48 -08:00
Steve Heffernan e062dec423 Fixed grunt file error 2014-02-13 21:09:42 -08:00
Steve Heffernan 8b720ce45a Fixed a mistype 2014-02-13 19:28:13 -08:00
Steve Heffernan 5ab2504e90 Added line to changelog 2014-02-13 19:24:55 -08:00
Steve Heffernan 310a0630c9 Switched to custom universal module definition. closes #998 closes #847 closes #998 2014-02-13 19:20:30 -08:00
Steve Heffernan 468b07c651 Merge branch 'browserify' of git://github.com/gkatsev/video-js into gkatsev-browserify 2014-02-13 14:51:30 -08:00
Steve Heffernan 12c830049e Updated changelog 2014-02-11 17:21:24 -08:00
Steve Heffernan fe4c477da6 Switch this.content references to use the standard this.contentEl_
Also cleaned up some comments and formatting.
2014-02-11 17:20:07 -08:00
Steve Heffernan 24125bbb63 Merge branch 'patch-1' of git://github.com/MrAvenger/video.js into MrAvenger-patch-1 2014-02-11 15:36:06 -08:00
Steve Heffernan e73bb869ce Merge pull request #1005 from uniphil/patch-1
Create 'track' element in the HTML5 shiv sample
2014-02-10 17:30:41 -08:00
Steve Heffernan 5c907e1ce2 Added missing file from minified test suite 2014-02-10 17:24:48 -08:00
Steve Heffernan 8c59405d86 Added missing files from standard test suite 2014-02-10 17:14:46 -08:00
Steve Heffernan 7ade43d91d Merge branch 'bugfix/lastseek-cleanup' of git://github.com/dmlap/video-js into dmlap-bugfix/lastseek-cleanup 2014-02-10 16:17:30 -08:00
Steve Heffernan 49656ab013 Merge branch 'master' of github.com:videojs/video.js 2014-02-10 16:09:32 -08:00
Steve Heffernan 6f83d0b00e Merge branch 'karma-update' of git://github.com/christophercurrie/video.js into christophercurrie-karma-update
Conflicts:
	test/karma.conf.js.example
2014-02-10 16:08:47 -08:00
Phil Schleihauf 71ba5bb062 Create 'track' element in the HTML5 shiv sample
Matches the shiv to the one at [the start of `src/js/core.js`](https://github.com/videojs/video.js/blob/master/src/js/core.js#L8).

Right now it's missing `track`.
2014-02-10 15:40:32 -05:00
Steve Heffernan 11e7028c25 Merge pull request #999 from mmcc/document-passing-element
Update docs to reflect being able to pass an element instead of ID.
2014-02-07 16:53:19 -08:00
Matthew McClure 7926c2d9a6 syntax highlighting and some clarity 2014-02-07 16:52:15 -08:00
Matthew McClure 2b1291816f Update docs to reflect being able to pass an element instead of ID. Closes #844 2014-02-07 16:26:49 -08:00
Gary Katsevman 4d9d06e1c9 Enable building videojs with browserify.
This uses browserify-shim to get browserify to recognize videojs.
It uses dist/video-js/video.js for the main file of the module.
To build using browserify, you just run browserify on the module and
use --standalone (or -s) to make it produce a UMD file.
This seems to work just fine in the browser (and requirejs looks like
it'll work, though, I haven't tested it) but it won't work in node right
now because videojs is doing a lot of stuff with 'document' directly and
its causing problems in node.
2014-02-07 18:28:41 -05:00
Steve Heffernan 0fc76451f9 Adding line to CHANGELOG 2014-02-06 17:15:19 -08:00
Matthew McClure 3cb41c7786 Close GH-971: Quiet down deprecation warnings. 2014-02-06 17:15:01 -08:00
Steve Heffernan 2d5ca1ebc2 Adding line to CHANGELOG 2014-02-06 17:12:00 -08:00
Steve Heffernan 1b45195f9d Close GH-981: Stopped component's dispose event from bubbling up. 2014-02-06 17:11:33 -08:00
Steve Heffernan 04c893208e Added line to changelog 2014-02-06 17:01:49 -08:00
Steve Heffernan 453402a912 Added line to changelog 2014-02-06 17:01:23 -08:00
Steve Heffernan 849521ee66 Merge pull request #988 from golisandeep3/master
Fixed ARIA role attribute for button and slider
2014-02-06 17:00:33 -08:00
Steve Heffernan ef1b239b2a Removed unneeded option in tests 2014-02-06 16:58:25 -08:00
Steve Heffernan 4521c70173 Changed enableUserActivity to enableTouchActivity
Added back tracking of touch+hold
2014-02-06 16:54:35 -08:00
Gary Katsevman 28a4d29934 enable user activity on components by default 2014-02-06 17:04:58 -05:00
Gary Katsevman 9975ed407a Don't enable enableUserActivity on an option 2014-02-06 15:59:57 -05:00
Gary Katsevman 75a23135e6 Report user activity on touchmove if userWasActive 2014-02-06 15:59:10 -05:00
Gary Katsevman 4d2267c1bc use tap events. Report activity on touch move. 2014-02-06 15:40:20 -05:00
Gary Katsevman 44d6cac1b7 Test is for tap events and not user activity 2014-02-05 20:58:30 -05:00
Gary Katsevman e5294848f9 Remove listenToTouchMove. 2014-02-05 20:50:39 -05:00
Gary Katsevman 26c8d3f92c enableUserActivity on component
disableUserActivity on MediaTechController and Player.
MediaTechController does it manually.
2014-02-05 20:41:52 -05:00
Gary Katsevman a7d624affe stop immediate propagation on tap events
Make media tech controller only hide control bar.
2014-02-05 19:22:43 -05:00
Gary Katsevman 4b254a07df remove unused var 2014-02-05 19:19:14 -05:00
Gary Katsevman 07cd9800e8 Fix touch events.
Make components listen to touch events themselves.
Components can have a "listenToTouchMove" property that would report
user activity on touch moves.
Currently, the only problem left is that the MediaTechController emits
tap events to show/hide the controlbar but that causes the control bar
to not be hidden via a tap.
2014-02-05 18:26:44 -05:00
Sandeep Goli b23eba7c8c Fixed ARIA role attribute for button and slider 2014-02-04 11:18:51 -05:00
Steve Heffernan 70ed4fcbb2 Updated changelog 2014-02-03 13:20:03 -08:00
Aalekh Nigam d0f8b3e87e Close GH-977: Inserts Fullscreen events .fixes #688. 2014-02-03 13:17:47 -08:00
David LaPalomento 7184cb4b49 src() called as a getter should return the video src
It can be handy that src() returns the player object when it is invoked but it does not match the behavior of the corresponding property on the video element. Ignoring the spec however, while the video element is running the resource selection algorithm, currentSrc may be undefined. If the video source has been specified through an attribute on the video element, src() is the natural way to expose that URL programmatically. Without this change, it's necessary to bypass the player and interact with the tech directly to determine the value of the src attribute.
2014-01-25 23:16:35 -05:00
Steve Heffernan c597605afd Added line to the changelog 2014-01-23 17:50:23 -08:00
Steve Heffernan d73bfb80b7 Merge branch 'windows-dist' of git://github.com/christophercurrie/video.js into christophercurrie-windows-dist
Conflicts:
	package.json
2014-01-23 17:47:19 -08:00
Steve Heffernan 0dd210dcf3 Added line to changelog 2014-01-23 17:22:14 -08:00
Steve Heffernan e25a9f3207 Merge branch 'seniorflexdeveloper-feature/grunt-swf' 2014-01-23 17:20:19 -08:00
Steve Heffernan e4b4906198 Updated swf version and grunt file references 2014-01-23 17:15:41 -08:00
Steve Heffernan 4dd776c334 Added line to changelog 2014-01-23 16:46:24 -08:00
Steve Heffernan a8afe9c673 Merge pull request #906 from heff/feature/more-exports
Added missing component exports
2014-01-23 16:45:27 -08:00
Steve Heffernan 6a1c0bdd0c Added a line to the changelog 2014-01-23 16:42:48 -08:00
Steve Heffernan 65767f77f8 Merge pull request #948 from christophercurrie/karma-missing-util
Karma example is missing util
2014-01-23 16:40:54 -08:00
Steve Heffernan f5acb89d70 Added a changelog item 2014-01-23 15:47:37 -08:00
Steve Heffernan f152c6a4be Changed video-js swf location 2014-01-23 15:44:52 -08:00
Steve Heffernan cb78815e80 Merge pull request #962 from dmlap/bugfix/touch-detect-test
Fix touch detection test on non-touch devices
2014-01-23 15:43:06 -08:00
David LaPalomento ff1c9c5cf0 Fix touch detection test on non-touch devices
TOUCH_ENABLED is false on non-touch devices which causes our minified API test to fail when opened in a browser on a traditional destktop machine. It worked fine through the command line because apparanetly phantomjs supports touch events (ha!). Check to make sure the property is not undefined instead.
2014-01-23 18:28:46 -05:00
David LaPalomento dd8c25e8d5 Store last seek time in the Flash tech
Instead of caching the last seek time at the player level, cache it in the Flash tech. The only place this value was used was in the progress controls when Flash was loaded, so this simplifies the logic in that component and pushes the hack down into a single location at least.
2014-01-23 18:19:15 -05:00
Steve Heffernan 1cd81ad258 Merge pull request #959 from mmcc/update-setup-docs
Update setup guide
2014-01-23 14:04:49 -08:00
Matthew McClure bf7dd32ff6 update setup docs to reference 4.3 on the CDN 2014-01-23 14:01:48 -08:00
Christopher Currie 9088dfffc9 Use specific launcher versions 2014-01-21 08:45:59 -08:00
Christopher Currie a54d9cdae6 Add dependencies and configuration for all browser launchers 2014-01-21 08:42:40 -08:00
Christopher Currie 51b836d6be Update to karma 0.10/grunt-karma 0.6.
Current version of grunt-karma has ChromeLauncher bugs.
2014-01-17 14:18:09 -08:00
Christopher Currie 0a2167468c Karma example is missing util 2014-01-17 19:39:00 +00:00
Christopher Currie 02eb2d3ee3 Support dist target on Windows 2014-01-16 11:41:17 -08:00
Steve Heffernan 2825f74ba8 Merge branch 'feature/grunt-swf' of git://github.com/seniorflexdeveloper/video.js into seniorflexdeveloper-feature/grunt-swf 2014-01-15 13:52:33 -05:00
Tom Johnson 59a733f14e fix build task 2014-01-10 12:32:38 -08:00
Tom Johnson 0dae44988e use SWF grunt build project. Update gruntfile for dist task to use packaged SWF. Updated sandbox for reference to SWF. 2014-01-07 07:32:16 -08:00
Steve Heffernan dfe4543a0d Adding line to CHANGELOG 2013-12-20 14:14:35 -08:00
Steve Heffernan 0f38d27dcc Close GH-899: Fix firefox+flash mousemove bubbling. Fixes #37 2013-12-20 14:14:00 -08:00
Steve Heffernan 024b031646 Added missing component exports. fixes #903 2013-12-18 17:53:43 -08:00
MrAvenger ec1bea41a5 Update progress-control.js 2013-12-17 15:26:56 +00:00
MrAvenger b1f9450bb3 SeekHandle content
I wanted to use the SeekHandle to show the current time but as far as I could tell it only contained static content, I made this change to allow the content to be updated.

Is this its intended purpose or am I playing with something that has another a different job?
2013-12-17 15:05:03 +00:00
Steve Heffernan 950072ad97 Merge pull request #898 from tuchida/remove-global-userActivity_
Remove added userActivity_ to global
2013-12-16 15:52:08 -08:00
uchida_t 491b9b232b Remove added userActivity_ to global 2013-12-17 08:23:10 +09:00
Steve Heffernan a106924e6d Adding line to CHANGELOG 2013-12-11 13:28:32 -08:00
Benoit Tremblay 6b73df950e Close GH-887: Fix to reuse HTML5 tech (2). Fixes #884 2013-12-11 13:27:47 -08:00
Steve Heffernan 7b23576afc Adding line to CHANGELOG 2013-12-09 16:16:30 -08:00
Steve Heffernan 166cc9c1ef Close GH-878: Moved player exports to externs. 2013-12-09 16:16:09 -08:00
Steve Heffernan 81e49d4361 Merge pull request #875 from dmlap/hotfix/poster-fallback
Fix capability detection for poster image
2013-12-05 13:55:29 -08:00
David LaPalomento 090bc0d12a Fix capability detection for poster image
We were checking if `backgroundSize` was present on the video element, not the style property of the video element. That meant the IE fallback was being used on all platforms and breaks aspect-ratio preserving poster scaling for those browsers that support it.
2013-12-05 11:15:10 -05:00
David LaPalomento beb329ad71 Make textTracks an extern
TextTracks are queried during player initialization whether they're present or not so the method must be present on Player objects. Make sure the method name isn't minified so it's possible to create a Player object without having to extend videojs.Player directly.
2013-12-03 14:09:16 -05:00
Steve Heffernan 2066474096 Adding line to CHANGELOG 2013-12-02 17:37:49 -08:00
Gary Katsevman 432b60f22c Close GH-861: Bug/callstack gh 860. Fixes #860 2013-12-02 17:37:12 -08:00
Steve Heffernan 15a0d7dbb6 Added note to fullscreen externs test 2013-12-02 17:31:18 -08:00
Steve Heffernan c23ca5200c Merge branch 'hotfix/player-externs' of git://github.com/dmlap/video-js into dmlap-hotfix/player-externs
Conflicts:
	Gruntfile.js
2013-12-02 17:29:34 -08:00
Steve Heffernan 522f45f458 Exported util namespace and mergeOptions 2013-12-02 17:11:08 -08:00
Steve Heffernan df57b302da Adding line to CHANGELOG 2013-12-02 17:03:56 -08:00
Steve Heffernan 2aa09fd15a Close GH-862: Add util namespace. 2013-12-02 17:03:32 -08:00
Steve Heffernan 09f81c0c6c Adding line to CHANGELOG 2013-12-02 15:34:19 -08:00
David LaPalomento 75b2171051 Close GH-850: Use qunitjs through npm. 2013-12-02 15:34:00 -08:00
Steve Heffernan 3248bc1258 Adding line to CHANGELOG 2013-12-02 15:30:07 -08:00
David LaPalomento 1cab78347d Close GH-845: Move player id generation. 2013-12-02 15:29:41 -08:00
Steve Heffernan 0cbe95d615 Added a test for the posterImage source getter 2013-12-02 08:11:22 -08:00
Steve Heffernan dcc19dcf04 Adding line to CHANGELOG 2013-11-26 16:57:40 -08:00
Matthew McClure f3fcf9b5b8 Close GH-815: Export text tracks. 2013-11-26 16:57:20 -08:00
Steve Heffernan ef0d63b5ba Modified tests for #838 and updated changelog. closes #838 2013-11-26 16:53:23 -08:00
David LaPalomento 7efcbd5e19 Use externs to prevent obfuscation
Instead of using string literals, create an externs file for the player and use that to ensure fullscreen functionality is never minified.
2013-11-26 18:47:12 -05:00
David LaPalomento c69290c39f Don't use minifiable player methods in fullscreenToggle
Use string literals to lookup fullscreen-related methods on the player object in the fullscreenToggle component. Otherwise, closure compiler replaces them with minified method names and makes it impossible to supply a simpler "player" object with customized fullscreen logic for the fullscreenToggle to interact with.
2013-11-26 18:46:08 -05:00
David LaPalomento cb9447b2c3 Fix typo in test description
availble -> available
2013-11-26 18:45:58 -05:00
David LaPalomento 875fc2ff32 Allow poster to be changed after init. Fixes #525
When poster() is called with a URL, fire a `posterchange` event to update the PosterImage source and update the video element attribute.

Trigger posterchange after updating the tech
Wait until the tech has updated its poster image before alerting components so they don't see the intermediate state in event handlers. Remove unused variable from PosterImage.createEl.

Don't create new img elements each time the poster is set on ie8
Create the img fallback for the poster during PosterImage initialization on ie8 so we can avoid having to check and possibly create it each time the src is set. Add a test to ensure that new elements are not appended to the poster component when the img fallback is in use and the src attribute is modified.

fixing a broken IE8 test, and adding a negative test, for poster switching.

modified the poster-switching test to accomodate IE8
added a negative test for an undefined poster

fixed the assertion message in the 'undefined' image case

fixed test breakage in Firefox and IE10 (quotes were not being handled properly in the test data)

testing:
ran the tests at the command line, and in Chrome, Firefox, IE8, IE10, Firefox and Safari
all passed
2013-11-25 14:49:49 -08:00
Steve Heffernan 1f06a0c6b3 Merge pull request #826 from dsteinbrunner/patch-3
another bad player api link
2013-11-12 18:32:14 -08:00
Steve Heffernan 2f716cddf4 Merge pull request #825 from dsteinbrunner/patch-2
Fixing broken link with what I think it the correct one
2013-11-12 18:30:11 -08:00
David Steinbrunner d653c25025 another bad player api link 2013-11-08 09:42:36 -05:00
David Steinbrunner c2abbb7568 Fixing broken link with what I think it the correct one 2013-11-08 09:39:29 -05:00
Steve Heffernan 9662736766 Updated docs with recent changes 2013-11-05 17:12:20 -08:00
Steve Heffernan b6c902a7b3 Updated doc comments per comments on #801 2013-11-05 17:09:46 -08:00
Steve Heffernan 5308dd41d2 Fixed changelog version 2013-11-04 16:15:15 -08:00
Steve Heffernan 4e216cdddb Bump version to 4.3.0 2013-11-04 16:14:04 -08:00
Steve Heffernan 847472f286 Rotating CHANGELOG 2013-11-04 16:12:11 -08:00
Steve Heffernan df7c91ad92 Generated new API docs 2013-11-04 16:03:51 -08:00
Steve Heffernan 10c3e46e95 Updated demo.html to have a subtitles example. Added demo to CDN. 2013-11-04 15:35:44 -08:00
Steve Heffernan 48f6332f78 Updated to the latest version of the swf 2013-11-04 15:29:32 -08:00
Steve Heffernan d9bb81018b Merge branch 'master' of github.com:videojs/video.js 2013-11-04 15:18:31 -08:00
Steve Heffernan 4e0128bb3d Switched default spinner icon 2013-11-04 15:18:21 -08:00
Steve Heffernan 6c1adb79d2 Merge pull request #812 from nickarnold/bugfix-811
Loadeddata event doc fix. Fixes #811
2013-10-31 11:18:45 -07:00
Nick Arnold 7ee2f864b3 Add missing onLoadedData handler prototype. 2013-10-31 11:37:54 -06:00
Steve Heffernan c85d94a2ce Adding line to CHANGELOG 2013-10-29 11:01:12 -07:00
Matthew McClure 4c6a12898b Close GH-805: Flash - ignore codec info - added tests for #785. 2013-10-29 11:00:54 -07:00
Steve Heffernan 6e3eb5075e Adding line to CHANGELOG 2013-10-28 18:26:13 -07:00
Steve Heffernan f318eb9f1f Close GH-801: API Doc Generation 2. Fixes #747 2013-10-28 18:25:28 -07:00
Steve Heffernan 9bfbceb047 Updated grunt file to point to new CDN font folder 2013-10-17 16:38:13 -07:00
Steve Heffernan c56e6ed37c Adding line to CHANGELOG 2013-10-17 16:28:45 -07:00
Matthew McClure 7a8d808b0e Close GH-784: New loading icons and class to center big play button. 2013-10-17 16:28:21 -07:00
Steve Heffernan 124c62fe24 Adding line to CHANGELOG 2013-10-17 16:07:44 -07:00
Matthew McClure ba20239147 Close GH-783: Export userActive and reportUserActivity. 2013-10-17 16:07:33 -07:00
Steve Heffernan 0c4ab0b449 Adding line to CHANGELOG 2013-10-17 16:06:39 -07:00
J. Tangelder e0794cf4b4 Close GH-777: Fix aria-label big-play-button. 2013-10-17 16:06:16 -07:00
Steve Heffernan 3203c2c5ed Merge branch 'stable' 2013-10-15 13:39:32 -07:00
Steve Heffernan 9ec2556a7c Bump version to 4.2.2 2013-10-15 13:39:30 -07:00
Steve Heffernan d3efe4b04c Rotating CHANGELOG 2013-10-15 13:39:29 -07:00
Steve Heffernan f35ae5c44f Adding line to CHANGELOG 2013-10-15 13:39:27 -07:00
Steve Heffernan 14193c4308 Close GH-776: hotfix: source and duration loading after video element init. Fixes #756, Fixes #775 2013-10-15 13:38:48 -07:00
Steve Heffernan 1bef68a60b Merge pull request #774 from gkatsev/touch
Expand TOUCH_ENABLED and expose it publically
2013-10-10 13:09:55 -07:00
Gary Katsevman e37e870d42 Make sure that vjs.TOUCH_ENABLED is a boolean 2013-10-10 11:47:58 -04:00
Gary Katsevman c5a8cff129 Expand TOUCH_ENABLED and expose it publically 2013-10-09 15:32:01 -04:00
Steve Heffernan 61bc016637 Merge pull request #773 from mmcc/add-shiv-setup
Add instructions for creating your own shiv to setup
2013-10-08 13:06:25 -07:00
Matthew McClure acf41c4882 used "simply" too much 2013-10-08 11:53:15 -07:00
Matthew McClure da3550a6d8 added shiv instructions to setup 2013-10-08 11:51:01 -07:00
Steve Heffernan 3640623147 Merge pull request #680 from clayallsopp/docs_change
Change setup doc URLs to respect current protocol
2013-10-04 09:17:13 -07:00
Steve Heffernan a6198efaca Adding line to CHANGELOG 2013-10-01 17:55:18 -07:00
Jon f07caa2b97 Close GH-720: unmute if the user drags the volume bar slider. 2013-10-01 17:54:59 -07:00
Steve Heffernan 2662ad9c96 Adding line to CHANGELOG 2013-09-19 09:24:22 -07:00
BCJwhisenant 13dbf23c3c Close GH-714: Added support for running tests with Karma. 2013-09-19 09:24:06 -07:00
Steve Heffernan b2098e0efe Merge branch 'stable' 2013-09-09 12:21:53 -07:00
Steve Heffernan faea65a44e Bump version to 4.2.1 2013-09-09 12:21:51 -07:00
Steve Heffernan 50adf355af Rotating CHANGELOG 2013-09-09 12:21:51 -07:00
Steve Heffernan 1d05177627 Adding line to CHANGELOG 2013-09-09 12:21:47 -07:00
Jon Mumm a94259cc73 Close GH-727: Fixed windowLoaded not setting on async script load. Fixes #727 2013-09-09 12:21:00 -07:00
Steve Heffernan a49213e20c Removed sourcemap from compiled output. fixes #712 2013-09-05 13:03:16 -07:00
Steve Heffernan 7b73c2725e Added back in reverted #630 2013-09-04 13:33:27 -07:00
Steve Heffernan 8f53e514de Merge branch 'stable' of github.com:videojs/video.js into stable 2013-09-04 13:30:36 -07:00
Steve Heffernan c39dd5567e Fixed changelog version 2013-09-04 13:30:28 -07:00
Steve Heffernan 8e9db2d662 Rotating CHANGELOG 2013-09-04 13:28:12 -07:00
Steve Heffernan 52c577995c Bump version to 4.2.0 2013-09-04 13:26:45 -07:00
Steve Heffernan efe7a12ccb Fixed IE8 tests and flaky fonts 2013-09-04 11:48:19 -07:00
Steve Heffernan f146ebb179 Fixed the getAttributes test in ie8, which reports all attrs, whether or not they were set 2013-09-03 11:27:50 -07:00
Steve Heffernan 72bf48cf36 Fixed the custom fallback message test which would break when ie8 capitalized tag names 2013-09-03 10:48:48 -07:00
Steve Heffernan e6ecbfe824 Added a line to the changelog 2013-08-27 13:13:07 -07:00
Steve Heffernan 0ccb6dd156 Removed spinner gradient to improve performance 2013-08-27 13:11:08 -07:00
Steve Heffernan 62b4f799b9 Merge branch 'spinner-fixes' of git://github.com/ChALkeR/video.js into ChALkeR-spinner-fixes 2013-08-27 12:53:46 -07:00
Steve Heffernan bd789b8613 Added a line to the changelog 2013-08-27 10:27:41 -07:00
Steve Heffernan 4772e4680b Merge branch '636-incompatible' of git://github.com/jelbourn/video.js into jelbourn-636-incompatible
Conflicts:
	test/unit/player.js
2013-08-27 10:26:32 -07:00
Steve Heffernan 26cc24c59d Merge branch 'export-addremove-class' of git://github.com/theonion/video.js into theonion-export-addremove-class
Conflicts:
	src/js/exports.js
	test/unit/api.js
2013-08-26 16:40:40 -07:00
Steve Heffernan 4bc269992e Adding line to CHANGELOG 2013-08-26 16:31:57 -07:00
Trevor Cook 07351ada80 Close GH-632: Ensure tech is defined before checking tech.isReady_ fixes #631. 2013-08-26 16:31:07 -07:00
Steve Heffernan acb4a43d8a Minor modifications to #627 2013-08-26 16:23:33 -07:00
Steve Heffernan 75dd7c5a3c Adding line to CHANGELOG 2013-08-26 16:14:10 -07:00
David LaPalomento f515ac0236 Close GH-627: Use dashes to format invalid times. 2013-08-26 16:13:54 -07:00
Steve Heffernan 6418531d0c Merge pull request #702 from dmlap/feature/expose-volume-menu
Feature/expose volume menu
2013-08-26 08:54:39 -07:00
Steve Heffernan a04932eaf9 Adding line to CHANGELOG 2013-08-25 19:30:37 -07:00
Steve Heffernan 96f6c2388a Close GH-706: Minor code improvements for lib.js. closes #580. 2013-08-25 19:30:19 -07:00
Steve Heffernan 8721202ec1 Adding line to CHANGELOG 2013-08-25 18:51:24 -07:00
Steve Heffernan 92d16d6409 Close GH-705: Changed tech.feature keys to strings to support external techs. closes #466. 2013-08-25 18:50:59 -07:00
Steve Heffernan 7c2ae3f68c Adding line to CHANGELOG 2013-08-23 15:05:23 -07:00
Jeremy West 7ab3d190f2 Close GH-605: added RTMP support. fixes #559. 2013-08-23 15:05:04 -07:00
David LaPalomento 29668ec45b Fix issue with fractional computed dimensions on Chrome
Chrome 29 on OS X (at least) seems to report fractional dimensions occasionally when integer values are assigned. For example, '123px' might be translated to '123.999998458px'. Parse the value and round it to ignore this slight discrepancy.
2013-08-23 14:16:53 -04:00
David LaPalomento bd18f5b25f Export VolumeMenuButton
Add the volumemenubutton to the list of unminified properties for gcc. Create a test case to verify it doesn't get accidentally removed at some point.
2013-08-23 14:15:58 -04:00
Steve Heffernan 5a6fa37623 Adding line to CHANGELOG 2013-08-19 12:37:38 -07:00
Andrew Abramov e520e1eba4 Close GH-683: gruntfile: removed new line symbol from output_wrapper. fixes #679. 2013-08-19 12:36:43 -07:00
Сковорода Никита Андреевич 2f68bfc7c1 Fix spinner position. 2013-08-19 05:13:40 +04:00
Clay Allsopp 57c576f96c Change setup URLs to respect current protocol 2013-08-11 23:45:07 -07:00
Steve Heffernan acf6d67e0d Updated changelog note 2013-08-09 14:34:20 -07:00
Steve Heffernan d47f78f5d1 Adding line to CHANGELOG 2013-08-09 14:29:52 -07:00
Andy Niccolai 02de927043 Close GH-672: Control bar updates. Fixes #556, Fixes #500, Fixes #374, Fixes #403, Fixes #441, Fixes #193, Fixes #602, Fixes #561, Fixes #281 2013-08-09 14:29:22 -07:00
Jeremy Elbourn 20e2d4e984 Merge branch 'master' of https://github.com/videojs/video.js into 636-incompatible 2013-08-05 14:23:05 -04:00
Jeremy Elbourn ff9165b7da Default incompatibility msg w/ other global options fixes #636 2013-08-05 14:19:20 -04:00
Sean Bloomfield f7a72b1f20 exporting addClass and removeClass. added api existence tests for fadeIn,fadeOut,addClass,removeClass 2013-07-30 15:58:00 -05:00
Steve Heffernan 9030a5655e Revert "Close GH-630: prevent default action for simple html5 media events. fixes #573, fixes #620 (duplicate bug)."
This reverts commit 15544c3d05.
2013-07-30 11:31:33 -07:00
Steve Heffernan 699c476575 Merge pull request #660 from videojs/stable
Close GH-630: prevent default action for simple html5 media events. fixe...
2013-07-30 11:25:07 -07:00
Steve Heffernan b5b0f42888 Adding line to CHANGELOG 2013-07-30 11:12:45 -07:00
Cameron Tangney 15544c3d05 Close GH-630: prevent default action for simple html5 media events. fixes #573, fixes #620 (duplicate bug). 2013-07-30 11:12:30 -07:00
Steve Heffernan 8010b77eb3 Adding line to CHANGELOG 2013-07-30 10:43:27 -07:00
Dominic 15fab6df81 Close GH-654: Export createItems call to enable plugins to hook into process. Fixes #648 2013-07-30 10:43:11 -07:00
Steve Heffernan 89fb86bff7 Adding line to CHANGELOG 2013-07-29 15:49:30 -07:00
Mykhailo Stadnyk 75ff27307d Close GH-643: Fix Player.buffered() to more correct behavior. 2013-07-29 15:48:25 -07:00
Steve Heffernan 1d972a0686 Adding line to CHANGELOG 2013-07-29 15:33:30 -07:00
David Elner 334ff59ff0 Close GH-659: Allow event handlers registered with one() to be removed with off().. Fixes #658 2013-07-29 15:33:10 -07:00
Steve Heffernan a809954495 Exporting component.player. fixes #647 2013-07-29 10:48:10 -07:00
Steve Heffernan 7936d7967d Merge pull request #655 from johneke/master
Add player.dispose() API documentation to api.md
2013-07-29 08:15:43 -07:00
johneke aa64669ca3 Fixed due to feedback from code review
Fixed due to feedback from code review
2013-07-29 11:13:00 -04:00
johneke a726b07538 Add player.dispose() API documentation to api.md 2013-07-25 20:05:28 -04:00
Steve Heffernan ca96297ef9 Adding line to CHANGELOG 2013-07-22 12:14:56 -04:00
Dominic a38ce63474 Close GH-648: Added export for vjs.MenuButton. Fixes #647 2013-07-22 12:14:35 -04:00
Steve Heffernan c8ee76b80e Adding line to CHANGELOG 2013-07-19 20:19:13 -07:00
Steve Heffernan 1eca8add85 Close GH-644: LESS for CSS. 2013-07-19 20:18:39 -07:00
Steve Heffernan 2b1bb60f7e Merge branch 'master' of github.com:videojs/video.js 2013-07-19 10:47:41 -07:00
Steve Heffernan 5aa1ff59b3 Added block quote to readme. 2013-07-19 10:47:30 -07:00
Steve Heffernan 59af460ad4 Merge pull request #639 from eXon/patch-1
Fixed broken link
2013-07-18 16:11:23 -07:00
Jeremy West a449cb043a Close GH-614: added dispose event. fixes #613. 2013-07-18 14:39:14 -07:00
Steve Heffernan 9d424c61f4 Fixed broken on-page link
contribute-code -> contributing-code
2013-07-18 11:48:23 -07:00
Steve Heffernan 91da153c02 Updated readme and contrib guide. closes #645 close #397
With changes from @sh1ps and myself
2013-07-17 17:51:29 -07:00
Steve Heffernan 150facab44 Merge branch 'contrib-guide' of git://github.com/BCjwhisenant/video-js into BCjwhisenant-contrib-guide
Conflicts:
	CONTRIBUTING.md
2013-07-17 17:49:19 -07:00
Benoit Tremblay 3716f3b1f0 Fixed broken link 2013-07-14 11:34:25 -04:00
Jeremy Elbourn 918ee040e1 Allow setting a custom incompatible video message. fixes #636 2013-07-12 16:05:25 -04:00
BCJwhisenant 1c606779c3 Removed an extraneous section at the bottom about Pull Requests.
(since we recommend further up the page to use contribflow)
2013-07-10 12:05:38 -04:00
Steve Heffernan fdf7f4f228 Bump version to 4.1.0 2013-06-28 15:58:25 -07:00
Steve Heffernan c82611d506 Rotating CHANGELOG 2013-06-28 15:56:43 -07:00
Steve Heffernan ed8ed4dd94 Merge branch 'stable' into release/4-1
Conflicts:
	CHANGELOG.md
	contrib.json
	src/js/cdn.js
2013-06-28 15:48:33 -07:00
Steve Heffernan 9f647ef081 Fixed an issue where the tag player reference wasn't getting killed in the minified version 2013-06-28 15:42:47 -07:00
Steve Heffernan c616695e4d Fixed an issue where tag was undefined in iOS 2013-06-28 15:02:21 -07:00
Steve Heffernan 52751a0d67 Adding line to CHANGELOG 2013-06-28 13:07:05 -07:00
Steve Heffernan ffd308e305 Close GH-609: Captions fixes. Fixes #564, Fixes #542 2013-06-28 13:06:50 -07:00
Steve Heffernan b4a07a3d9d Adding line to CHANGELOG 2013-06-28 13:04:00 -07:00
Steve Heffernan db97df69dc Close GH-606: Fix IE9 canPlayType error. Fixes #519 2013-06-28 13:03:38 -07:00
BCJwhisenant 8f45f93c84 A small substitution 2013-06-27 15:21:19 -04:00
BCJwhisenant b6667dfaf6 changes to the contrib guide, based on Apurva's review. 2013-06-27 15:08:10 -04:00
Steve Heffernan 23fc4cca35 Adding line to CHANGELOG 2013-06-26 15:06:10 -07:00
Gary Katsevman 00a043f1e1 Close GH-470: Augment userAgent detection. 2013-06-26 15:05:50 -07:00
BCJwhisenant 9abe53a32e updated the contrib guide to use contribflow commands
fixed a typo
2013-06-26 16:02:34 -04:00
Steve Heffernan 8e5cf7a69d Fixed up some changelog issues 2013-06-24 13:00:19 -07:00
Steve Heffernan fd39878f8b Adding line to CHANGELOG 2013-06-24 12:48:11 -07:00
Steve Heffernan 1ddef27903 Close GH-588: Export bufferedPercent. 2013-06-24 12:47:47 -07:00
Steve Heffernan 19a33cc7c7 Adding line to CHANGELOG 2013-06-24 12:38:30 -07:00
Jon Zepernick 02a1057ff4 Close GH-593: When autoplay = true, delete tag.poster instead of setting to null. 2013-06-24 12:38:05 -07:00
Steve Heffernan a040ce61ad Adding line to CHANGELOG 2013-06-24 12:08:30 -07:00
Sean Bloomfield 042076043b Close GH-581: export Component.prototype.fadeIn/Out. 2013-06-24 12:07:39 -07:00
Steve Heffernan 38d119e75d Merge pull request #585 from fluf1024/patch-1
Changed VideoJS -> videojs in api.md
2013-06-24 11:40:39 -07:00
fluf1024 93c6645744 Changed VideoJS -> videojs in api.md
I think, it's the proper name of the component in the default set.
2013-06-20 08:13:02 +02:00
Steve Heffernan 85c6b46ec8 Merge pull request #576 from Mikhus/master
Some minor code improvements
2013-06-17 11:19:41 -07:00
mstadnyk 1e199da117 Code guidelines fixed 2013-06-17 01:02:29 +03:00
mstadnyk 3a40dcd883 Several minor code improvements.
Actually, tracks.js contains several pieces of code which could
be re-written more effectively. The problem is that in some places
there are conditional checks like this:

    if (condition) {
        call_setter( true);
    } else {
        call_setter( false);
    }

which could be re-written to:

    call_setter( condition);

This improvement saves some bytes of code length, traffic and should
also work more effectively by utilizing less machine resources
2013-06-17 00:18:21 +03:00
Steve Heffernan afc39f711f Normalized CDN language value 2013-06-12 14:44:14 -07:00
Steve Heffernan 8a728a80ac Added uglifyjs which somehow got dropped from #571 2013-06-11 15:35:14 -07:00
Steve Heffernan d932cffd50 Added line to changelog for 4.0.4 2013-06-11 15:29:20 -07:00
Steve Heffernan 6fe5513f30 Bump version to 4.0.4 2013-06-11 15:27:49 -07:00
Steve Heffernan 138b1381c2 Adding line to CHANGELOG 2013-06-11 15:25:40 -07:00
Steve Heffernan 60d389e1f8 Close GH-571: Add analtyics to current CDN version. Fixes #568 2013-06-11 15:25:19 -07:00
Steve Heffernan 93e3b38132 Adding line to CHANGELOG 2013-06-11 15:15:26 -07:00
Steve Heffernan b02f879bf3 Close GH-568: Google Analytics Tracking for CDN. 2013-06-11 15:14:36 -07:00
Steve Heffernan 9997d0a7ef Merge pull request #570 from nsufaisal/patch-1
Update api.md
2013-06-11 10:02:58 -07:00
nsufaisal 3dd0b1d234 Update api.md 2013-06-11 20:49:21 +06:00
Steve Heffernan d27c3102e9 Adding line to CHANGELOG 2013-06-05 10:28:13 -07:00
Steve Heffernan d5d97bd64f Close GH-560: Export global players object. 2013-06-05 10:27:38 -07:00
Steve Heffernan 0ddf8af452 Adding line to CHANGELOG 2013-06-03 13:20:47 -07:00
Steve Heffernan f6bd819c5c Close GH-555: Export requestFullScreen(). 2013-06-03 13:19:46 -07:00
Steve Heffernan 21cd77358a Adding line to CHANGELOG 2013-05-31 16:09:34 -07:00
Steve Heffernan 847e392e0c Close GH-524: Blocking user text selection by default on player components. fixes #46. 2013-05-31 16:09:07 -07:00
Steve Heffernan 8799984a8c Adding line to CHANGELOG 2013-05-31 10:31:57 -07:00
Steve Heffernan 0c4c30a3bd Close GH-553: Turn on tech method queuing. 2013-05-31 10:31:18 -07:00
Steve Heffernan 4db3dba068 Updated contrib.json to match new contribflow values 2013-05-31 09:50:16 -07:00
Steve Heffernan 46731c40c3 Merge branch 'master' of github.com:videojs/video.js 2013-05-31 09:48:18 -07:00
Steve Heffernan 5bc5c40f8a Updated changelog to match new contribflow template 2013-05-31 09:48:02 -07:00
Steve Heffernan d5fe1c40d8 Merge pull request #547 from DracoLi/patch-1
Updated API, changed `size` to `dimensions`
2013-05-29 10:47:01 -07:00
Draco Li 6251acdf56 Updated API, changed size to dimensions
There's no `size()` only `dimensions()`, so updated API to reflect this.
2013-05-29 12:03:40 -03:00
Steve Heffernan 0f21f86521 Merge branch 'stable' 2013-05-28 15:33:31 -07:00
Steve Heffernan ed5ac285c3 Adding line to CHANGELOG 2013-05-28 15:33:09 -07:00
Steve Heffernan 880be64f48 Bump version to 4.0.3 2013-05-28 15:31:11 -07:00
Steve Heffernan 753ce48e21 Close GH-546: Fix for exit-fullscreen bug in 4.0. fixes #497. 2013-05-28 15:29:42 -07:00
Philippe Normand 6b4d811b2f Close GH-515: createEl: dispose reference to cloned element. Fixes #514 2013-05-23 18:40:14 -07:00
Steve Heffernan baac2af4ab Merge branch 'stable' 2013-05-23 13:15:18 -07:00
Steve Heffernan 731ec4fa0b Adding line to CHANGELOG 2013-05-23 13:14:43 -07:00
Steve Heffernan 8dd88d1626 Bump version to 4.0.2 2013-05-23 13:12:43 -07:00
Steve Heffernan 0fe7348456 Close GH-535: Adding version numbers in build. Minifying CSS.. 2013-05-23 13:10:29 -07:00
Steve Heffernan a7dd81f82f Merge branch 'stable' 2013-05-22 18:36:12 -07:00
Steve Heffernan d4168cd2b6 Adding line to CHANGELOG 2013-05-22 18:34:50 -07:00
Steve Heffernan 36c92404c3 Bump version to 4.0.1 2013-05-22 18:16:13 -07:00
Steve Heffernan 1f23529cf0 Merge branch 'stable' 2013-05-22 17:25:12 -07:00
Steve Heffernan 68d5cb996a Close GH-532: Added ie fix to font loading.. 2013-05-22 17:01:55 -07:00
Steve Heffernan fe36ae172d Updated contrib.json to have org and project names. 2013-05-20 16:34:57 -07:00
Steve Heffernan a6a443bac3 Updated contrib.json to use new videojs org 2013-05-20 16:02:31 -07:00
Steve Heffernan b3d4ed6459 Added date to changelog 2013-05-20 15:02:26 -07:00
Steve Heffernan f4ac570297 Updated to new changelog layout. Deleted changelog2 test file. 2013-05-20 14:57:48 -07:00
Steve Heffernan 8c31278c2f Merge branch 'master' into stable 2013-05-20 13:27:47 -07:00
Steve Heffernan 623ea7bb0f Merge pull request #506 from martinduparc/patch-1
"addEvent" and "removeEvent" were replaced by "on" and "off"
2013-05-11 09:42:52 -07:00
Martin D. 9e65eb3618 "addEvent" and "removeEvent" were replaced by "on" and "off" 2013-05-11 08:18:16 -03:00
Steve Heffernan 0e4f3cfa08 Merge pull request #504 from dblandin/master
Update uncompressed default skin url
2013-05-10 10:41:29 -07:00
Devon Blandin c6c8cd1bd2 Update uncompressed default skin url 2013-05-10 12:34:36 -05:00
Steve Heffernan 07000db77d Updated swf location from /c to /4.0 2013-05-09 09:28:14 -07:00
Steve Heffernan 94c07756dc Updated docs. Changed _V_ to videojs. 2013-05-09 09:23:32 -07:00
Steve Heffernan 18c3853039 Merge pull request #495 from heff/feature/deploy
Feature/deploy
2013-05-08 22:37:07 -07:00
Steve Heffernan c59275583c Created a new deploy process for the new version 2013-05-08 22:30:52 -07:00
Steve Heffernan 65f4f1da96 Updated the font names to be shorter for the cdn. 2013-05-08 14:27:57 -07:00
Steve Heffernan 3acdb497d1 Updated version back to 4.0 2013-05-08 14:15:41 -07:00
Steve Heffernan 6c75c5ea34 Merge branch 'master' of git://github.com/videojs/video.js into feature/deploy
Conflicts:
	package.json
	src/css/video-js.css
2013-05-08 14:15:19 -07:00
Steve Heffernan d40bcc617d Updated deploy process and font icons. 2013-05-08 14:12:22 -07:00
Steve Heffernan 32519181c8 Merge pull request #493 from sh1ps/theme-changes
Style updates and updated license link in package.json
2013-05-08 14:11:39 -07:00
Matthew McClure 6eac0a44c4 added font files 2013-05-08 14:01:39 -07:00
Matthew McClure 55e2c99899 removed styles from pseudo elements to make broad styling possible. updated copyright link in package.json 2013-05-08 13:29:02 -07:00
Steve Heffernan 199b8f29da Bumped package version to 4.0.0 2013-05-06 11:45:42 -07:00
Steve Heffernan c02e1a4a99 Merge pull request #491 from heff/feature/fullscreen-fix
Triggering fullscreenchange again to fix fullscreen button status. fixes #388
2013-05-06 10:48:19 -07:00
Steve Heffernan d1def0bcca Triggering fullscreenchange again to fix fullscreen button status. fixes #388 2013-05-06 10:44:59 -07:00
Steve Heffernan 90ac799d57 Testing new changelog options 2013-05-06 10:24:18 -07:00
Steve Heffernan 7cc733a8df Rotating CHANGELOG 2013-05-03 23:05:33 -07:00
Steve Heffernan a799a506f4 Merge pull request #489 from heff/feature/position-fix
Fixed vjs.findPosition. fixes #488
2013-05-03 12:51:24 -07:00
Steve Heffernan d395f6e684 Fixed vjs.findPosition. fixes #488 2013-05-03 12:49:55 -07:00
Steve Heffernan 886d555a47 Merge pull request #487 from heff/feature/clean-files
Broke up controls.js into multiple files.
2013-05-02 19:06:54 -07:00
Steve Heffernan 05ab972a1a Broke up controls.js into multiple files.
Cleaned up media.js files also.
2013-05-02 19:03:29 -07:00
Steve Heffernan 997b327fcd Merge pull request #486 from heff/feature/no-controls
Make controls = false work as expected
2013-05-02 18:39:51 -07:00
Steve Heffernan 64f7729b72 Added a disable method on components.
Used it to hide the controls when player.controls is false.
Also hiding big play button and poster if controls are false.
2013-05-02 18:35:32 -07:00
Steve Heffernan d54f473670 Wrote a test for controls changes. 2013-05-02 17:15:37 -07:00
Steve Heffernan 4f319a2174 Fixed muted errors in tests from previous pull request. Removed error captureing that was preventing test breakage. 2013-05-02 17:07:05 -07:00
Steve Heffernan 0f115df0b6 Merge pull request #485 from heff/feature/swf
Updated to latest version of the swf. closes #390 closes #435
2013-05-02 15:54:29 -07:00
Steve Heffernan 6d1afd059f Updated to latest version of the swf. closes #390 closes #435 2013-05-02 15:52:15 -07:00
Steve Heffernan 78ec7f0f16 Merge pull request #482 from gkatsev/verticalVolumeMenu
Make Volume Menu Button default to vertical.
2013-05-02 15:20:44 -07:00
Gary Katsevman 5dc9c0f2ae Make volumeBar return 0% when muted. 2013-05-02 18:14:11 -04:00
Gary Katsevman 89b6f42e99 Make Volume Menu Button default to vertical.
This can be configured by giving the volumeMenuButton, an option like
`{volumeBar: {vertical: false}}`. This can also be used to pass other
options to the volumeBar.
2013-05-02 16:54:09 -04:00
Steve Heffernan b2539cb1ea Merge pull request #472 from drench/351-localStorage-catch
Catch localStorage security exceptions. Fixes #351
2013-05-01 16:33:07 -07:00
Steve Heffernan beb3a94135 Merge pull request #471 from sh1ps/master
Switched license from LGPLv3 to Apache2.0
2013-05-01 16:29:10 -07:00
Steve Heffernan f42c96e012 Updated to use vjs.USER_AGENT string. 2013-05-01 16:20:41 -07:00
Steve Heffernan 9c6dbea344 Merge pull request #469 from dmlap/android-fullscreen-pr
Android browsers support video element fullscreen
2013-05-01 16:18:19 -07:00
Steve Heffernan fa79564802 Merge pull request #477 from gkatsev/verticalSlider
Vertical slider
2013-05-01 16:13:00 -07:00
Steve Heffernan e21dd3649c Merge pull request #481 from heff/feature/skin
Updated to new skin design
2013-05-01 15:59:51 -07:00
Steve Heffernan c2f8930e99 Updated controls to not show by default. 2013-05-01 15:35:59 -07:00
Steve Heffernan fb603745dc Fixed some styles and menu element buildling. 2013-05-01 15:31:44 -07:00
Steve Heffernan 4faa411ece Added new CSS. Fixed slider classname issue. 2013-05-01 14:49:37 -07:00
Steve Heffernan 7ea76951c6 Updated track buttons to use new menu buttons class. 2013-05-01 14:39:00 -07:00
Steve Heffernan 5172875afb Updated player to use native controls on mobile devices. 2013-05-01 13:56:09 -07:00
Steve Heffernan 0633a93837 Removed multi-ball-specific spinner code. 2013-05-01 13:48:54 -07:00
Steve Heffernan c548229e73 Added volumeMenubutton class 2013-05-01 13:46:05 -07:00
Steve Heffernan e47850a152 Updated seekhandle and volume handle to use slider handle. 2013-05-01 13:34:40 -07:00
Steve Heffernan ae49f1efc8 Added a class to the button inner div. 2013-05-01 13:14:30 -07:00
Gary Katsevman fc96ef68ac fix jshint errors 2013-05-01 13:02:05 -04:00
Gary Katsevman b36665ebcd Add a few tests for vjs.findPosition 2013-05-01 12:03:10 -04:00
Gary Katsevman 9acacaac37 Null check gBCR 2013-05-01 12:02:51 -04:00
Steve Heffernan c92991e2fc Merge pull request #480 from heff/feature/menu
Added a menu button class as a super class to the track buttons and a vo...
2013-04-30 19:07:15 -07:00
Steve Heffernan 99373ce4b6 Added a menu button class as a super class to the track buttons and a volume button 2013-04-30 19:00:14 -07:00
Steve Heffernan 9c6c384704 Merge pull request #479 from heff/feature/slider
Added a new Slider Handle class to share code between subclass sliders
2013-04-30 18:17:54 -07:00
Steve Heffernan e7fa682976 Added a new Slider Handle class to share code between subclass sliders
Also added a click preventDefault to protect from triggering parent menu buttons.
2013-04-30 18:10:38 -07:00
Steve Heffernan d270a16b32 Merge pull request #478 from heff/feature/content-el
Added an optional contentEl for compontents.
2013-04-30 17:45:58 -07:00
Steve Heffernan f0d3680fe4 Added an optional contentEl for compontents.
This allows you to define a different element to append children to as opposed to the main component element. Because sometimes components require more than one element to create their structure. e.g. a menu button.
2013-04-30 17:27:36 -07:00
Gary Katsevman ff56061853 Make sure to return an object if box doesn't exist 2013-04-30 19:18:21 -04:00
Gary Katsevman 0154d04535 Make sliders able to handle vertical sliders in calculateDistance.
This takes a 'vertical' option on the slider bar itself. If set, it will
use the top and pageY values to calculate the slider positions.
2013-04-30 19:02:49 -04:00
Gary Katsevman 22bbd00ac9 Change vjs.findPosX to vjs.findPosition to return both left and top.
This also removes the fallback method that doesn't use the
getBoundingClientRect because according to MDN[1] and PPK[2], it should
be supported just about everywhere.

[1] https://developer.mozilla.org/en-US/docs/DOM/element.getBoundingClientRect#Browser_compatibility
[2] http://www.quirksmode.org/dom/w3c_cssom.html#documentview
2013-04-30 18:59:02 -04:00
Steve Heffernan 04feef9303 Merge branch 'issue424-pr' of git://github.com/dmlap/video-js into dmlap-issue424-pr
Conflicts:
	src/js/media.html5.js
2013-04-29 16:10:37 -07:00
Steve Heffernan c7823ceb68 Merge pull request #475 from gkatsev/fix/androidBrowser2
Dont enable onClick play state toggling on android via the MediaTechController
2013-04-29 15:25:34 -07:00
Gary Katsevman 85cf34017a forgot a semicolon >.< 2013-04-29 18:12:32 -04:00
Gary Katsevman a681d172f2 Dont enable onClick play state toggling on android via the MediaTechController 2013-04-29 17:54:21 -04:00
Steve Heffernan 8c52d02c21 Merge pull request #468 from mente/fullscreen
fixes fullscreen using html5 technology
2013-04-29 13:52:28 -07:00
David LaPalomento 7fab906843 Remove xEnterFullScreen fallback
Only the video element supports enterFullScreen() so don't use it as a fallback if requestFullScreen isn't available.
2013-04-29 14:44:07 -04:00
Danny Rench 90f975c20e Catch localStorage security exceptions. Fixes #351 2013-04-28 19:53:28 -05:00
Matthew McClure 247a725cad added license to readme 2013-04-28 17:35:21 -07:00
Matthew McClure 016e94f889 Merge remote-tracking branch 'upstream/master' 2013-04-28 17:34:08 -07:00
David LaPalomento 8524ad9817 Android browsers support video element fullscreen
Modify the UA check in media.html5 for whether a video element supports enterFullScreen to return true for Android WebKit/Chrome browsers.
2013-04-26 12:38:48 -04:00
Alex Vasilenko 01104ef2a4 fixes fullscreen using html5 technology 2013-04-26 18:52:23 +03:00
Steve Heffernan 7199b91f4d Merge pull request #459 from gkatsev/issue/fixEvents
Make preventDefault and stopPropagation call the corresponding methods on the actual event
2013-04-25 12:29:53 -07:00
Steve Heffernan 623bb75267 Merge pull request #458 from gkatsev/lockShowing
Make lockShowing apply a css class instead of modifying styles directly....
2013-04-25 12:29:28 -07:00
Gary Katsevman 83b007504f Make vjs-lock-showing less specific but with display !important 2013-04-25 15:13:23 -04:00
David LaPalomento 9576710b2f Update minify task to work with grunt-cli 0.1.6
It looks like the newer version of grunt-cli has changed how options objects are forwarded to tasks. The minify (Google closure compiler) task was looking for configuration in the wrong location and the new location no longer automatically expanded path wildcard patterns.
2013-04-23 10:45:05 -04:00
Matthew McClure 07d90fb6e0 grunt now adds copyright comment to top of video.js 2013-04-22 18:48:34 -07:00
David LaPalomento 7d67abdae8 Activate the video element when video-level fullscreen is requested. Fix #424
Prime the video element for programmatic access by quickly playing and pausing when entering fullscreen. Only attempt this if the video is paused and no content has been loaded yet. Do so in a setTimeout of 0 because iOS 6.1 devices go into a loop of continuously pausing and playing if you play and pause synchronously while attempting to enter fullscreen. Don't fire `fullscreenchange` if we're forced to use the video elements fullscreen mode because we don't properly detect when exiting fullscreen and it leaves the player stretched out to fill the entire browser window when the user returns from watching.
2013-04-22 18:45:42 -04:00
Gary Katsevman c4d07c402d Make preventDefault and stopPropagation call the corresponding methods on the actual event 2013-04-22 17:23:20 -04:00
Gary Katsevman c0726d20f0 Make lockShowing apply a css class instead of modifying styles directly. Adress #427 2013-04-22 16:07:41 -04:00
Steve Heffernan f81b369955 Merge pull request #457 from gkatsev/fix/calculateDistance
Fix calculateDistance on slider to work in iframes and all devices.
2013-04-22 11:26:51 -07:00
Steve Heffernan 229f5028e1 Merge pull request #456 from gkatsev/feature/issue448
Add videojs to window directly. Fix #448
2013-04-22 11:24:05 -07:00
Steve Heffernan 8494080c90 Merge pull request #454 from dmlap/issue453
Move html tech feature detection earlier than superclass constructor. Fix #453
2013-04-22 11:23:28 -07:00
Steve Heffernan ea792587d5 Merge pull request #449 from eXon/master
Let external libs use the extend
2013-04-22 11:20:50 -07:00
Gary Katsevman a8e87f80ed Make slider use changedTouches if available. Also, test to make sure we get the correct ratio for calculateDistance 2013-04-22 13:57:42 -04:00
Gary Katsevman b1b0ac0377 Add videojs to window directly. Fix #448 2013-04-22 11:32:17 -04:00
Matthew McClure 953ae8abec Added copyright banner to top of distribution video.js 2013-04-21 22:44:36 -07:00
Matthew McClure 23c647eecb switched license over from LGPLv3 to Apache2 2013-04-21 20:36:44 -07:00
David LaPalomento 99c982c103 Move html tech feature detection earlier than superclass constructor
The MediaTechController calls createEl during its initialization to construct the actual video element used for playback. On iOS, the video element must be recreated during this process so that it doesn't become unresponsive. Make sure that we determine whether recreating the video elemen is necessary before calling the superclass constructor.
2013-04-19 20:14:48 -04:00
Steve Heffernan 5ff2b1d061 Merge pull request #450 from gkatsev/feature/iife-wrapper
Make the minified output be wrapped in an IIFE, fix #402.
2013-04-18 14:02:49 -07:00
Gary Katsevman c172ed715b Make the minified output be wrapped in an IIFE, fix #402. 2013-04-18 15:27:14 -04:00
Benoit Tremblay fd798f3dac Fix script after video DOM
You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)
2013-04-18 00:49:59 -03:00
Benoit Tremblay 7a0155aa03 Check the unobfuscated init so we can extend outside the lib 2013-04-17 23:07:04 -03:00
Steve Heffernan a73f0ab6f0 Updated event fixing to support IE8 and Firefox 2013-04-16 16:25:12 -07:00
Steve Heffernan bdb4456c62 Fixed an issue where Firefox would lose the type of an event.
Because it returns false for event.hasOwnProperty('type');
2013-04-16 15:58:57 -07:00
Steve Heffernan 83553b6540 Merge pull request #444 from heff/feature/browser-tests
First pass at automated multi-browser/device testing. closes #419
2013-04-15 13:25:22 -07:00
Steve Heffernan 3b48be921e First pass at automated multi-browser/device testing. closes #419
I've got a way to run tests across every browser and device out there except for IE8, and IE8 should work except I'm running into a Browserstack bug that I've let them know about.

It uses a project called bunyip, which internallt uses Yeti (YUI), Pagekite, and Browserstack.

Next steps include:
  - Making it all automatic. Right now you have to wait for browsers to connect and then manually hit enter when they have.
  - Make it a grunt task
  - Document it all so others can use it

I think this is close enough for me to close the milestone 4.0 issue.
2013-04-12 16:51:04 -07:00
Steve Heffernan 2138d4f2a0 Close GH-425: Backing out goog.inherits and adding back the previous inheritance API. fixes #415. 2013-04-09 13:43:35 -07:00
Benoit Tremblay 3a32f44f23 Close GH-432: Additional exports for external techs. 2013-04-09 13:18:55 -07:00
Steve Heffernan c74f39318f Updated grunt and grunt-contrib versions to fix PhantomJS bug
Also changed some additional code to fix new jshint issues found by new jshint version.
2013-04-09 10:42:41 -07:00
Steve Heffernan 0aa814fae7 Fixed another issue blocking the play event from triggering in Flash 2013-04-08 19:20:53 -07:00
Steve Heffernan 896d0333c7 Fixed a bug where play event was no longer being triggered. 2013-04-08 18:53:19 -07:00
Steve Heffernan dbd02fb05a Close GH-437: Made IE updates from CorwinT. Closes #309. Closes #364.. 2013-04-08 16:23:41 -07:00
Steve Heffernan bafaf49e7e Close GH-433: Update contribflow version and add contrib.json. 2013-04-08 13:55:50 -07:00
Steve Heffernan 78a74536e5 Merge pull request #360 from mente/minified
correctly expose ready and dispose in minified version
2013-04-05 15:04:21 -07:00
Steve Heffernan a59822065d Merge pull request #417 from RavWar/controls_css_rework
Lock controls when video is paused
2013-04-05 14:56:01 -07:00
Alex Vasilenko 6e5407596e run grunt test only for travis 2013-04-06 00:14:12 +03:00
Alex Vasilenko 2ff8a2bba2 minify both source and tests for test grunt task 2013-04-06 00:12:41 +03:00
Steve Heffernan 496fa982e0 Merge pull request #426 from dmlap/feature/poster-attribute
Do not remove poster attribute when creating the player
2013-04-04 16:03:25 -07:00
David LaPalomento 6f5e49fc16 Use accessors to transfer the poster attribute
When transferring the poster attribute from the container to the tech in mediafaker, use the accessor methods instead of directly referencing the private properties.
2013-04-04 18:56:52 -04:00
Steve Heffernan a9352922d9 Merge pull request #399 from dmlap/issue398
Fix #398
2013-04-04 13:02:43 -07:00
Steve Heffernan 1faa39db5b Merge pull request #265 from EricR/patch-1
techOrder should be an array of strings
2013-04-04 12:48:13 -07:00
Steve Heffernan 143e53febc Added isReady = false on unloadTech. fixes #214, fixes #211 2013-04-04 11:06:13 -07:00
David LaPalomento 99a973e529 Do not remove poster attribute when creating the player
We use a div with a background image to simulate the poster image so that we can use a single poster implementation for flash and html. It may be desirable on some platforms to use the native poster image, however. On iPhones for instance, the simulated poster image covers up the native play button and can make it difficult to figure out where to touch to initiate playback. By keeping the poster attribute on the underlying video element, you can hide the simulated poster to get a native look-and-feel on that platform.
2013-04-04 09:55:27 -04:00
Steve Heffernan 6bd4651767 Merge pull request #421 from BCjwhisenant/contrib-guide-node
Fix for #411 - change to CONTRIBUTING.md about phantomjs and Node 0.10.x
2013-04-03 10:37:57 -07:00
Jim Whisenant ece4f7e5e9 Added a note about the known issue between phantomjs and Node 0.10.x 2013-04-02 21:58:37 -04:00
Ravwar baeff8030d Fix controls locking and unlocking functionality by:
1. Switch control bar default hiding styles
2. Fix typos
3. Remove duplicate function
2013-04-03 02:57:59 +04:00
David LaPalomento 65687aa3d0 Rename vjs-disabled to vjs-hidden
Disabled is a bit overloaded with visible but unusable controls, so use hidden instead. Re-arrange default styles a bit and use dom helper methods instead of the vjs-objection functions.
2013-04-02 16:17:30 -04:00
Steve Heffernan f1d957929c Merge pull request #404 from RavWar/fix_exports_duplicates
Remove duplicate code from exports
2013-04-01 16:26:14 -07:00
Steve Heffernan be63a06f54 Merge pull request #410 from dsteinbrunner/patch-1
typo fix
2013-04-01 16:00:40 -07:00
Jim Whisenant 7b7452ff9f added a note to advise users to stick with an earlier version of Node.js until the known issue with phantomjs is fixed.
fixes #477
2013-03-29 18:13:49 -04:00
David Steinbrunner 1e640b9790 typo fix 2013-03-29 17:23:38 -03:00
Steve Heffernan 22c3f47546 Merge pull request #407 from gkatsev/feature/duration-display
Make the Duration Display not display the duration as a negative number
2013-03-27 15:08:40 -07:00
Gary Katsevman e08851a2cc Make the Duration Display not display the duration as a negative number 2013-03-27 14:35:34 -04:00
Ravwar e41472f0e5 Remove duplicate code from exports 2013-03-27 13:43:11 +04:00
Steve Heffernan a703294275 Merge pull request #400 from heff/feature/contrib-flow-plugin
Adding contribflow as grunt module/package
2013-03-25 16:56:52 -07:00
Steve Heffernan e0b2e470f4 Added contribflow as a package. 2013-03-25 16:52:36 -07:00
David LaPalomento cf52750a57 Update tests
Check for the presence of `vjs-disabled` instead of whether the display is set to none for volume and mute control tests.
2013-03-24 18:51:09 -04:00
David LaPalomento e55e5a7313 Fix #398
Use a new CSS class 'vjs-disabled' to disable display of the volume controls. This allows custom styles the flexibility to use methods other than `display:block` to layout the controls.
2013-03-24 17:40:35 -04:00
Steve Heffernan 9b25484a92 Merge pull request #375 from gkatsev/touchevents
Touchevents support for the control bar and seekbar
2013-03-22 14:56:02 -07:00
BCjwhisenant c9bba46846 cleaned up more grammar and syntax. 2013-03-22 14:16:27 -04:00
BCjwhisenant d40c33cf65 another clarification to CONTRIBUTING.md 2013-03-22 14:14:22 -04:00
BCjwhisenant 30949a3c83 more updates to CONTRIBUTING.md 2013-03-22 14:11:03 -04:00
BCjwhisenant 5dbb9aabc7 more changes to the CONTRIBUTING.md guide
added guides for the grunt tasks for feature and issue management
2013-03-22 14:07:21 -04:00
Steve Heffernan 1bf4502766 Merge pull request #389 from tagawa/optimization
Reduced PNG filesize by ~4kb
2013-03-21 14:38:38 -07:00
Steve Heffernan 7c8af82c07 Merge pull request #392 from bitgirder/391-json-error-message
Adding more detail to JSON.parse() error
2013-03-21 14:28:59 -07:00
Gary Katsevman a6578d5a5d Remove changedTouches from fixEvent because it doesn't work currently. Add comment about it in the calculateDistance method 2013-03-20 15:27:42 -04:00
Gary Katsevman 37c463d37a Don't prevent mouse actions when paused to make sure Android's Play overlay is usable. 2013-03-20 15:19:18 -04:00
Gary Katsevman bae6fa1ab4 Remove showBigPlayButton 2013-03-20 15:18:05 -04:00
Jonathan Gold c71203bd56 Adding more detail to JSON.parse() error 2013-03-19 17:32:44 -07:00
BCjwhisenant dc9934b765 Fixed (hopefully) some minor list formatting 2013-03-19 14:03:05 -04:00
BCjwhisenant bf804d5571 Merge commit '80802e68d8f00ac27799a968295b11bd8c8ad19c' into contrib-guide 2013-03-19 13:58:55 -04:00
BCjwhisenant c17d5890d0 clarified some language
added a note about turning off npm colors for windows users
2013-03-19 12:32:13 -04:00
Gary Katsevman 5b324c05e1 Fix indentation 2013-03-19 11:48:13 -04:00
Gary Katsevman 452f9b3971 remove mouseOff 2013-03-19 11:40:09 -04:00
Gary Katsevman da4400f437 remove console.log 2013-03-18 16:36:55 -04:00
Gary Katsevman 9555b80cc0 Make buttons accept tap events as well as click. Prevent mouseevents when touch is available 2013-03-18 16:36:55 -04:00
Gary Katsevman f8706bbffe Make slider touch/mouse events removable 2013-03-18 16:36:55 -04:00
Gary Katsevman 85df20d736 Fix slider for android 2013-03-18 16:36:55 -04:00
Gary Katsevman cbcff6a168 Add { 2013-03-18 16:36:55 -04:00
Gary Katsevman c94ceca337 Make BigPlayButton show up when paused. Add 'showBigPlayButton' event to allow users to cancel that. 2013-03-18 16:36:55 -04:00
Gary Katsevman 57c5cefe0f initial support for toggling controlbar via touch 2013-03-18 16:36:55 -04:00
Gary Katsevman 95e87be2d2 make seekbar seekable on mobile devices. 2013-03-18 16:36:55 -04:00
tagawa 4d74fb3b7c Reduced PNG filesize by ~4kb 2013-03-18 15:28:34 +09:00
BCjwhisenant 80802e68d8 Fixed formatting in some of the instructions 2013-03-15 22:30:25 -03:00
BCjwhisenant ff957fa9f5 changes to the contributing guide. 2013-03-15 21:20:40 -04:00
Steve Heffernan 610974854c Merge pull request #383 from heff/feature/track-default
Adding default to 'off' for track lists from #190
2013-03-15 16:13:19 -07:00
Steve Heffernan 59cdd4edcd Adding default to 'off' on track menus from #190 2013-03-15 16:08:40 -07:00
Steve Heffernan 32755ca855 Merge branch 'master' of git://github.com/zencoder/video-js 2013-03-15 14:03:59 -07:00
Jake Harvey f3af77e985 Close GH-378: #376 Removing Helvetica from font-family declarations.. 2013-03-15 13:52:40 -07:00
Steve Heffernan 8c6138797a Merge branch 'master' of git://github.com/zencoder/video-js 2013-03-09 15:45:09 -08:00
Steve Heffernan 8bc5fb055e Merge branch 'master' of github.com:zencoder/video-js 2013-03-09 13:19:16 -08:00
Steve Heffernan d147b1ae2f Merge branch 'optional_resize' of git://github.com/mente/video-js into mente-optional_resize closes #359
Conflicts:
	test/unit/component.js
2013-03-09 13:18:07 -08:00
Alex Vasilenko a3b9b50e8b vjs.Component.dimension accepts 'auto' as value
test case for vjs.Component.dimension with 'auto'
2013-03-09 10:39:28 +02:00
Steve Heffernan de5acf4fe7 Merge pull request #368 from dmlap/issue367
Fixes #367
2013-03-08 14:45:18 -08:00
David LaPalomento 7e0ee0c799 Fix minified property access
Use a string literal to reference the tech's player property so the access isn't mangled by closure.
2013-03-08 10:13:01 -05:00
David LaPalomento 0ba7166636 Fixes #367
If you are quick, you could get videojs to wrap the HTML video element twice on iOS. The video element has to be recreated after moving on iOS but we weren't re-associating it with the player object. When autoSetup swung through, it would re-initialize the video element and create a player within a player.
2013-03-07 20:57:52 -05:00
Steve Heffernan bc723acb06 Merge pull request #361 from Axonn/fix-component-child-adding
Fix ability to add child after closure compiled
2013-03-07 16:39:18 -08:00
Alex Vasilenko dcc66cb14c recompile sources before starting tests via npm test 2013-03-07 23:32:00 +02:00
Alex Vasilenko e1409f8972 minified lib files renamed to minified api 2013-03-07 23:24:52 +02:00
Alex Vasilenko 264e3aeb38 expose vjs.Component.dispose 2013-03-07 23:23:02 +02:00
Alex Vasilenko 696097ca38 Merge branch 'optional_resize' of github.com:mente/video-js into optional_resize
* 'optional_resize' of github.com:mente/video-js:
  proper vertical-align on default skin
2013-03-07 23:21:23 +02:00
Alex Vasilenko cf2fd9cbe8 use {width: "auto", height: "auto"} to let css decide video dimensions 2013-03-07 23:21:08 +02:00
corwin.tomkinson 93f8737fc7 Fix ability to add child after closure compiled 2013-03-07 11:37:51 +00:00
Steve Heffernan f11c5d3ca9 Merge pull request #340 from Sundrique/fix-parent-el-option
Fix parentEl tech option.
2013-03-06 16:57:40 -08:00
Steve Heffernan eb3f1aca8a Merge pull request #348 from Wellming/master
fix iPhone and iPad detection.
2013-03-06 16:45:51 -08:00
Steve Heffernan 253c510da0 Merge pull request #354 from dmlap/issue347
Fix Issue #347
2013-03-06 16:36:59 -08:00
David LaPalomento 888f04484a Remove phantom UA check
The volume controls and mute toggle are guarding against not having a tech present, so it's no longer necessary to mock the tech for all command-line tests. Individual tests continue to do so using PlayerTest.makePlayer.
2013-03-06 09:45:18 -05:00
David LaPalomento f1e90d65f2 Block defineSetter test for older IE
__defineSetter__ doesn't work on some versions of IE, so just ignore the volume/mute toggle tests when run on those browsers.
2013-03-05 18:07:35 -05:00
Alex Vasilenko 1bceadf094 expose correct dispose method
testcase for correct dispose method
2013-03-05 23:23:01 +02:00
Alex Vasilenko 2de8ad6f63 ready method exposed in minified version
test case for minified lib and not minified code
2013-03-05 22:39:43 +02:00
David LaPalomento ad98bebf55 Reformat var statements
Declare them in a single line at the top of the function and initialize them later.
2013-03-05 13:38:47 -05:00
Alex Vasilenko e4c9588048 proper vertical-align on default skin 2013-03-05 19:02:59 +02:00
Alex Vasilenko 9b52edea07 do not force default 300x150 if no width/height found 2013-03-05 18:35:55 +02:00
Steve Heffernan 29297bd37b Merge pull request #356 from gkatsev/gitignore
add swp files to gitignore
2013-03-04 17:12:44 -08:00
Gary Katsevman 754f590778 add swp files to gitignore 2013-03-04 18:21:11 -05:00
David LaPalomento b662139708 Remove unused variable
Get rid of a variable that was copy-pasted along from a previous incarnation of this fix.
2013-03-04 14:53:27 -05:00
Steve Heffernan f72a90f4a8 Merge pull request #353 from bcjwilson/master
Poster image to stretch both horizontally and vertically while staying centered and maintaining aspect ratio.
2013-03-04 11:22:10 -08:00
David LaPalomento ab25a823b7 Fix 347
Hide volume slider and mute toggle when the current tech doesn't support adjusting video volume. Added controls specific test cases. Volume-related controls retest whether to display themselves whenever `loadstart` fires.
2013-03-02 00:00:23 -05:00
Jim R. Wilson f8385f06d0 changing poster image to div with backgroundImage
The existing poster implementation uses an <img> tag
stretched horizontally with capped max-height. This
works in some cases like pillar-boxing when the poster
is not as wide as the player. However it fails to
letter box when the player is taller than the poster.

This change uses a stretched div with background-image
and backround-size to create a vertically aligned
poster image which stretches in both directions to fit
while maintaining aspect ratio.

For browsers which do not support backgroundSize (IE8)
the original <img> based strategy is used as a fallback.
2013-03-01 17:45:07 -05:00
Steve Heffernan 6a6b46cbcf Merge branch 'master' of git://github.com/zencoder/video-js 2013-02-28 16:37:52 -08:00
Steve Heffernan 3d617476a5 Merge pull request #349 from bcjwilson/master
formatting and spelling connections readme
2013-02-25 15:08:18 -08:00
Jim R. Wilson 50e7fac830 revert excuse-our-dust message back to h3, looked better that way 2013-02-25 17:15:47 -05:00
Jim R. Wilson e005f1a505 normalizing markdown markup, whitespace, spelling 2013-02-25 17:13:58 -05:00
Jim R. Wilson b681af9cf8 sp, gettign->getting 2013-02-25 17:05:04 -05:00
Steve Heffernan 34dfaec5ca Merge branch 'master' of git://github.com/zencoder/video-js 2013-02-24 17:50:55 -08:00
Steve Heffernan 496c699298 Updated to specific version of grunt-contrib-qunit to fix travis CI build errors 2013-02-24 15:20:17 -08:00
Wellming Li c647b436aa fix iPhone and iPad detection. 2013-02-24 17:56:30 +08:00
Steve Heffernan fa29d9ac86 Merge remote-tracking branch 'upstream/master' 2013-02-22 22:56:09 -05:00
David LaPalomento 60f9b505f1 Close GH-346: Remove need for good.require/good.provide. 2013-02-22 22:26:58 -05:00
Steve Heffernan 191a9d671d Merge pull request #345 from Axonn/344-component-exports
Rename component method exports. Fixes #344
2013-02-20 07:45:05 -08:00
corwin.tomkinson 4f18a6bd97 Rename component method exports. Fixes #344 2013-02-20 14:59:22 +00:00
Steve Heffernan 6fffd7e77b Merge pull request #301 from gdkraus/291-accessibility
Accessibility improvements for the player
2013-02-15 16:22:05 -08:00
alexsandrovsky eda21b7b22 Fix parentEl tech option.
Player cannot find parentEl option after minification, so flash tech fails.
2013-02-15 23:31:31 +03:00
Greg Kraus dd9f1603a4 Provide more information to screen reader users about the duration time 2013-02-14 19:27:54 -05:00
Greg Kraus f5b4980718 resolved conflicts with upstream master 2013-02-14 18:11:43 -05:00
Steve Heffernan 4e5a85a24a Merge pull request #297 from ptrin/patch-1
Fixed a broken markdown link
2013-02-13 16:33:21 -08:00
Steve Heffernan 0373d15c2f Merge pull request #314 from Sundrique/313-attributes
313 Save all video tag attributes while moving media element in DOM
2013-02-13 16:27:48 -08:00
Steve Heffernan aa0ea90ee2 Merge pull request #316 from Sundrique/315-fullscreen-icon
315 Fullscreen button CSS rules for webkit and Firefox added
2013-02-13 16:23:10 -08:00
Steve Heffernan 7adede7b68 Merge pull request #320 from Sundrique/poster-visibility-fix
Fix poster component visibility
2013-02-13 16:20:39 -08:00
Steve Heffernan 1905e59bdb Merge pull request #321 from Sundrique/volume-handler-fix
Fix volume handler initial position
2013-02-13 16:19:21 -08:00
Steve Heffernan 2f3ef4099e Merge pull request #328 from BCjwhisenant/gruntfile-fix
Added code to replace Windows-style backslashes with Unix-style
2013-02-13 14:30:47 -08:00
BCjwhisenant 1da6396102 removed extraneous whitespace from Gruntfile
testing:
grunt and grunt test both successful
2013-02-13 15:32:48 -05:00
Greg Kraus 6c9e17dce2 Corrected duration time label to read 'time remaining' 2013-02-12 21:37:45 -05:00
Greg Kraus 07cda9583f Corrected the call to get the player width 2013-02-12 21:24:58 -05:00
Greg Kraus c6338728d8 Merge branch 'master' into 291-accessibility. Updating to the latest upstream code 2013-02-12 21:21:09 -05:00
jwhisenant f0f7c8917b Added code to replace Windows-style backslashes with Unix-style
forward-slashes

testing:
grunt successful
grunt test successful
2013-02-12 13:34:01 -05:00
Steve Heffernan deb28e63d9 Merge branch 'master' of github.com:heff/video-js 2013-02-11 17:24:28 -08:00
Gary Katsevman 2539f81bda fix test 2013-02-11 17:24:17 -08:00
Gary Katsevman 13327ce875 update plugins.js 2013-02-11 17:24:17 -08:00
David LaPalomento 0771e86338 Remove Up-Front Config Example
Get rid of the example code for configuring a plugin at creation time. There's already an example in the tutorial and it makes things a bit confusing.
2013-02-11 17:24:17 -08:00
David LaPalomento 9fed9241d0 Up-Front Plugin Config
Create an example of making a dynamic video element and loading a plugin. Add that example to the tutorial.
2013-02-11 17:24:17 -08:00
David LaPalomento d21df1bc12 Remove Extra Flash Switch
Get rid of the extra switching logic to force Flash tech. Worth noting: it has to exist as a separate script tag because we're using document.write to insert video.js scripts.
2013-02-11 17:24:17 -08:00
David LaPalomento 6df5d30dff Plugin Doc and Example
Added most of a doc on building plugins. Still missing a section on up-front plugins. Created an example page that shows how to load a plugin.
2013-02-11 17:24:17 -08:00
Steve Heffernan 41d4641cea Merge pull request #327 from gkatsev/jshint
update plugins.js to follow jshint.
2013-02-11 13:41:42 -08:00
Gary Katsevman b3f6aa0078 fix test 2013-02-11 16:35:43 -05:00
Gary Katsevman 964e50a9ee update plugins.js 2013-02-11 16:18:12 -05:00
Steve Heffernan a2d4262c56 Merge pull request #326 from dmlap/plugin-tutorial
Plugin tutorial
2013-02-11 13:03:58 -08:00
Steve Heffernan d096a7d33e Merge pull request #325 from gkatsev/jshint
Add gruntfile and tests to Jshint linting
2013-02-11 12:36:56 -08:00
David LaPalomento 1636677995 Remove Up-Front Config Example
Get rid of the example code for configuring a plugin at creation time. There's already an example in the tutorial and it makes things a bit confusing.
2013-02-11 13:05:39 -05:00
Steve Heffernan 24ff4b1321 Merge pull request #304 from Commander147/246-Custom-Start-Time-Offset-Support
246 custom start time offset support
2013-02-11 09:56:35 -08:00
Steve Heffernan eadaa2f800 Merge pull request #322 from gkatsev/plugin
Add plugin event ordering test
2013-02-11 09:05:04 -08:00
David LaPalomento f4cba1649d Up-Front Plugin Config
Create an example of making a dynamic video element and loading a plugin. Add that example to the tutorial.
2013-02-11 10:28:57 -05:00
David LaPalomento c6d3481470 Remove Extra Flash Switch
Get rid of the extra switching logic to force Flash tech. Worth noting: it has to exist as a separate script tag because we're using document.write to insert video.js scripts.
2013-02-11 10:28:22 -05:00
David LaPalomento 1579e623b0 Plugin Doc and Example
Added most of a doc on building plugins. Still missing a section on up-front plugins. Created an example page that shows how to load a plugin.
2013-02-11 10:28:03 -05:00
Joseph Afework e23cf4a1c0 Changed 'firstplay' to match event functions
Changed the 'firstplay' method to the same form as the other event
functions
2013-02-10 22:45:00 -08:00
Gary Katsevman 103adfc1a5 update test/unit/plugins to adhere to jshint 2013-02-08 17:30:00 -05:00
Gary Katsevman b52cf5889e update test/unit/player to adhere to jshint 2013-02-08 17:29:04 -05:00
Gary Katsevman 31f76092f8 update test/unit/{media.html5,setup}.js to adhere to jshint 2013-02-08 17:27:04 -05:00
Gary Katsevman c13b96acbb update test/unit/lib to adhere to jshint 2013-02-08 17:25:33 -05:00
Gary Katsevman e6478e96de Update test/unit/events to follow jshint 2013-02-08 17:20:46 -05:00
Gary Katsevman 8f6d408802 Update test/unit/core to jshint 2013-02-08 17:18:49 -05:00
Gary Katsevman e1d4b2c827 Update test/unit/component to conform to jshint 2013-02-08 17:14:36 -05:00
Gary Katsevman 5f2b8fb831 update gruntfile to pass jshint 2013-02-08 17:08:31 -05:00
Gary Katsevman 51a22adc6a Update grunt and jshint to lint the gruntfile and test files 2013-02-08 17:02:39 -05:00
Gary Katsevman 4cefbf6bac check how many events were triggered 2013-02-08 16:13:35 -05:00
Gary Katsevman b8b23d00de Add a test using stop Propagation 2013-02-08 16:13:35 -05:00
Gary Katsevman c6a855cf74 add plugin test for event order 2013-02-08 16:13:35 -05:00
Aleksandr Sandrovskiy 730b4723b0 Fix volume handler initial position 2013-02-08 16:06:15 +03:00
Aleksandr Sandrovskiy 701c1d210c Fix poster component visibility 2013-02-08 15:50:56 +03:00
Joseph Afework 3353b75327 Fixed Start Time Offset
Implementation has been modified to utilize the firstplay event to set
the custom start time offset of the video.

If in the data-setup array an attribute of "starttime" is specified,
then the video will start playback from the passed index in seconds.

Note: Video will only start from this index on first play only.
2013-02-07 15:24:49 -08:00
Joseph Afework bce339c405 Revert "Added Support for custom video start time"
This reverts commit ab5f977d62.
2013-02-07 15:06:16 -08:00
Joseph Afework 3865d44b0e Revert "Added Flag for loop support with custom start time"
This reverts commit 120790a34a.
2013-02-07 15:06:16 -08:00
Aleksandr Sandrovskiy ba110169f5 Adds (removes) 'vjs-fullscreen' class on fullscreenchange event fixes #315 2013-02-08 01:11:33 +03:00
Steve Heffernan 0206ba9469 Added details about including issues in pull requests. 2013-02-07 14:06:38 -08:00
Aleksandr Sandrovskiy 4b960849c7 Changed 'createElement' method to 'createEl' 2013-02-08 00:44:03 +03:00
Aleksandr Sandrovskiy 3e555d77ea Changed V to vjs 2013-02-08 00:36:54 +03:00
Steve Heffernan 9f2b869135 Added mocha for Testling 2013-02-05 11:42:59 -08:00
Steve Heffernan 7954af0ba3 Updated sandbox example to point to correct source list 2013-02-05 11:09:07 -08:00
Aleksandr Sandrovskiy 042b81e566 315 Fullscreen button CSS rules for webkit and Firefox added 2013-02-05 21:58:17 +03:00
Aleksandr Sandrovskiy ecb7fb6b3e 313 Save all video tag attributes while moving media element in DOM 2013-02-05 20:11:45 +03:00
Steve Heffernan a84d1f85b8 Merge branch 'feature/plugins' 2013-02-04 16:20:29 -08:00
Steve Heffernan 4c2b129947 Adding line to CHANGELOG: Added a plugins interface 2013-02-04 16:20:29 -08:00
Steve Heffernan d38620bc7e Added test for overwriting existing plugin 2013-02-04 16:13:37 -08:00
Steve Heffernan 6d90be9967 Removed global plugin reference object. Not needed. 2013-02-04 13:56:50 -08:00
Steve Heffernan 1d79a1fa26 Updated plugins loop to use obj.each context option 2013-02-04 10:54:47 -08:00
Steve Heffernan 1f3a9f117d Update plugin tests to support compiling 2013-02-04 10:43:16 -08:00
Steve Heffernan cb77fb337f Added code to pass plugins tests 2013-02-04 10:31:53 -08:00
Steve Heffernan 6f2597cc8d Added test for the plugin interface. 2013-02-04 07:55:31 -08:00
Joseph Afework 120790a34a Added Flag for loop support with custom start time
The flag is used to determine if loop video is set to true,
once the video starts, options_['loop'] will always be set to false.
This allows the onEnded event to always be fired and allows us to set
custom start-time for when the video loops.

(When loop is normally set the onEnd end onPlay events are never called
their for this flag is necessary)
2013-01-26 16:37:04 -08:00
Joseph Afework ab5f977d62 Added Support for custom video start time
1) The Start Time can be set via the data-setup array
2) If 'start-time' is not present defaut time of 0 seconds is used
3) To set a custom start time for a video simply set start-time to be
equal to the number of seconds from the start of the video you would
like to begin at.
For Example: "start-time":80 means that the video will start at
timecode 00:01:20 -> HH:MM:SS
2013-01-26 16:33:55 -08:00
Steve Heffernan 8671f1ff91 Trying to test testling 2013-01-25 18:17:20 -08:00
Steve Heffernan 2aaff4bf88 Attempting to use testling 2013-01-25 18:07:19 -08:00
Steve Heffernan dc18f475f8 Changed to vjs.obj.function naming for object related functions.
Updated mergeOptions to just options.
2013-01-25 17:36:40 -08:00
Steve Heffernan c7d3b9ebf9 Updated grunt script to add CSS/PNG/SWF files dist. Also did some renaming of files and folders. 2013-01-25 15:22:14 -08:00
Greg Kraus e284c88afa Make the caption, subtitle, and chapter buttons more usable by screen reader users diff --git a/src/css/video-js.css b/src/css/video-js.css
index daa7080..4ed6ea2 100644

Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-23 00:48:05 -05:00
Greg Kraus 20e9a9feb5 Fix bug with getting the ID of the track
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-23 00:48:05 -05:00
Greg Kraus b0f1a8404c Adjust the font size of the text tracks to make them proportionally larger when switching to fullscreen mode
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-23 00:47:50 -05:00
Greg Kraus c74c4e2c3a Provide more information to screen reader users about the progress bar, current time, and time remaining diff --git a/src/js/controls.js b/src/js/controls.js
index bb050b9..504913c 100644

Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-23 00:32:17 -05:00
Greg Kraus 00a508508e Provide additional information for screen reader users on the status of the volume bar diff --git a/src/js/controls.js b/src/js/controls.js
index 2d5ad21..bb050b9 100644

Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-23 00:32:17 -05:00
Greg Kraus 1d6e93d990 Change the button text when the button state is toggled, and indicate to screen reader users that the text may change
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-22 23:23:00 -05:00
Greg Kraus 56ebe98386 Add a label for the big play button to aid screen reader users
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-22 23:22:57 -05:00
Greg Kraus 4fe808dcbc Change the creation order of the control UI elements to make the tab order more intuitive
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-22 23:22:53 -05:00
Greg Kraus ef260fca72 Show keyboard focus on UI elements for keyboard-only users
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-22 23:22:50 -05:00
Greg Kraus 803e2da691 Add support for writing aria-* and role attributes to elements.
Signed-off-by: Greg Kraus <gdkraus@ncsu.edu>
2013-01-22 23:22:46 -05:00
Steve Heffernan 1c6bcb0a5e Updated dispose to support children without the dispose method 2013-01-21 18:22:19 -08:00
Steve Heffernan b6ea80b67e Updated component children adding to allow no name, id, or el 2013-01-21 17:10:54 -08:00
Steve Heffernan 0364e281d1 Stopped big play button from showing on ended. 2013-01-21 16:43:03 -08:00
Steve Heffernan 9f566c0742 Updated player options to use component options_ settings and mergeOptions. 2013-01-21 16:19:46 -08:00
ptrin 273ec899a5 Fixed a broken markdown link
Fixed the link to caption formatting techniques.
2013-01-21 15:15:41 -05:00
Steve Heffernan fc97d6ece4 Created a combined sources file so people can pull into external projects. fixes #287 2013-01-21 10:54:36 -08:00
Steve Heffernan 07d03e1a27 Updated player API to support poster and controls 2013-01-18 18:06:15 -08:00
Steve Heffernan 2c28d44f92 Changed name of test file to test.video.js 2013-01-18 17:30:35 -08:00
Steve Heffernan ddb016e5b0 Deleted video.test.js...again 2013-01-18 17:20:04 -08:00
Steve Heffernan f82296b4c1 Putting video.test.js in dist/ now instead of test. Don't want to commit video.test.js because it will cause merge conflicts on pull requests. 2013-01-18 17:16:29 -08:00
Steve Heffernan 2effe5a8cc Removed video.test.js and added to gitignore to prevent merge conflicts 2013-01-18 17:05:39 -08:00
Steve Heffernan e840a27409 Merge branch 'master' of git://github.com/mchristopher/video-js into mchristopher-master
Conflicts:
	test/video.test.js
2013-01-18 17:03:17 -08:00
Michael Christopher 67c96304f2 Uppercase constants 2013-01-18 16:54:45 -08:00
Michael Christopher aece38716d Pass tests 2013-01-18 15:09:46 -08:00
Michael Christopher c6e23d772a Updating SSL support for new VJS 2013-01-18 14:57:57 -08:00
Michael Christopher df2fc221e3 Merge newest changes 2013-01-18 14:54:44 -08:00
Steve Heffernan 54737a8af2 Updated options to use underscore for private 2013-01-17 21:03:25 -05:00
Steve Heffernan 487fdc8511 Fixed instances where options was still using a non-string key 2013-01-17 20:45:22 -05:00
Steve Heffernan 70fbf7fc8a Updated events to support event.stopImmediatePropagation().
Added a first play event.
2013-01-17 20:33:53 -05:00
Steve Heffernan b208d63367 Adding compiling back with calcdeps. Testing travis CI. 2013-01-16 21:01:10 -05:00
Steve Heffernan 38e19282fd removed compile from grunt testing because can't install it on travis ci 2013-01-16 20:58:23 -05:00
Steve Heffernan 1189bbaa95 Added compiled tests to test runner. 2013-01-16 20:30:55 -05:00
Steve Heffernan 0b3e240999 Changed this.player to this.player_ to be more consistent with other private vars. 2013-01-16 20:24:38 -05:00
Steve Heffernan e17d1a2d85 Formatted install steps 2013-01-16 17:13:39 -05:00
Steve Heffernan fd7d53cb5a Updated contributing.md to have grunt-cli step 2013-01-16 17:09:46 -05:00
Steve Heffernan e4eb0d5ffe Added a method for doing a deep merge on options objects so individual options could be passed to children withoug overwriting all defaults.
Cleaned up vjs.merge.
2013-01-16 11:09:56 -05:00
Steve Heffernan a6f2161ca8 Updated index.html.example to use sourcelist.js. 2013-01-14 23:29:20 -05:00
Steve Heffernan 7f8acd2850 Updated readme and contrib.md 2013-01-14 22:51:01 -05:00
Steve Heffernan 6623919429 Merge branch 'feature/component-docs'
Conflicts:
	src/player.js
2013-01-14 22:40:19 -05:00
Steve Heffernan 6ad5e0dada Udpated contributing.md 2013-01-14 22:35:23 -05:00
Michael Christopher 3e7289f244 Add HTTPS support for CDN version 2013-01-14 13:11:20 -08:00
Steve Heffernan 921b783e40 Added phantom to package list. 2013-01-12 22:30:55 -08:00
Steve Heffernan 4c0d74b6c2 Removed unused node packages. 2013-01-12 22:26:10 -08:00
Steve Heffernan 0f0fccc312 Update grunt build script. 2013-01-12 22:23:22 -08:00
Steve Heffernan e7c146bc1f Reorgnizing src files.
Moving to grunt for build.
2013-01-11 23:02:20 -08:00
Steve Heffernan 675147645c Cleaning up repo. 2013-01-11 11:52:01 -08:00
Steve Heffernan 06e3ec9dce Cleaned up test logging. Added fallback message for no video support. 2013-01-10 13:48:41 -08:00
Steve Heffernan 77d9d34f91 Merge pull request #236 from lindstedt/master
Feedback message when user can't view video
2013-01-10 13:43:05 -08:00
Steve Heffernan 92855aaf8f Merge pull request #276 from tijptjik/patch-1
Simple typo
2013-01-10 13:40:49 -08:00
Steve Heffernan 68441c7141 Adding jshint back to testing 2013-01-10 13:10:48 -08:00
Steve Heffernan f267e27e36 Updated closure compiler advanced mode branch 2013-01-10 13:06:12 -08:00
Steve Heffernan 428203c466 Continued updating all library pieces to support closure compiler.
Renamed internal lib var to vjs instead of _V_.
2013-01-04 16:58:23 -08:00
Steve Heffernan e125ee878e Updated closure compiler build. Starting Flash support. 2012-12-31 15:25:56 -08:00
Steve Heffernan 688b5053ee Major rewrite to support Google Closure Compiler Advanced Optimization.
Still in process.
2012-12-30 21:45:50 -08:00
Mart van de Ven 90febd2bcf typo 2012-12-28 21:05:58 +08:00
Eric Rafaloff 74f055d125 techOrder should be an array of strings
- Correct the example where the value of techOrder is a hash when it should be an array.
- Make examples clearer that the elements of this array should be strings, not another array.
2012-12-17 15:07:28 -05:00
Steve Heffernan a34259860f Started components doc. 2012-12-17 11:18:31 -08:00
Steve Heffernan 21d2b2086f Merge pull request #249 from Menda/patch-1
Update docs/tech.md
2012-12-11 16:01:40 -08:00
Steve Heffernan d5e52b554c Merge pull request #254 from benfoxall/master
Document _V_(domElement) init
2012-12-11 15:27:20 -08:00
Steve Heffernan f7f7cb475e Added space to title 2012-12-11 15:02:47 -08:00
Steve Heffernan 55d02cf6d8 Added .editorconfig and travis CI badge 2012-12-11 14:33:42 -08:00
Steve Heffernan e77dd302e5 Trying to fix phantomjs running on travis CI 2012-12-11 13:54:16 -08:00
Steve Heffernan 53774c2f74 Fixed error in package info for Travis CI 2012-12-11 13:45:22 -08:00
Steve Heffernan b18bc876b0 Moved .values definition to support being used in width() 2012-12-11 13:39:15 -08:00
Steve Heffernan 6bb2a8cdda Fixed incorrect width and height returning. fixes 258 2012-12-11 13:34:13 -08:00
Steve Heffernan 60a70f94b2 Merge branch 'feature/test-buildout' 2012-12-10 18:54:48 -08:00
Steve Heffernan 4d7da6cb8a Adding line to CHANGELOG: Added automated test suite and support for Travis CI. 2012-12-10 18:54:48 -08:00
Steve Heffernan be0febaad9 Added Travis CI config, and also supporting package.json.
Removed flwplayer folder.
Added phantomjs for Travis CI test running, including temp makefile.
2012-12-10 18:51:48 -08:00
Steve Heffernan 0a8d967a3e Removed demo-subtitles.srt. Not using it. 2012-12-10 16:46:48 -08:00
Steve Heffernan d8ec3cbc87 Removed root source-list.js. Not sure what it was there for. 2012-12-10 16:44:41 -08:00
Steve Heffernan 9293076b75 Removed original build.sh. Was causing confusion. 2012-12-10 16:41:18 -08:00
Steve Heffernan e07f9172fa Updated tests to include unit and integration tests. 2012-12-10 16:40:12 -08:00
Ben Foxall 76740d93f1 api doc code blocks rendering in other markdowns 2012-12-03 12:00:21 +00:00
Ben Foxall ef65237774 documented referencing video with DOM object 2012-12-03 11:56:41 +00:00
Rafa Muñoz Cárdenas 409b1936c9 Update docs/tech.md
JSON syntax was bad and Chrome was throwing errors. Now it works properly.
2012-11-21 11:31:15 +01:00
Steve Heffernan b4b4d55767 Merge branch 'feature/docs-update' 2012-11-15 11:23:07 -08:00
Steve Heffernan a177931d71 Adding line to CHANGELOG: Updated docs to use Github markdown 2012-11-15 11:23:07 -08:00
Steve Heffernan 2a8a4342e0 Added newlines concat script to fix compiling issues. 2012-11-15 11:20:36 -08:00
Steve Heffernan 72b9203c8c Updated rakefile to support new dir structure 2012-11-14 19:45:48 -08:00
Steve Heffernan 0fe46d6c89 Fixed email link in skins doc 2012-11-14 19:29:03 -08:00
Steve Heffernan b2ad563545 fixed link to videojs.com on homepage 2012-11-14 15:57:06 -08:00
Steve Heffernan d91afcf987 Fixed some bugs in docs index 2012-11-14 15:52:32 -08:00
Steve Heffernan 34b104cfd2 Cleaned up docs index 2012-11-14 15:51:05 -08:00
Steve Heffernan 50d1bcb4ce Removed manual anchor links from glosarry page since github already supports them. 2012-11-14 15:33:21 -08:00
Steve Heffernan 5a697478f9 Updated docs links 2012-11-14 15:07:47 -08:00
Steve Heffernan c01676d2bb Cleaned up whitespace around docs code 2012-11-14 15:02:32 -08:00
Steve Heffernan c9d91f1d61 Fixed issue in api docs highlighting 2012-11-14 14:54:36 -08:00
Steve Heffernan caa4740b69 API docs highlighting updated 2012-11-14 14:53:46 -08:00
Steve Heffernan 31033659bc Updated code samples to support github highlighting 2012-11-14 14:51:31 -08:00
Steve Heffernan 2c3f7f7177 Testing code highlighting 2012-11-14 14:42:06 -08:00
Steve Heffernan dfbd21f111 Removed jekyll headers from docs. 2012-11-14 14:34:13 -08:00
Steve Heffernan fc6d1b1229 Merge branch 'hotfix/fix-chrome-seeking-spinner' fixes #240
Conflicts:
	src/controls.js
2012-11-12 17:32:44 -08:00
Steve Heffernan 54ef0a7758 Merge branch 'hotfix/fix-chrome-seeking-spinner' into stable 2012-11-12 17:29:12 -08:00
Steve Heffernan efb357f841 Adding line to CHANGELOG: Fixed chrome spinner continuing on seek 2012-11-12 17:29:12 -08:00
Steve Heffernan a3038226f1 Bumping version to 3.2.3. 2012-11-12 17:28:53 -08:00
Steve Heffernan a722498191 Merge branch 'dan/fix_chrome_seeking_spinner' of git://github.com/onyxrev/video-js into hotfix/fix-chrome-seeking-spinner 2012-11-12 17:18:07 -08:00
Dan Connor 180c75b3a2 fix for loading spinner persisting on screen after programatic seek in Chrome 2012-11-06 16:38:35 -08:00
Annika Lindstedt 609ecf1f10 Update src/player.js
A nice feedback message for users who don't have a compatible HTML5 browser or Flash Player.
2012-10-31 16:19:20 +01:00
Steve Heffernan 8eba022c0c Merge pull request #215 from heff/jhurliman-youtube
Jhurliman youtube
2012-08-13 13:50:08 -07:00
Steve Heffernan fffa9ddcab Updated youtube.html to work 2012-08-13 13:46:01 -07:00
Steve Heffernan 0edfae58eb Re-organized playback tech location in source. 2012-08-13 13:34:40 -07:00
Steve Heffernan d71b0858d4 Added jhurliman's YouTube updates. 2012-08-10 17:25:14 -07:00
Steve Heffernan 9343610596 Merge pull request #185 from program247365/patch-1
Updated firebug-lite to the latest release.
2012-08-07 16:27:06 -07:00
Steve Heffernan 5e8b6c8455 Merge pull request #192 from eikes/master
Make the components available in the "ready" callback
2012-08-07 16:12:15 -07:00
Steve Heffernan f18cbffaa5 Merge pull request #208 from caioariede/master
loadingSpinner is not showing off after seek
2012-08-07 15:47:29 -07:00
Steve Heffernan 9d49f1487d small change 2012-08-01 14:35:08 -07:00
Steve Heffernan 8827b4c9cb small test change 2012-08-01 14:24:33 -07:00
Caio Ariede 51181f6a5d Removes loadingSpinner when seek is complete 2012-07-26 10:08:55 -03:00
Steve Heffernan 5758472d2f Merge branch 'feature/disable-components' 2012-06-28 16:37:26 -07:00
Steve Heffernan c9fa0be0e0 Adding line to CHANGELOG: Allow disabling of default components 2012-06-28 16:37:25 -07:00
Steve Heffernan 94044afe74 Allow disabling of default components. 2012-06-28 16:36:40 -07:00
Steve Heffernan 448a70d2cc Added paused to docs. 2012-06-20 10:29:07 -07:00
Eike Send 7502785062 make the components available in the ready callback as well 2012-05-25 11:59:53 +02:00
Kevin Ridgway b98ecb7fbc Updated firebug-lite to the latest release. 2012-05-10 15:40:48 -03:00
Steve Heffernan c189332ca3 Removed merge file. 2012-05-03 12:35:14 -07:00
Steve Heffernan 11a9e88d42 Merge branch 'hotfix/multiple-control-fades-fix'
Conflicts:
	src/controls.js
2012-05-02 20:57:49 -07:00
Steve Heffernan 3540fcfee8 Merge branch 'hotfix/multiple-control-fades-fix' into stable 2012-05-02 20:55:57 -07:00
Steve Heffernan f82312e5fb Adding line to CHANGELOG: Fixed error with multiple controls fading listeners 2012-05-02 20:55:57 -07:00
Steve Heffernan aa7d5a2839 Bumping version to 3.2.2. 2012-05-02 20:55:35 -07:00
Steve Heffernan a787b5ca3a Fixed multiple event listeners added for controls fading on play event. fixes #173 2012-05-02 20:54:40 -07:00
Steve Heffernan 290d1c1ba4 Nothing. 2012-05-02 20:45:33 -07:00
Steve Heffernan 048b808153 Merge branch 'feature/duration-cacheing' 2012-04-25 15:20:07 -07:00
Steve Heffernan 8bd70b6060 Adding line to CHANGELOG: Duration is now setable (need ed for HLS m3u8 files) 2012-04-25 15:20:07 -07:00
Steve Heffernan 8c73d8f62c Made duration setable and cached. 2012-04-25 15:15:33 -07:00
Steve Heffernan b0061f0e30 Merge branch 'feature/event-binding-return-player' 2012-04-18 15:56:38 -07:00
Steve Heffernan 2ee7ae0448 Adding line to CHANGELOG: Event binders (on/off/one) now return the player instance 2012-04-18 15:56:38 -07:00
Steve Heffernan 610ad964d0 Made event binders return the player object. 2012-04-18 15:55:39 -07:00
Steve Heffernan 452669e80a Merge branch 'feature/stop-restart-on-ended' 2012-04-12 15:22:36 -07:00
Steve Heffernan cfd6b4d670 Adding line to CHANGELOG: Stopped player from going back to beginningg on ended event. 2012-04-12 15:22:36 -07:00
Steve Heffernan dd8c2a2140 Added pause back in on ended so play button goes back to triangle and playing event is fired again. 2012-04-12 15:21:30 -07:00
Steve Heffernan 7d9b0e2629 Stopped player from going back to the beginning on end. 2012-04-12 15:20:14 -07:00
Steve Heffernan 6658c51474 Merge branch 'feature/fluid-width' 2012-04-09 14:56:36 -07:00
Steve Heffernan 7839f2e427 Adding line to CHANGELOG: Added support for percent width/height and fluid layouts 2012-04-09 14:56:36 -07:00
Steve Heffernan 4fb7af6b53 Adjusted width/height to support percents. fixes #163 2012-04-09 14:53:03 -07:00
Steve Heffernan 937b52d9bf Fixed bug that was skipping width/height from tag attributes. 2012-04-09 11:02:51 -07:00
Steve Heffernan b3d16d1437 Removed unused values ref. 2012-04-06 17:16:16 -07:00
Steve Heffernan ec07398114 Merge branch 'feature/better-element-load' 2012-04-06 17:15:44 -07:00
Steve Heffernan 1a6c5ffcb9 Adding line to CHANGELOG: Improved load order of elements to reduce reflow. 2012-04-06 17:15:44 -07:00
Steve Heffernan 980b4738f4 Improved load order of page elements to protect againt reflows. 2012-04-06 17:14:45 -07:00
Steve Heffernan 9321a54cee Removed orig file 2012-04-06 16:52:54 -07:00
Steve Heffernan 2d2e7117b3 Merge branch 'hotfix/options-width-fix'
Conflicts:
	src/core.js
2012-04-06 16:52:18 -07:00
Steve Heffernan 5fc725c088 Merge branch 'hotfix/options-width-fix' into stable 2012-04-06 16:50:16 -07:00
Steve Heffernan 2ef7617c66 Adding line to CHANGELOG: Fixed setting width/height with javascript options 2012-04-06 16:50:16 -07:00
Steve Heffernan c222eb1381 Bumping version to 3.2.1. 2012-04-06 16:49:47 -07:00
Steve Heffernan dca5644878 Updated options loading to be better. 2012-04-06 16:42:09 -07:00
Steve Heffernan 1d680a9135 Fixed changeslog bullet. 2012-03-28 15:56:11 -07:00
Steve Heffernan a671e6b9d8 Merge branch 'feature/changing-addevent-to-on' 2012-03-26 11:24:41 -07:00
Steve Heffernan b52b9a1faf Adding line to CHANGELOG: Changed addEvent function name to 'on'. 2012-03-26 11:24:41 -07:00
Steve Heffernan 82e2322493 Updated remaining event listener function names. 2012-03-26 11:23:05 -07:00
Steve Heffernan eff300cebb Updated on/addevent names on components. 2012-03-26 11:19:26 -07:00
Steve Heffernan 9cad8bff38 Changed controls addevent to on 2012-03-26 11:14:48 -07:00
Steve Heffernan d907f4aac2 Added on/off/trigger events to replace addEvent/removeEvent/triggerEvent. 2012-03-26 11:12:31 -07:00
Steve Heffernan f8b43676ba Merge branch 'feature/remove-indexof' 2012-03-26 11:01:55 -07:00
Steve Heffernan 7bf9b5936f Adding line to CHANGELOG: Removed conflicting array.indexOf function 2012-03-26 11:01:55 -07:00
Steve Heffernan e1995350fe Removed refs to ecma.js 2012-03-26 10:58:20 -07:00
Steve Heffernan 15c360cd26 Removed ECMA file. No longer using any of these functions.
Removed remove function from lib. Was not being used and needed the indexOf function.
2012-03-26 10:56:38 -07:00
Steve Heffernan b1da28fe18 Merge branch 'stable' 2012-03-23 17:11:02 -07:00
Steve Heffernan 00567cff6c Spelling error. 2012-03-23 17:10:35 -07:00
Steve Heffernan 79cec32401 Updated docs 2012-03-23 15:39:23 -07:00
Steve Heffernan f96f63acca Updated docs index. 2012-03-22 16:50:17 -07:00
Steve Heffernan be48f1dd2e Udpated changelog 2012-03-22 15:07:57 -07:00
Steve Heffernan 3875321d9e Merge branch 'master' of github.com:zencoder/video-js 2012-03-22 15:01:02 -07:00
Steve Heffernan b01ca8e805 Merge pull request #143 from andchen/master
Added "exitFullScreen" in tech.js. For those browsers that have "supportsFullScreen"
2012-03-22 15:00:43 -07:00
Steve Heffernan 43fc61f74d Merge pull request #154 from sirudog/master
Fixed two bugs: Removing sources with changing source count. Checking element nodeName, IE doesn't force uppercase.
2012-03-20 17:25:54 -07:00
Steve Heffernan 09ed8b3b6a Merge branch 'stable' 2012-03-20 13:01:38 -07:00
Steve Heffernan a9567e2574 removed outline from button focus. 2012-03-20 13:01:10 -07:00
Steve Heffernan c17df5ab61 Merge branch 'release/baxter' 2012-03-20 11:17:30 -07:00
Steve Heffernan 1ed4c36412 Updated release notes. 2012-03-20 11:14:33 -07:00
sirudog 4df3d84358 Fixed bug of traversing video source/track child nodes by making nodeName comparison case-insensitive.
It caused the issue of flash-fallback not being able to discover the source of the video and embed it into flashvars.
2012-03-18 22:36:04 +01:00
sirudog 5c2a3cbbf8 Fix bug in loop for removing source/track nodes from video element.
"j.length" changed in each loop step, causing source/track nodes being left in DOM.
2012-03-18 22:25:19 +01:00
Andy Chen 4bc04c2e45 Added "exitFullScreen" in tech.js. For those browsers that have "supportsFullScreen"
false, it would throw "undefined" error when calling "exitFullScreen".
2012-02-02 09:51:01 -05:00
399 arquivos alterados com 50787 adições e 14448 exclusões
+8
Ver Arquivo
@@ -0,0 +1,8 @@
{
"presets": [
"es3",
["es2015", {
"loose": true
}]
]
}
+11
Ver Arquivo
@@ -0,0 +1,11 @@
# editorconfig.org - unify code style
# plugins for text editors: editorconfig.org/#download
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
+31
Ver Arquivo
@@ -0,0 +1,31 @@
## Description
Briefly describe the issue.
Include a [reduced test case](https://css-tricks.com/reduced-test-cases/), we have a [starter template](http://jsbin.com/axedog/edit?html,output) on JSBin you can use.
## Steps to reproduce
Explain in detail the exact steps necessary to reproduce the issue.
1.
2.
3.
## Results
### Expected
Please describe what you expected to see.
### Actual
Please describe what actually happened.
### Error output
If there are any errors at all, please include them here.
## Additional Information
Please include any additional information necessary here. Including the following:
### versions
#### videojs
what version of videojs does this occur with?
#### browsers
what browser are affected?
#### OSes
what platforms (operating systems and devices) are affected?
### plugins
are any videojs plugins being used on the page? If so, please list them below.
+16
Ver Arquivo
@@ -0,0 +1,16 @@
## Description
Please describe the change as necessary.
If it's a feature or enhancement please be as detailed as possible.
If it's a bug fix, please link the issue that it fixes or describe the bug in as much detail.
## Specific Changes proposed
Please list the specific changes involved in this pull request.
## Requirements Checklist
- [ ] Feature implemented / Bug fixed
- [ ] If necessary, more likely in a feature request than a bug fix
- [ ] Change has been verified in an actual browser (Chome, Firefox, IE)
- [ ] Unit Tests updated or fixed
- [ ] Docs/guides updated
- [ ] Example created ([starter template on JSBin](http://jsbin.com/axedog/edit?html,output))
- [ ] Reviewed by Two Core Contributors
+30 -2
Ver Arquivo
@@ -1,5 +1,33 @@
.DS_Store
dist/*
build/files/*
build/temp/*
docs/api/*
dev.html
projects
.zenflow-log
.zenflow-log
test/*.map
.bunyipconfig.js
.s3config.json
node_modules
npm-debug.log*
sandbox/*
!sandbox/*.example
*.swp
*.swo
*.orig
*results.xml
*.log
test/coverage/*
.coveralls.yml
.sass-cache
dist/*
es5/*
.idea/
+41
Ver Arquivo
@@ -0,0 +1,41 @@
{
"source": {
"include": [ "src/js/" ],
"includePattern": ".js$"
},
"opts": {
"destination": "docs/api",
"readme": "docs/index.md",
"template": "node_modules/tui-jsdoc-template",
"package": "package.json",
"recurse": true,
"tutorials": "docs/guides",
"encoding": "utf8"
},
"templates": {
"default": {
"staticFiles": {
"include": ["build/docs/"]
}
},
"logo": {
"url": "http://videojs.com/img/logo.png",
"height": "30px",
"width": "214px"
},
"name": "Video.js Documentation",
"tabNames": {
"tutorials": "Guides"
},
"footerText": "<span class='copyright'><a href='http://videojs.com'>Video.js</a> is a free and open source HTML5 video player. © <a href='https://brightcove.com' target='_blank'>Brightcove, Inc</a>. <a href='https://github.com/videojs/video.js/blob/master/LICENSE' class='button blue' target='_blank'>View license</a></span> <ul class='other-links'><li><a href='http://videojs.com' class='button white'><i class='fa fa-external-link'></i> Video.js</a></li> <li><a href='https://twitter.com/videojs' class='button white' target='_blank'><i class='fa fa-twitter'></i> @videojs</a></li> <li><a href='http://github.com/videojs/video.js' class='button white' target='_blank'><i class='fa fa-github-alt'></i> Source</a></li> </ul>",
"css": [
"styles/videojs.css",
"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"
]
},
"plugins": ["plugins/markdown"],
"markdown": {
"tags": ["example"],
"idInHeadings": true
}
}
+6
Ver Arquivo
@@ -0,0 +1,6 @@
# Exclude everything but the contents of the dist directory.
**/*
!dist/**
!es5/**
!src/css/**
!docs/api/**
+1
Ver Arquivo
@@ -0,0 +1 @@
CHANGELOG.md
+84
Ver Arquivo
@@ -0,0 +1,84 @@
var remarkrc = {
settings: {
bullet: '*',
fence: '`',
strong: '*',
emphasis: '_',
listItemIndent: 1,
incrementListMarker: false
},
plugins: {
'toc': {
tight: true
},
}
};
var args = process.argv;
// only lint in non-output mode
if (args.indexOf('-o') === -1 && args.indexOf('--output') === -1) {
remarkrc['validate-links'] = {};
remarkrc.plugins.lint = {
'blockquote-indentation': ['error', 2],
'checkbox-character-style': ['warn'],
'checkbox-content-indent': ['error'],
'code-block-style': ['error', 'fenced'],
'definition-case': ['off'],
'definition-spacing': ['error'],
'emphasis-marker': ['error', '_'],
'fenced-code-flag': ['error'],
'fenced-code-marker': ['error', '`'],
'file-extension': ['error'],
'final-definition': ['error'],
'final-newline': ['off'],
'first-heading-level': ['warn', 1],
'hard-break-spaces': ['off'],
'heading-increment': ['error'],
'heading-style': ['error', 'atx'],
'link-title-style': ['warn', '"'],
'list-item-bullet-indent': ['error'],
'list-item-content-indent': ['warn'],
'list-item-indent': ['error', 'space'],
'list-item-spacing': ['off'],
'maximum-heading-length': ['off'],
'maximum-line-length': ['off'],
'no-auto-link-without-protocol': ['error'],
'no-blockquote-without-caret': ['error'],
'no-consecutive-blank-lines': ['error'],
'no-duplicate-definitions': ['error'],
'no-duplicate-headings-in-section': ['error'],
'no-duplicate-headings': ['off'],
'no-emphasis-as-heading': ['error'],
'no-file-name-articles': ['off'],
'no-file-name-consecutive-dashes': ['off'],
'no-file-name-irregular-characters': ['warn', '\\.a-zA-Z0-9-_'],
'no-file-name-mixed-case': ['error'],
'no-file-name-outer-dashes': ['error'],
'no-heading-content-indent': ['error'],
'no-heading-indent': ['error'],
'no-heading-punctuation': ['off'],
'no-html': ['off'],
'no-inline-padding': ['error'],
'no-literal-urls': ['off'],
'no-missing-blank-lines': ['off'],
'no-multiple-toplevel-headings': ['error'],
'no-reference-like-url': ['error'],
'no-shell-dollars': ['error'],
'no-shortcut-reference-iamge': ['off'],
'no-shortcut-reference-link': ['off'],
'no-table-indentation': ['error'],
'no-tabs': ['error'],
'no-undefined-references': ['error'],
'no-unused-definitions': ['error'],
'ordered-list-marker-style': ['error', '.'],
'ordered-list-marker-value': ['error', 'one'],
'rule-style': ['error', '***'],
'strong-marker': ['error', '*'],
'table-cell-padding': ['warn', 'padded'],
'table-cell-alignment': ['warn'],
'table-pipes': ['warn'],
'unordered-list-marker-style': ['warn', '*']
};
}
module.exports = remarkrc;
+37
Ver Arquivo
@@ -0,0 +1,37 @@
language: node_js
node_js:
- 4.4
before_install:
- export CHROME_BIN=/usr/bin/google-chrome
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
after_failure:
- npm ls --depth=1
after_success:
- npm run assets
notifications:
irc:
channels:
- chat.freenode.net#videojs
use_notice: true
on_success: never
webhooks:
- http://pam.videojs.com/savage/travis
slack:
secure: LrF8K6mCYWlUt6SvdbGHazyQZSk/opKoiB/wgoGYaGc9+3wYXkVexY0WkO1m6wBKhUqXRAMVMFszr1wqKgdcxtItmFMMj8HqTLI1MVqgKqYX4Ux3CnEHJQiwxIk0aVL7lHLsZTXV/2Y0QIOYmAnCrgy46klETrk0ZuXf5okpu2Q=
env:
global:
- secure: K6JpKwMkfNaJix3Bb0tLjVMzHMJgtBXdd/dvfw1BMb9DCBpd81PqXbDs7yXCddUxnUPTBPxZCrQgWsw71Wn+qEoIG5MU3uOT5A2rBbx/yZonVAGv5ed/9w0xk0OzO383CmPMFqwqtp9YmdmqGjQBkYXVXJjTvNTOAExFSdhO+3U=
- secure: GIbhjUJapvC70nIZVlhVyK+3KAD2TVKpiY/q412OO7V2izbvcM1tvU3LBoMZbROzrt5TT84tCoJDvHnrpL0OvxPwrzL5CUU7h4UTxhTOyQkEinbYAnWlW9wdrvtdczsEvANkFPqBZ53B3hVHZHMLOG8QRWaTBicF68vSHEJFqb4=
- secure: gglh7xDnURKfXp9T543DD7NG1pQ8HeWh1XtRspBAwr0H7RqJBVDqqODSYSPRFhfld7M6sYmvQIXgil7XlyefnKNTXqCarvaoTg3lbip8kSltXMiNw2V6AVpsQGuja7+XbaM0do70ETTKjW4Kw6wnxEHb78BvGN/hXIeqizUAjanlDAjd7fouaxpTBIbMESe2rI+WRHPis1cmnv8v70Mrh/8Un/NO4gkebGyvA47LTDNIaVqIVjonsndr8WjMv1/PNxQ8LyCO6D64MufrobS7Sec+VuN30apwEsBw8v82MK/MZ3qXu0lUp4+ERTbuc/rymh2wDFTQeG20Kf/NTauSaH6f414KNzIRFj0/xyLAzVZKIscXM2DKXMuskkZuvHLZvaspnZWcPYTjPZl0P88N0RBqnoLdR80dR5bDljNwU2QnSBeol/q1wXNEr6I1VTRFOB+qsHrD1blVMB1I5W3I0ti1aQ7XtgMOGi1kcPb4oFcJdl+3dLFDnyRyaNfdMOnOZYBBHdQCo19Mj/L+nqPGWeeYiEAM6JsuhNjHn5Za5nGf1ztXTimVPOQjyATin0x9kST3soLWSVmdW2dBHUGDVSMhvoLLR+nKSdNQ0KfpqtgrzeLxoVnRYHVBlih41tapM9IG/6BMYnDMaRcc0i54YeUP4oxlxGSyASIenkAgC6w=
- secure: WtIEOSnqDkCZuTlBsxwlVwaRpVTbz7ol8+XSJIZb0aFo1lLisF9cz6s9WrAfX36MaxIcDN9LFZkpXzMvNrNkZWQa1kacGWH1rbx0SiiQ8LMweAcKdnZ5uXlSplBxbJ8bZfXKB1sIHsOsYw/vWhHKkcsDUkAEzQrIiMOhuoUV3s0uKM0knKXIAfNIF0EbDzLIojm+nm+F0n5vM60LRdKesaSt/o2p2LKxdZVoFGrg48D7bdA9VEfMWWRL/evDxJmnX4p+AjBc7mklqZ5F2pYsY6XXQuuS+2Sy+lnxz01kLg+RC4Cpv5dyYfK3h0j8KeyK8IuixycVONWVe9rANq8UaIsMrRN+6uDSC8zXiH4P+h6UDMm3jetc2ZyAfhBA8OyIs5QEShae2Rd7Y3WFJxBp6UVgyj6SkXGxrEdb1ZJgTTl4dyqiP0bYrLePNP2qSJ6OTfNdG791HF077uzXI96ABdMG54Wv9N9T/hmxKwV2Lajx/GZJMmHuwT9tkHKhkcxWea1HYam9QYSFUyJ5THfNk2A9u/r8DkL62MZ85zIQBisrlFjbPAGRejq6qyirBJPAy+FCjhM+oO/i2f2bGkkAfHGT0Og1BcrWVXs54yWdO7UZgie2F+Rmdwinb/GxebZJ+21ZQ4OkVr2t1Skr/PRni9+U7q/6xCLwUJgx45XJ0FE=
sudo: false
dist: trusty
cache:
directories:
- node_modules
addons:
firefox: latest
apt:
packages:
- google-chrome-stable
-10
Ver Arquivo
@@ -1,10 +0,0 @@
---
confirm_review: true
backup_remote: false
release_branch: stable
project: videojs
qa_branch: false
staging_branch: false
development_branch: master
remote: origin
confirm_staging: false
+1691 -28
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+128
Ver Arquivo
@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
## Table of Contents
* [Our Pledge](#our-pledge)
* [Our Standards](#our-standards)
* [Our Responsibilities](#our-responsibilities)
* [Scope](#scope)
* [Other Community Standards](#other-community-standards)
* [Enforcement](#enforcement)
* [Further Enforcement](#further-enforcement)
* [Who Watches the Watchers?](#who-watches-the-watchers)
* [Attribution](#attribution)
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
### Other Community Standards
As a project on GitHub, this project is additionally covered by the [GitHub Community Guidelines](https://help.github.com/articles/github-community-guidelines/).
Additionally, as a project hosted on npm, is is covered by [npm, Inc's Code of Conduct](https://www.npmjs.com/policies/conduct).
Enforcement of those guidelines after violations overlapping with the above are the responsibility of the entities, and enforcement may happen in any or all of the services/communities.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at gary@videojs.com or @gkatsev on [slack][]. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
### Further Enforcement
If you've already followed the [initial enforcement steps](#enforcement), these are the steps maintainers will take for further enforcement, as needed:
1. Repeat the request to stop.
1. If the person doubles down, they will have offending messages removed or edited by a maintainers given an official warning. The PR or Issue may be locked.
1. If the behavior continues or is repeated later, the person will be blocked from participating for 24 hours.
1. If the behavior continues or is repeated after the temporary block, a long-term (6-12mo) ban will be used.
On top of this, maintainers may remove any offending messages, images, contributions, etc, as they deem necessary.
Maintainers reserve full rights to skip any of these steps, at their discretion, if the violation is considered to be a serious and/or immediate threat to the health and well-being of members of the community. These include any threats, serious physical or verbal attacks, and other such behavior that would be completely unacceptable in any social setting that puts our members at risk.
Members expelled from events or venues with any sort of paid attendance will not be refunded.
### Who Watches the Watchers?
Maintainers and other leaders who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. These may include anything from removal from the maintainer team to a permanent ban from the community.
Additionally, as a project hosted on both GitHub and npm, [their own Codes of Conducts may be applied against maintainers of this project](#other-community-standards), externally of this project's procedures.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
The [Other Community Standards](#other-community-standards), [Further Enforcement](#further-enforcement),
and [Who Watches the Watchers?](#who-watches-the-watchers) sections are based on [weallbehave][weallbehave],
which is based on the [WeAllJS Code of Conduct][wealljs].
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
[wealljs]: https://wealljs.org/code-of-conduct
[weallbehave]: https://npm.im/weallbehave
[slack]: http://slack.videojs.com
+448
Ver Arquivo
@@ -0,0 +1,448 @@
# Collaborator Guide
## Table of Contents
* [Issues and Pull Requests](#issues-and-pull-requests)
* [Accepting changes](#accepting-changes)
* [Involving the TSC](#involving-the-tsc)
* [Landing a PR](#landing-a-pr)
* [Landing a PR manually](#landing-a-pr-manually)
* [Landing a PR manually with several changes](#landing-a-pr-manually-with-several-changes)
* [I just made a mistake](#i-just-made-a-mistake)
* [I accidentally pushed a broken commit or incorrect commit to master](#i-accidentally-pushed-a-broken-commit-or-incorrect-commit-to-master)
* [I lost changes](#i-lost-changes)
* [I accidentally committed a broken change to master](#i-accidentally-committed-a-broken-change-to-master)
* [video.js releases](#videojs-releases)
* [Getting dependencies](#getting-dependencies)
* [Install contrib](#install-contrib)
* [npm access](#npm-access)
* [GitHub personal access token](#github-personal-access-token)
* [Doing a release](#doing-a-release)
* [Doc credit](#doc-credit)
## Issues and Pull Requests
Full courtesy should always be shown in video.js projects.
Collaborators may manage issues they feel qualified to handle, being mindful of our guidelines.
Any issue and PR can be closed if they are not relevant, when in doubt leave it open for more discussion. Issues can always be re-opened if new information is made available.
If issues or PRs are very short and don't contain much information, ask for more by linking to the [issue][issue template] or [PR][pr template] template. There is also a [response guide](https://github.com/videojs/video.js/wiki/New-Issue-Response-Guide) if you're unsure.
## Accepting changes
Any code change in video.js should be happening through Pull Requests on GitHub. This includes core committers.
Before a PR is merged, it must be reviewed by at least two core committers, at least one if it comes from a core committer.
Feel free to @-mention a particular core committer if you know they are experts in the area that is being changed.
If you are unsure about the modification and cannot take responsibility for it, defer to another core committer.
Before merging the change, it should be left open for other core committers to comment on. At least 24 hours during a weekday, and the 48 hours on a weekend. Trivial changes or bug fixes that have been reviewed by multiple committers may be merged without delay.
For non-breaking changes, if there is no disagreeming between the collaborators, the PR may be landed assuming it was reviewed. If there is still disagreement, it may need to be [escalated to the TSC](#involving-the-tsc).
Bug fixes require a test case that fails beforehand and succeeds after. All code changes should contain tests and pass on the CI.
### Involving the TSC
A change or issue can be elevated to the TSC by assing the `tsc-agent` label. This should be done in the following scenarios:
* There will be a major impact on the codebase or project
* The change is inherently controversial
* No agreement was reached between collaborators participating in the discussion
The TSC will be the final arbiter when required.
## Landing a PR
Landing a PR is fairly easy given that we can use the GitHub UI for it.
When using the big green button on GitHub, make sure the "squash and merge" is selected -- it should be the only allowed option. If a PR has two features in it and should be merged as two separate commits, either ask the contributor to break it up into two, or follow the [manual steps](#landing-a-pr-manually).
The commit message should follow our [conventional changelog conventions][conventions]. They are based on the angularjs changelog conventions. The changelog is then generated from these commit messages on release.
The first line of the commit message -- the header and first text box on GitHub -- should be prefixed with a type and optional scope followed by a short description of the commit.
The type is required. Two common ones are `fix` and `feat` for bug fixes and new features. Scope is optional and can be anything.
The body should contain extra information, potentially copied from the original comment of the PR.
The footer should contain things like whether this is a breaking change or what issues were fixed by this PR.
Here's an example:
```commit
fix(html5): a regression with html5 tech
This is where you'd explain what the regression is.
Fixes #123
```
### Landing a PR manually
_Optional:_ ensure you're not in a weird rebase or merge state:
```sh
git am --abort
git rebase --abort
```
Checkout and update the master branch:
```sh
git checkout master
git remote update
git rebase upstream/master
```
Check out the PR:
```sh
git fetch upstream pull/{{PR Number}}/head:{{name of branch}}
git checkout -t {{name of branch}}
```
> For example:
>
> ```sh
> git fetch upstream pull/123/head:gkatsev-html5-fix
> git checkout -t gkatsev-html5-fix
> ```
_Optional:_ If necessary, rebase against master. If you have multiple features in the PR, [landing a PR manually with several changes](#landing-a-pr-manually-with-several-changes)
```sh
git rebase master
```
Fix up any issues that arise from the rebase, change back to the master branch and squash merge:
```sh
git checkout master
git merge --squash --no-commit gkatsev-html5-fix
```
The `--no-commit` tells git not to make a commit on your behalf. It does stage everything for you, so, you can instead it:
```sh
git diff --cached
```
Now get the author from the original commit:
```sh
git log -n 1 --pretty=short gkatsev-html5-fix
```
Which shows:
```txt
commit 433c58224f5be34480c8e067ca6c5406ba1c1e9c
Author: Gary Katsevman <git@gkatsev.com>
Update TOC
```
Now you can commit the change the change with the author, following our commit guidelines
```sh
git commit --author "Gary Katsevman <git@gkatsev.com>"
```
Now that it's committed, push to master
```sh
git push upstream master
```
Congratulate yourself for a job well done and the contributor for having his change landed in master.
#### Landing a PR manually with several changes
Follow the same steps as before but when you rebase against master, you want to do an interactive rebase and then squash the changes into just a few commits.
```sh
git rebase -i master
```
This will give you an output like the following:
```txt
pick b4dc15d Update CONTRIBUTING.md with latest info
pick 8592149 Add Dev certificate of origin
pick 259dee6 Add grunt and doctoc npm scripts
pick f12af12 Add conventional-changelog-videojs link
pick ae4613a Update node's CONTRIBUTING.md url
pick 433c582 Update TOC
# Rebase f599ef4..433c582 onto f599ef4 (6 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
```
Replace `pick` to `fixup` or `edit` depending on how you want the output to look. You can also re-order the commits, if necessary.
> `fixup` will squash the commit it's infront of up into the commit above it
>
> `edit` will allow you to edit the commit message before continuing
```txt
edit b4dc15d Update CONTRIBUTING.md with latest info
fixup 8592149 Add Dev certificate of origin
fixup f12af12 Add conventional-changelog-videojs link
fixup ae4613a Update node's CONTRIBUTING.md url
fixup 433c582 Update TOC
edit 259dee6 Add grunt and doctoc npm scripts
```
When you get to the edit commits, git will give more information, but you'd want to run ammend the current commit while following our commit guidelines
```sh
git commit --amend
```
After going through and making the commits you want, you want to change back to master and then rebase the branch onto master so we get a clean history
```sh
git rebase gkatsev-html5-fix
```
This will put our two commits into master:
```txt
b4dc15d chore(contributing.md): Update CONTRIBUTING.md with latest info <Gary Katsevman>
259dee6 chore(package.json): Add grunt and doctoc npm scripts <Gary Katsevman>
9e20386 v5.12.6 <Gary Katsevman>
```
Now you're ready to push to master as in the normal instructions.
#### I just made a mistake
While `git` allows you to update the remote branch with a force push (`git push -f`). This is generally frowned upon since you're rewriting public history. However, if you just pushed the change and it's been less than 10 minutes since you've done with, you may force push to update the commit, assuming no one else has already pushed after you.
##### I accidentally pushed a broken commit or incorrect commit to master
Assuming no more than 10 minutes have passed, you may force-push to update or remove the commit. If someone else has already pushed to master or 10 minutes have passed, you should instead use the revert command (`git revert`) to revert the commit and then commit the proper change, or just fix it forward with a followup commit that fixes things.
##### I lost changes
Assuming that the changes were committed, even if you lost the commit in your current history does not mean that it is lost. In a lot of cases you can still recover it from the PR branch or if all else fails look at [git's reflog](https://git-scm.com/docs/git-reflog).
##### I accidentally committed a broken change to master
This is a great time to discover that something is broken. Because it hasn't been pushed to GitHub yet, it's very easy to reset the change as if nothing has happened and try again.
To do so, just reset the branch against master.
```sh
git reset --hard upstream/master
```
## video.js releases
Releasing video.js is partially automated through various scripts.
To do a release, you need a couple of things: npm access, GitHub personal access token.
Releases in video.js are done on npm and GitHub and eventually posted on the CDN.
These are the instructions for the npm/GitHub releases.
When we do a release, we release it as a `next` tag on npm first and then at least a week later, we promote this release to `latest` on npm.
### Getting dependencies
#### npm access
To see who currently has access run this:
```sh
npm owner ls video.js
```
If you are a core committer, you can request access to npm from one of the current owners.
Access is managed via an [npm organization][npm org] for [Video.js][vjs npm].
#### GitHub personal access token
This is used to make a GitHub release on videojs. You can get a token from the [personal access tokens](https://github.com/settings/tokens) page.
After generating one, make sure to keep it safe because GitHub will not show the token for you again. A good place to save it is Lastpass Secure Notes.
### Deciding what type of version release
Since we follow the [conventional changelog conventions][conventions],
all commits are prepended with a type, most commonly `feat` and `fix`.
If all the commits are fix or other types such as `test` or `chore`, then the release will be a `patch` release.
If there's even one `feat`, the release will be a `minor` release.
If any commit has a `BREAKING CHANGE` footer, then the release will be a `major` release.
Most common releases will be either `patch` or `minor`.
### Doing a release
It is also recommended you have a clean clone of Video.js for each release line you want to release.
That means having a folder for master/v6 and one for 5.x.
This is because 5.x and 6.x have different versions expecations for release process and have different dependencies.
Plus, during development you could end up with a dirty repo, so, it just usually easier if you have a clean release repo.
```sh
# for v6
git clone git@github.com:videojs/video.js.git videojs-6-release
# for v5
git clone git@github.com:videojs/video.js.git videojs-5-release
```
#### Video.js 6
Make sure go to the master branch and grab the latest updates.
```sh
git checkout master
git pull origin master
```
At this point, you should run `npm install` because dependencies may have changed.
Then, it's mostly a standard npm package release process with running `npm version`, followed by an `npm publish`.
```sh
npm version {major|minor|patch}
```
Depending on the commits that have been merged, you can choose from `major`, `minor`, or `patch` as the versioning values.
See [deciding what type of version release section](#deciding-what-type-of-version-release).
Optionally, you can run `git show` now to verify that the version update and CHANGELOG automation worked as expected.
Afterwards, you want to push the commit and the tag to the repo.
It's necessary to do this before running `npm publish` because our GitHub release automation
relies on the commit being available on GitHub.
```sh
git push --tags origin master
```
Finally, run `npm publish` with an appropriate tag. Don't forget to supply your token.
```sh
VJS_GITHUB_USER=gkatsev VJS_GITHUB_TOKEN=my-personal-access-token npm publish --tag next
```
After it's done, verify that the GitHub release has the correct changelog output.
This is to make sure that the CHANGELOG didn't get garbled and isn't missing pieces.
If the GitHub release did not work correctly, such as if the GitHub token was not provided,
you can run it manually:
```sh
VJS_GITHUB_USER=gkatsev VJS_GITHUB_TOKEN=123 node build/gh-release.js --prelease
```
#### Video.js 5
Make sure to go to the 5.x branch and grab the latest updates.
```sh
git checkout 5.x
git pull origin 5.x
```
> *Note:* you probably need to delete v6 tags due to the way that the our CHANGELOG lib works.
>
> You can run this to delete them:
> ```sh
> git tag | grep '^v6' | xargs git tag -d
> ```
> This will find all tags that start with `^v6` and delete them.
At this point, you should run `npm install` because dependencies may have changed.
Then, we have a script that automates most of the steps for publishing. It's a little trickier than publishing v6.
##### Edit git-semver-tags
You'll need to edit `git-semver-tags` to support our usage of tags that are not part of the branch.
In the file `node_modules/conventional-changelog-cli/node_modules/conventional-changelog/node_modules/conventional-changelog-core/node_modules/git-semver-tags/index.js`, edit the line that says sets the `cmd` to be:
```js
var cmd = 'git log --all --date-order --decorate --no-color';
```
#### And now for the release
After getting rid of the tags and getting the latest updates, you can just run the release script:
```sh
VJS_GITHUB_USER=gkatsev VJS_GITHUB_TOKEN=123 ./build/bin/release-next.sh
```
It will prompt you for a version change type, so, input `patch` or `minor` or `major`.
See [deciding what type of version release section](#deciding-what-type-of-version-release).
When it's done building everything, it'll show you the commit that's made via the default pager (i.e., less).
At this point you can verify that things look normal rather than, for example, missing all the CSS.
After exiting the pager, it'll make sure you want to continue with publishing.
It will automatically release it as a `next-5` tag on npm.
Then push the local changes up:
```sh
git push --tags origin 5.x
```
Also, you'll need to copy the CHANGELOG for this version and manually edit the GitHub release to include it.
The current release's CHANGELOG could be copied from the [raw CHANGELOG.md file][raw chg] (or locally from the markdown file)
and then pasted into the correct [GitHub release](https://github.com/videojs/video.js/releases).
### Deploy as a patch to the CDN
Follow the steps on the [CDN repo][] for the CDN release process.
If it's a `next` or `next-5` release, only publish the patch version to the CDN.
When the version gets promoted to `latest` or `latest-5`, the corresponding `minor` or `latest` version should be published to the CDN.
### Announcement
An announcement should automatically make it's way to #announcements channel on [slack][], it uses IFTTT and might take a while.
You can also post it to twitter or ask someone (like @gkatsev) to post on your behalf.
If it's a large enough release, consider writing a blog post as well.
## Doc credit
This collaborator guide was heavily inspired by [node.js's guide](https://github.com/nodejs/node/blob/master/COLLABORATOR_GUIDE.md)
[issue template]: /.github/ISSUE_TEMPLATE.md
[pr template]: /.github/PULL_REQUEST_TEMPLATE.md
[conventions]: https://github.com/videojs/conventional-changelog-videojs/blob/master/convention.md
[vjs npm]: http://npmjs.com/org/videojs
[npm org]: https://docs.npmjs.com/misc/orgs
[slack]: http://slack.videojs.com
[CDN repo]: https://github.com/videojs/cdn
[raw chg]: https://raw.githubusercontent.com/videojs/video.js/5.x/CHANGELOG.md
+332
Ver Arquivo
@@ -0,0 +1,332 @@
# CONTRIBUTING
So you want to help out? Great! There's a number of ways you can get involved.
## Table of Contents
* [Other repositories where issues could be filed](#other-repositories-where-issues-could-be-filed)
* [Filing issues](#filing-issues)
* [Reporting a Bug](#reporting-a-bug)
* [Requesting a Feature](#requesting-a-feature)
* [Contributing code](#contributing-code)
* [Building video.js locally](#building-videojs-locally)
* [Forking and cloning the repository](#forking-and-cloning-the-repository)
* [Installing local dependencies](#installing-local-dependencies)
* [Running tests](#running-tests)
* [Building videojs](#building-videojs)
* [Testing Locally](#testing-locally)
* [Sandbox test directory](#sandbox-test-directory)
* [Running a local web server](#running-a-local-web-server)
* [Watching source and test changes](#watching-source-and-test-changes)
* [Making Changes](#making-changes)
* [Step 1: Verify](#step-1-verify)
* [Step 2: Update remote](#step-2-update-remote)
* [Step 3: Branch](#step-3-branch)
* [Step 4: Commit](#step-4-commit)
* [Step 5: Test](#step-5-test)
* [Step 6: Push](#step-6-push)
* [Code Style Guide](#code-style-guide)
* [Developer's Certificate of Origin 1.1](#developers-certificate-of-origin-11)
* [Doc Credit](#doc-credit)
## Other repositories where issues could be filed
There's also other Video.js projects where you can help. (check the [video.js org](https://github.com/videojs) for an up-to-date list of projects)
* [Videojs.com](https://github.com/videojs/videojs.com)
* [Video.js flash player](https://github.com/videojs/videojs-flash)
* [HLS](https://github.com/videojs/videojs-contrib-hls)
* [DASH](https://github.com/videojs/videojs-contrib-dash)
* [Youtube Tech](https://github.com/videojs/videojs-youtube)
* [Vimeo Tech](https://github.com/videojs/videojs-vimeo)
* [Ads](https://github.com/videojs/videojs-contrib-ads)
* [Plugin generator](https://github.com/videojs/generator-videojs-plugin)
* [Linter][linter]
## Filing issues
[GitHub Issues](https://github.com/videojs/video.js/issues) are used for all discussions around the codebase, including **bugs**, **features**, and other **enhancements**.
When filling out an issue, make sure to fill out the questions in the
### Reporting a Bug
**A bug is a demonstrable problem** that is caused by the code in the repository. Good bug reports are extremely helpful. Thank You!
Guidelines for bug reports:
1. If your issue is with a particular video.js plugin or subproject, please open an issue against that project. See [list of some potential other projects above](#other-repositories-where-issues-could-be-filed)
1. Use the [GitHub issue search](https://github.com/videojs/video.js/issues) — check if the issue has already been reported.
1. Check if the issue has already been fixed — try to reproduce it using the latest `master` branch in the repository.
1. Isolate the problem — **create a [reduced test case](https://css-tricks.com/reduced-test-cases/)** with a live example. You can possibly use [this JSBin example](http://jsbin.com/axedog/edit) as a starting point -- don't forget to update it to the videojs version you use.
1. Answer all questions in the [issue template][]. The questions in the issue template are designed to try and provide the maintainers with as much information possible to minimize back-and-forth to get the issue resolved.
A good bug report should be as detailed as possible, so that others won't have to follow up for the essential details.
**[File a bug report](https://github.com/videojs/video.js/issues/new)**
### Requesting a Feature
1. [Check the plugin list](http://videojs.com/plugins/) for any plugins that may already support the feature.
1. [Search the issues](https://github.com/videojs/video.js/issues) for any previous requests for the same feature, and give a thumbs up or +1 on existing requests.
1. If no previous requests exist, create a new issue. Please be as clear as possible about why the feautre is needed and the intended use case.
1. Once again, be as details as possible and follow the [issue template][]
**[Request a feature](https://github.com/videojs/video.js/issues/new)**
## Contributing code
To contibute code you'll need to be able to build a copy of Video.js and run tests locally. There are a few requirements before getting started.
* Node.js
Video.js uses Node for build and test automation. Node is available for Windows, Mac OS X, Linux, and SunOS, as well as source code if that doesn't scare you. [Download and install Node.js](http://nodejs.org/download/)
* `grunt-cli`
Optionally, install `grunt-cli` globally to use grunt directly. It can always be run via an npm script:
```sh
npm run grunt
```
```sh
npm install -g grunt-cli
```
Depending on how you have node and npm set up, you may need to run the global install (`-g`) as a superuser by prepending `sudo`.
### Building video.js locally
#### Forking and cloning the repository
First, [fork](http://help.github.com/fork-a-repo/) the video.js git repository. At the top of every GitHub page, there is a Fork button. Click it, and the forking process will copy Video.js into your own GitHub account.
Clone your fork of the repo into your code directory
```sh
git clone https://github.com/<your-username>/video.js.git
```
Navigate to the newly cloned directory
```sh
cd video.js
```
Assign the original repo to a remote called "upstream"
```sh
git remote add upstream https://github.com/videojs/video.js.git
```
> In the future, if you want to pull in updates to video.js that happened after you cloned the main repo, you can run:
>
> ```sh
> git remote update
> git checkout master
> git pull upstream master
> ```
#### Installing local dependencies
Install the required node.js modules using node package manager
```sh
npm install
```
> A note to Windows developers: If you run npm commands, and you find that your command prompt colors have suddenly reversed, you can configure npm to set color to false to prevent this from happening.
> `npm config set color false`
> Note that this change takes effect when a new command prompt window is opened; the current window will not be affected.
#### Running tests
Tests can be run either from the shell or from the browser.
To run the tests from the shell, just run
```sh
npm test
```
This will build video.js locally and run the test suite using [Karma](https://karma-runner.github.io/1.0/index.html), which runs our tests in actual browsers.
To run tests from the browser, first start a local server with `npm start` (this also watches for changes and rebuilds video.js and the test files as necessary). Then navigate to `http://localhost:9999/test`, and you'll see a page that displays the results of all the tests. To rerun the tests after making changes, just refresh the page. To run an individual test, click the "Rerun" link next to the test's title.
#### Building videojs
To build video.js, simply run
```sh
npm run build
```
This outputs an `es5/` and `dist/` folder. The `es5/` folder is used by bundling tools like browserify and webpack to package video.js into projects. The `dist/` folder has pre-compiled versions of video.js, including a minified version and the CSS file. This file can be included in page via a `<script></script>` tag.
#### Testing Locally
Besides running automated tests, you often want to run video.js manually and play around with things as you're developing. A few things are provided to make it easier.
#### Sandbox test directory
There's a sandbox directory where you can add any file and it won't get tracked in git. To start you can copy the example index file.
```sh
cp sandbox/index.html.example sandbox/index.html
```
See [the following section](#running-a-local-web-server) for how to open the page in a browser.
#### Running a local web server
This ties in nicely with the sandbox directory. You can always open the `sandbox/index.html` file directly but in some cases it may not work properly.
> Flash files (`.swf`) that are local and loaded into a locally accessed page (file:///) will NOT run.
> To get around this you must use a local web server.
To run the local webserver, you can run it in a couple of ways.
```sh
grunt connect
open http://localhost:9999/sandbox/index.html
```
or
```sh
npm start
```
The latter does some extra work which will be described in the next section.
#### Watching source and test changes
As you're developing, you want the build to re-run and update itself, and potentially re-run the tests. In addition, you want to launch a local web-server that you can open the `sandbox` directory in.
To do so, you just need to run
```sh
npm start
```
This sets up the local webserver using connect and then watches source files, test files, and CSS files for you and rebuilds things as they happen.
### Making Changes
#### Step 1: Verify
Whether you're adding something new, making something better, or fixing a bug, you'll first want to search the [GitHub issues](https://github.com/videojs/video.js/issues) and [plugins list](https://github.com/videojs/video.js/wiki/Plugins) to make sure you're aware of any previous discussion or work. If an unclaimed issue exists, claim it via a comment. If no issue exists for your change, submit one, follwing the [issue filing guidelines](#filing-issues).
#### Step 2: Update remote
Before starting work, you want to update your local repository to have all the latest changes.
```sh
git remote update
git checkout master
git rebase upstream/master
```
#### Step 3: Branch
You want to do your work in a separate branch.
```sh
git checkout -b my-branch
```
#### Step 4: Commit
Commit changes as you go. Write thorough descriptions of your changes in your commit messages.
For more information see our [conventional changelog guidelines for video.js](https://github.com/videojs/conventional-changelog-videojs/blob/master/convention.md)
Follow these guidelines:
1. The first line should be less than 50 characters and contain a short description of the commit.
1. The body should contain a more detailed description. It can contain things like reasoning for the change and specifics of what changed.
1. A footer can be added if this fixes a particular issue on GitHub.
```sh
git add src/js/player.js
git commit
```
An example of the first line of a commit message: `fix: changed the footer to correctly display foo`
In the body of the commit message, we can talk about why we made the change. What the change entails.
Any testing considerations or things to think about when looking at the commit. For Example:
```txt
fix: one line commit explanation
In the body of the commit message, we can talk about why we made the change. What the change entails.
Any testing considerations or things to think about when looking at the commit.
Fixes #123. The footer can contain Fixes messages.
```
> Make sure that git knows your name and email:
>
> ```sh
> git config --global user.name "Random User"
> git config --global user.email "random.user@example.com"
> ```
#### Step 5: Test
Any code change should come with corresponding test changes. Especially bug fixes.
Tests attached to bug fixes should fail before the change and succeed with it.
```sh
npm test
```
See [Running tests](#running-tests) for more information.
#### Step 6: Push
```sh
git push origin my-branch
```
Then go to the [repo page](http://github.com/videojs/video.js) and click the "Pull Request" button and fill out the [pull request template](/.github/PULL_REQUEST_TEMPLATE.md)
### Code Style Guide
Our javascript is linted using [videojs-standard][linter].
## [Developer's Certificate of Origin 1.1](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#developers-certificate-of-origin-11)
By making a contribution to this project, I certify that:
* (a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
* (b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
* (c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
* (d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
## Doc Credit
This doc was inspired by some great contribution guide examples including [contribute.md template](https://github.com/contribute-md/contribute-md-template),
[grunt](https://github.com/gruntjs/grunt/wiki/Contributing),
[html5 boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md),
[jquery](https://github.com/jquery/jquery/blob/master/CONTRIBUTING.md),
and [node.js](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md).
[issue template]: /.github/ISSUE_TEMPLATE.md
[linter]: https://github.com/videojs/standard
+7
Ver Arquivo
@@ -0,0 +1,7 @@
require('babel-register');
// Need to `require` a separate Grunt file so we can use ES6 syntax via
// Babel's require hook.
module.exports = function(grunt) {
require('./build/grunt.js')(grunt);
};
-165
Ver Arquivo
@@ -1,165 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
+13
Ver Arquivo
@@ -0,0 +1,13 @@
Copyright Brightcove, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+127 -22
Ver Arquivo
@@ -1,30 +1,135 @@
VideoJS - [HTML5 Video Player](http://videojs.com)
==================================================
Version 3.0 BETA
![Video.js logo][logo]
Visit the main site at [videojs.com](http://videojs.com) for download options and instructions.
# [Video.js - HTML5 Video Player][vjs]
To build video-js from the latest version of the source, clone the source repository and run:
sh build.sh
in the video-js directory using the commnand-line/terminal of a unix-based system.
[![Build Status][travis-icon]][travis-link]
[![Coverage Status][coveralls-icon]][coveralls-link]
[![Slack Status][slack-icon]][slack-link]
Contributing
------------
If you'd like to help out on VideoJS, you are awesome. Updates should be made to the source files and then make a pull request.
[![NPM][npm-icon]][npm-link]
When working on VideoJS code, you can use dev.html as your test page. It doesn't exist in the repo and changes to it won't be tracked. To get your own copy simply clone the repo and copy dev.html.example.
cp dev.html.example dev.html
> Video.js is a web video player built from the ground up for an HTML5 world. It supports HTML5 and Flash video, as well as YouTube and Vimeo (through [plugins][plugins]). It supports video playback on desktops and mobile devices. This project was started mid 2010, and the player is now used on over ~~50,000~~ ~~100,000~~ ~~200,000~~ [400,000 websites][builtwith].
You can use dev.html to test new code. It's simple HTML doc that includes all the source files. Send a pull request for any updates.
## Table of Contents
---
BETA NOTES
Version 3 is almost a complete rewrite of the previous versions of VideoJS. New features includes:
* [Quick Start](#quick-start)
* [Contributing](#contributing)
* [Code of Conduct](#code-of-conduct)
* [License](#license)
- HTML/CSS Controls and API now work for both the HTML5 and Flash versions.
- Custom Super-lightweight Flash Fallback
- Embed Code is much simpler.
- No more "vjs-box" div required, just use the video tag.
- No more embedding of Flash fallback within the video tag HTML.
## Quick Start
---
Thanks to the awesome folks over at [Fastly][fastly], there's a free, CDN hosted version of Video.js that anyone can use. Add these tags to your document's `<head>`:
```html
<link href="//vjs.zencdn.net/5.19/video-js.min.css" rel="stylesheet">
<script src="//vjs.zencdn.net/5.19/video.min.js"></script>
```
> For the latest version of video.js and URLs to use, check out the [Getting Started][getting-started] page on our website.
Next, using Video.js is as simple as creating a `<video>` element, but with an additional `data-setup` attribute. At a minimum, this attribute must have a value of `'{}'`, but it can include any Video.js [options][options] - just make sure it contains valid JSON!
```html
<video
id="my-player"
class="video-js"
controls
preload="auto"
poster="//vjs.zencdn.net/v/oceans.png"
data-setup='{}'>
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4"></source>
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm"></source>
<source src="//vjs.zencdn.net/v/oceans.ogv" type="video/ogg"></source>
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="http://videojs.com/html5-video-support/" target="_blank">
supports HTML5 video
</a>
</p>
</video>
```
When the page loads, Video.js will find this element and automatically setup a player in its place.
If you don't want to use automatic setup, you can leave off the `data-setup` attribute and initialize a `<video>` element manually using the `videojs` function:
```js
var player = videojs('my-player');
```
The `videojs` function also accepts an `options` object and a callback to be invoked
when the player is ready:
```js
var options = {};
var player = videojs('my-player', options, function onPlayerReady() {
videojs.log('Your player is ready!');
// In this context, `this` is the player that was created by Video.js.
this.play();
// How about an event listener?
this.on('ended', function() {
videojs.log('Awww...over so soon?!');
});
});
```
If you're ready to dive in, the [Getting Started][getting-started] page and [documentation][docs] are the best places to go for more information. If you get stuck, head over to our [Slack channel][slack-link]!
## Contributing
Video.js is a free and open source library, and we appreciate any help you're willing to give - whether it's fixing bugs, improving documentation, or suggesting new features. Check out the [contributing guide][contributing] for more!
_Video.js uses [BrowserStack][browserstack] for compatibility testing._
## [Code of Conduct][coc]
Please note that this project is released with a [Contributor Code of Conduct][coc]. By participating in this project you agree to abide by its terms.
## [License][license]
Video.js is [licensed][license] under the Apache License, Version 2.0.
[browserstack]: https://browserstack.com
[builtwith]: https://trends.builtwith.com/media/VideoJS
[contributing]: CONTRIBUTING.md
[coveralls-icon]: https://coveralls.io/repos/github/videojs/video.js/badge.svg?branch=master
[coveralls-link]: https://coveralls.io/github/videojs/video.js?branch=master
[docs]: http://docs.videojs.com
[fastly]: http://www.fastly.com/
[getting-started]: http://videojs.com/getting-started/
[license]: LICENSE
[logo]: http://videojs.com/img/logo.png
[npm-icon]: https://nodei.co/npm/video.js.png?downloads=true&downloadRank=true
[npm-link]: https://nodei.co/npm/video.js/
[options]: docs/guides/options.md
[plugins]: http://videojs.com/plugins/
[slack-icon]: http://slack.videojs.com/badge.svg
[slack-link]: http://slack.videojs.com
[travis-icon]: https://travis-ci.org/videojs/video.js.svg?branch=master
[travis-link]: https://travis-ci.org/videojs/video.js
[vjs]: http://videojs.com
[coc]: CODE_OF_CONDUCT.md
-203
Ver Arquivo
@@ -1,203 +0,0 @@
require 'rubygems'
require 'yaml'
require 'httparty'
namespace :build do
desc "Build version for current '/c/' CDN copy and locked in version"
task :current do
Rake::Task["build:source"].execute
cdn_version_num = "#{version['major']}.#{version['minor']}"
['c', cdn_version_num].each do |vsn|
Rake::Shell["mkdir dist/#{vsn}"]
File.open("dist/#{vsn}/video.js", "w+") do |file|
file.puts File.read("dist/video.min.js").sub('GENERATED_CDN_VSN', vsn)
end
Rake::Shell["cp dist/video-js.min.css dist/#{vsn}/video-js.css"]
Rake::Shell["cp dist/video-js.swf dist/#{vsn}/video-js.swf"]
Rake::Shell["cp dist/video-js.png dist/#{vsn}/video-js.png"]
Rake::Shell["cp dist/demo.html dist/#{vsn}/demo.html"]
Rake::Shell["cp dist/captions.vtt dist/#{vsn}/captions.vtt"]
end
Rake::Shell["mkdir dist/video-js"]
File.open("dist/video-js/video.min.js", "w+") do |file|
file.puts File.read("dist/video.min.js").sub('GENERATED_CDN_VSN', cdn_version_num)
end
File.open("dist/video-js/video.js", "w+") do |file|
file.puts File.read("dist/video.js").sub('GENERATED_CDN_VSN', cdn_version_num)
end
Rake::Shell["cp dist/video-js.min.css dist/video-js/video-js.min.css"]
Rake::Shell["cp dist/video-js.css dist/video-js/video-js.css"]
Rake::Shell["cp dist/video-js.swf dist/video-js/video-js.swf"]
Rake::Shell["cp dist/video-js.png dist/video-js/video-js.png"]
Rake::Shell["cp dist/demo.html dist/video-js/demo.html"]
Rake::Shell["cp dist/captions.vtt dist/video-js/captions.vtt"]
Rake::Shell["cd dist && zip -r video-js-#{version_number}.zip video-js && cd .."]
if `git name-rev --name-only HEAD`.strip != 'stable'
Rake::Log["*** WARNING: NOT ON STABLE BRANCH!!! ***"]
end
end
desc "Build source files for packaging"
task :source do
Rake::Log["Building Version: " << version_number]
if File.exist?("dist")
Rake::Shell["rm -r dist"]
end
# Make distribution folder
Rake::Shell["mkdir dist"]
Rake::Log["Combining source files"]
combined = ""
first_files = [ '_begin.js', 'core.js', 'lib.js' ]
first_files.each do |item|
Rake::Log[item]
combined << File.read("src/#{item}")
end
Dir.foreach('src') do |item|
next if (['.', '..', '.DS_Store', 'setup.js', '_end.js'] + first_files).include? item
combined << File.read("src/#{item}")
end
# combined << File.read("flash/swfobject.js")
combined << File.read("src/setup.js")
combined << File.read("src/_end.js")
Rake::Log["Adding version number"]
combined = combined.gsub('GENERATED_AT_BUILD', version_number)
File.open('dist/video.js', "w+") do |file|
file.puts "" << combined
end
Rake::Log["Copying CSS and updated version"]
File.open('dist/video-js.css', "w+") do |file|
file.puts File.read("design/video-js.css").gsub('GENERATED_AT_BUILD', version_number)
end
Rake::Log["Copying suppporting files"]
Rake::Shell["cp design/video-js.png dist/video-js.png"]
Rake::Shell["cp flash/video-js.swf dist/video-js.swf"]
Rake::Shell["cp build/release-files/README.md dist/README.md"]
Rake::Shell["cp build/release-files/demo.html dist/demo.html"]
Rake::Shell["cp build/release-files/captions.vtt dist/captions.vtt"]
Rake::Shell["cp LGPLv3-LICENSE.txt dist/LGPLv3-LICENSE.txt"]
Rake::Log["Minimizing JavaScript"]
Rake::Shell["java -jar build/lib/yuicompressor-2.4.7.jar dist/video.js -o dist/video.min.js"]
Rake::Log["Minimizing CSS"]
Rake::Shell["java -jar build/lib/yuicompressor-2.4.7.jar dist/video-js.css -o dist/video-js.min.css"]
Rake::Log[version_number << " Built"]
end
desc "Build list of source files for easy inclusion in projects"
task :js_source do
File.open("dev/source-list.js", "w+") do |file|
file.puts "var vjsSourceList = [];"
src_array = ["src/core", "src/lib"]
last = ["src/setup"] # "flash/swfobject",
exclude = [".", "..", ".DS_Store", "_end.js", "_begin.js"]
Dir.foreach('src') do |item|
next if exclude.include? item
item_name = "src/" << item.sub(".js", "")
next if (src_array + last).include? item_name
src_array << item_name
end
src_array = src_array + last
src_array.each do |item|
file.puts "vjsSourceList.push('#{item}')"
end
# file.puts "vjsSourceList.push('src/#{item.sub(".js", "")}')"
# file.puts "vjsSourceList.push('flash/swfobject.js')"
end
end
desc "Build list of source files for easy inclusion in projects"
task :source_html do
File.open("dev/source-list.html", "w+") do |file|
file.puts "<!-- Video.js Source Files -->"
src_array = ["src/core", "src/lib"]
last = ["src/setup"] # "flash/swfobject",
exclude = [".", "..", ".DS_Store", "_end.js", "_begin.js"]
Dir.foreach('src') do |item|
next if exclude.include? item
item_name = "src/" << item.sub(".js", "")
next if (src_array + last).include? item_name
src_array << item_name
end
src_array = src_array + last
src_array.each do |item|
file.puts "<script src='#{item}.js'></script>"
end
# file.puts "vjsSourceList.push('src/#{item.sub(".js", "")}')"
# file.puts "vjsSourceList.push('flash/swfobject.js')"
file.puts "<!-- END Video.js Source Files -->"
end
end
end
def version
YAML.load(File.read("VERSION.yml"))
end
def version_number
"#{version['major']}.#{version['minor']}.#{version['patch']}"
end
module Rake
class Shell
def self.[](command)
output = %x[#{command}]
if $?.to_i > 0
puts "-----> Process aborted"
puts " Exit status: #{$?}"
exit($?.to_i)
end
puts output
end
end
class Log
def self.[](message)
puts "-----> #{message.split("\n").join("\n ")}"
end
end
end
-4
Ver Arquivo
@@ -1,4 +0,0 @@
---
major: 3
patch: 0
minor: 2
-48
Ver Arquivo
@@ -1,48 +0,0 @@
#! /bin/csh
# Combines Source Files. In terminal, sh build.sh
# It will put a new video.js file under dist/
# Create dist directory if it doesn't already exist
mkdir -p dist
# FILES=../src/*
# for f in $FILES
# do
# echo "Processing $f file..."
# # take action on each file. $f store current file name
# cat $f
# done
cat src/_begin.js > dist/video.js
cat src/core.js >> dist/video.js
cat src/lib.js >> dist/video.js
cat src/ecma.js >> dist/video.js
cat src/json.js >> dist/video.js
cat src/events.js >> dist/video.js
cat src/component.js >> dist/video.js
cat src/player.js >> dist/video.js
cat src/tech.js >> dist/video.js
cat src/controls.js >> dist/video.js
cat src/tracks.js >> dist/video.js
# h5swf temporarily requires swfobject
# cat flash/swfobject.js >> dist/video.js
cat src/setup.js >> dist/video.js
cat src/_end.js >> dist/video.js
# Copy Files
cp design/video-js.css dist/video-js.css
cp design/video-js.png dist/video-js.png
cp flash/video-js.swf dist/video-js.swf
cp build/release-files/README.md dist/README.md
cp build/release-files/demo.html dist/demo.html
cp LGPLv3-LICENSE.txt dist/LGPLv3-LICENSE.txt
java -jar build/lib/yuicompressor-2.4.7.jar dist/video.js -o dist/video.min.js
java -jar build/lib/yuicompressor-2.4.7.jar dist/video-js.css -o dist/video-js.min.css
-28
Ver Arquivo
@@ -1,28 +0,0 @@
Deploying Version
-----------------
- Update SWF location for CDN
Version Numbers
---------------
http://en.wikipedia.org/wiki/Software_versioning#Sequence-based_identifiers
### Major Version (Integer, e.g 3.0)
- Any features where we expect it could break plugins, skins, or any major API integration.
### Minor Version (3.1)
- Additional non-breaking features
### Revision Versions
- Beta (3.1b1)
- Release Candidate (3.1rc1)
- Release with revisions (3.1r1)
Notes:
The last level of one revision type (beta/release candidate) should match the first level of the next revision type. 4.0-b10 should match 4.0-rc1, assuming b10 is the last beta version.
Release revisions means bug fixes. The CDN url should not reflect the revision number. 4.0-r2 would still be /4.0/.
Tagging a Release
-----------------
git tag -a [version number] [commit]
+65
Ver Arquivo
@@ -0,0 +1,65 @@
const fs = require('fs');
const zlib = require('zlib');
const Promise = require('bluebird');
const klawSync = require('klaw-sync');
const filesize = require('filesize');
const Table = require('cli-table');
const files = klawSync('dist/', {
ignore: ['examples', 'lang', 'font', 'ie8', '*.zip', '*.gz'],
nodir: true
});
Promise.all(files.map(gzipAndStat))
.then(mapFiles)
.then(function(files) {
logTable(files);
return files;
})
.then(cleanup)
.catch(function(err) {
console.error(err.stack);
});
function cleanup(files) {
files.forEach(function(file) {
fs.unlinkSync('dist/' + file[0] + '.gz');
});
}
function mapFiles(files) {
return files.map(function(file) {
const path = file[0].path;
const fileStat = file[0].stats;
const gzStat = file[1];
return [file[0].path.split('dist/')[1], filesize(fileStat.size), filesize(gzStat.size)];
});
}
function gzipAndStat(file) {
return new Promise(function(resolve, reject) {
const readStream = fs.createReadStream(file.path);
const writeStream = fs.createWriteStream(file.path + '.gz');
const gzip = zlib.createGzip();
readStream.pipe(gzip).pipe(writeStream).on('close', function() {
const gzStat = fs.statSync(file.path + '.gz');
resolve([file, gzStat]);
})
.on('error', reject);
});
}
function logTable(files) {
const table = new Table({
head: ['filename', 'size', 'gzipped'],
colAligns: ['left', 'right', 'right'],
style: {
border: ['white']
}
});
table.push.apply(table, files);
console.log(table.toString());
}
Arquivo executável
+36
Ver Arquivo
@@ -0,0 +1,36 @@
#!/bin/bash
# exit after any line errors
set -e
# exit if this is a version commit
# otherwise we cause an inifite loop when package version
# bumps get pushed back to master
if [[ $CI_MESSAGE = v[0-9]* ]]; then
echo "Version commit found. Exiting."
exit 0
fi
# exit if this is just a change to the build process not source
if [[ $CI_MESSAGE = build:* ]]; then
echo "Build commit found. Exiting."
exit 0
fi
echo "Install our task runner..."
npm install -g contrib
echo "Configure npm for publishing..."
printf "_auth=$NPM_AUTH_TOKEN\nemail=$NPM_EMAIL\n" > .npmrc
echo "Set git user to last committer..."
git config --global user.email $CI_COMMITTER_EMAIL
git config --global user.name $CI_COMMITTER_NAME
echo "Setup git branches and remotes..."
git remote set-branches origin stable master
git fetch
git remote add upstream git@github.com:videojs/video.js.git
echo "Run the task..."
contrib release prerelease
Arquivo executável
+5
Ver Arquivo
@@ -0,0 +1,5 @@
#!/usr/bin/env node
var version = require('../../package.json').version;
console.log(version);
+33
Ver Arquivo
@@ -0,0 +1,33 @@
var unified = require('unified');
var markdown = require('remark-parse');
var stringify = require('remark-stringify');
var fs = require('fs');
module.exports = function() {
var processor = unified()
.use(markdown, {commonmark: true})
.use(stringify);
var ast = processor.parse(fs.readFileSync('./CHANGELOG.md'));
var changelog = [];
changelog.push(processor.stringify(ast.children[0]));
// start at 1 so we get the first anchor tag
// and can break on the second
for (var i = 1; i < ast.children.length; i++) {
var item = processor.stringify(ast.children[i]);
if (/^<a name="/.test(item)) {
break;
}
if (/^###/.test(item)) {
item = '\n' + item + '\n';
}
changelog.push(item);
}
return changelog.join('\n');
};
+19
Ver Arquivo
@@ -0,0 +1,19 @@
import sh from 'shelljs';
import path from 'path';
export default function(commit, commitRange) {
const SINGLE_COMMIT = `git diff-tree --no-commit-id --name-only -r ${commit}`;
const COMMIT_RANGE = `git diff --name-only ${commitRange}`;
let command = SINGLE_COMMIT;
if (commitRange) {
command = COMMIT_RANGE
}
const output = sh.exec(command, {async: false, silent: true}).stdout;
const files = output.split('\n').filter(Boolean);
return files.every((file) => file.startsWith('docs') || path.extname(file) === '.md');
};
+29
Ver Arquivo
@@ -0,0 +1,29 @@
#resizer,
footer {
background-color: #ECEEF1;
color: #868688;
padding: 3px 10px;
}
.footer-text {
padding: 3px;
display: block;
}
footer .copyright {
float: left;
}
footer .other-links {
margin: 0;
padding: 0;
float: right;
}
footer .other-links li {
display: inline;
}
footer .logo {
display: none;
}
+44
Ver Arquivo
@@ -0,0 +1,44 @@
var replace = require("replace");
var path = require('path')
var apiPath = path.join(__dirname, '..', 'docs', 'api');
var replacements = [
{find: /\/docs\/guides\/(.+)\.md/g, replace: 'tutorial-$1.html'},
{find: /tutorial-tech.html/g, replace: 'tutorial-tech_.html'},
{find: /\/docs\/guides\//g, replace: '#'},
{find: /(\<h[1-6] id="(?:.*)?)video-js(.*)?"\>/g, replace: '$1videojs$2">'},
{find: /(\<h[1-6] id="(?:.*)?)don-t(.*)?"\>/g, replace: '$1dont$2">'},
{find: /(\<h[1-6] id="(?:.*)?)node-js(.*)?"\>/g, replace: '$1nodejs$2">'},
{find: /(\<h[1-6] id="(?:.*)?)vtt-js(.*)?"\>/g, replace: '$1vttjs$2">'},
{find: /(\<h[1-6] id=")-(.*)("\>)/g, replace: '$1$2$3'},
{find: /(\<h[1-6] id=")(.*)-("\>)/g, replace: '$1$2$3'},
{find: /(\<h[1-6] id=".*)-docs-guides-.*-md("\>)/g, replace: '$1$2'},
// replace all children with children-1
{find: /\<h3 id="children"\>/g, replace: '<h3 id="children-1">'},
// remove the -1 from the first item
{find: /\<h3 id="children-1"\>/, replace: '<h3 id="children">'},
{find: '<h4 id="nativecontrolsfortouch">', replace: '<h4 id="nativecontrolsfortouch-1">'},
{find: '<h3 id="videojs-(audio|video)track">', replace: '<h3 id="videojs$1track">'},
{find: '<h3 id="text-tracks">', replace: '<h3 id="text-tracks-1">'},
{find: '<h2 id="q-how-can-i-hide-the-links-to-my-video-subtitles-audio-tracks">',
replace: '<h2 id="q-how-can-i-hide-the-links-to-my-videosubtitlesaudiotracks">'},
{find: '<h3 id="dispose-http-docs-videojs-com-player-html-dispose">',
replace: '<h3 id="dispose">'},
{find: '<h4 id="effect-on-player-width-and-player-height">',
replace: '<h4 id="effect-on-playerwidth-and-playerheight">'},
{find: '<h4 id="i-want-to-have-a-single-source-and-dont-care-about-live-adaptive-streaming">',
replace: '<h4 id="i-want-to-have-a-single-source-and-dont-care-about-liveadaptive-streaming">'},
{find: '<h2 id="api-docs-api">', replace: '<h2 id="api-docs">'},
{find: '<h2 id="guides-docs-guides">', replace: '<h2 id="guides">'}
];
replacements.forEach(function(obj) {
replace({
regex: obj.find,
replacement: obj.replace,
paths: [apiPath],
recursive: true,
silent: true
});
});
+44
Ver Arquivo
@@ -0,0 +1,44 @@
var ghrelease = require('gh-release');
var currentChangelog = require('./current-changelog.js');
var safeParse = require('safe-json-parse/tuple');
var pkg = require('../package.json')
var minimist = require('minimist');
var args = minimist(process.argv.slice(2), {
boolean: ['prerelease'],
default: {
prerelease: false
},
alias: {
p: 'prerelease'
}
});
var options = {
owner: 'videojs',
repo: 'video.js',
body: currentChangelog(),
assets: ['./dist/video-js-'+pkg.version+'.zip'],
endpoint: 'https://api.github.com',
auth: {
username: process.env.VJS_GITHUB_USER,
password: process.env.VJS_GITHUB_TOKEN
}
};
var tuple = safeParse(process.env.npm_config_argv);
var npmargs = tuple[0] ? [] : tuple[1].cooked;
if (args.prerelease || npmargs.some(function(arg) { return /next/.test(arg); })) {
options.prerelease = true;
}
ghrelease(options, function(err, result) {
if (err) {
console.error('Unable to publish release to github');
console.error('err:', err);
console.error('result:', result);
} else {
console.log('Publish release to github!');
}
});
+588
Ver Arquivo
@@ -0,0 +1,588 @@
import {gruntCustomizer, gruntOptionsMaker} from './options-customizer.js';
import chg from 'chg';
import npmRun from 'npm-run';
import isDocsOnly from './docs-only.js';
module.exports = function(grunt) {
require('time-grunt')(grunt);
let _ = require('lodash');
let pkg = grunt.file.readJSON('package.json');
let license = grunt.file.read('build/license-header.txt');
let bannerCommonData = _.pick(pkg, ['version', 'copyright']);
let verParts = pkg.version.split('.');
let version = {
full: pkg.version,
major: verParts[0],
minor: verParts[1],
patch: verParts[2]
};
const browserifyGruntDefaults = {
browserifyOptions: {
standalone: 'videojs'
},
plugin: [
['bundle-collapser/plugin'],
['browserify-derequire']
]
};
const githubReleaseDefaults = {
options: {
release: {
tag_name: 'v'+ version.full,
name: version.full,
body: npmRun.execSync('conventional-changelog -p videojs', {
silent: true,
encoding: 'utf8'
})
},
},
files: {
src: [`dist/video-js-${version.full}.zip`] // Files that you want to attach to Release
}
};
/**
* Customizes _.merge behavior in `browserifyGruntOptions` to concatenate
* arrays. This can be overridden on a per-call basis to
*
* @see https://lodash.com/docs#merge
* @function browserifyGruntCustomizer
* @private
* @param {Mixed} objectValue
* @param {Mixed} sourceValue
* @return {Object}
*/
const browserifyGruntCustomizer = gruntCustomizer;
/**
* Creates a unique object of Browserify Grunt task options.
*
* @function browserifyGruntOptions
* @private
* @param {Object} [options]
* @param {Function} [customizer=browserifyGruntCustomizer]
* If the default array-concatenation behavior is not desireable,
* pass _.noop or a unique customizer (https://lodash.com/docs#merge).
*
* @return {Object}
*/
const browserifyGruntOptions = gruntOptionsMaker(browserifyGruntDefaults, browserifyGruntCustomizer);
const githubReleaseCustomizer = gruntCustomizer;
const githubReleaseOptions = gruntOptionsMaker(githubReleaseDefaults, githubReleaseCustomizer);
/**
* Creates processor functions for license banners.
*
* @function createLicenseProcessor
* @private
* @param {Object} data Custom data overriding `bannerCommonData`. Will
* not be mutated.
* @return {Function} A function which returns a processed grunt template
* using an object constructed from `bannerCommonData`
* and the `data` argument.
*/
function createLicenseProcessor(data) {
return () => {
return grunt.template.process(license, {
data: _.merge({}, bannerCommonData, data)
});
};
}
version.majorMinor = `${version.major}.${version.minor}`;
grunt.vjsVersion = version;
// Project configuration.
grunt.initConfig({
pkg,
clean: {
build: ['build/temp/*', 'es5'],
dist: ['dist/*']
},
uglify: {
options: {
preserveComments: 'some',
screwIE8: false,
mangle: true,
compress: {
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true
}
},
build: {
files: {
'build/temp/alt/video.novtt.min.js': 'build/temp/alt/video.novtt.js',
'build/temp/video.min.js': 'build/temp/video.js'
}
}
},
dist: {},
watch: {
dist: {
files: [
'build/temp/video.js',
'build/temp/alt/video.novtt.js',
'build/temp/video-js.css',
'build/temp/alt/video-js-cdn.css'
],
tasks: ['copy:dist']
},
minify: {
files: ['build/temp/video.js'],
tasks: ['uglify']
},
skin: {
files: ['src/css/**/*'],
tasks: ['skin']
},
lang: {
files: ['lang/**/*.json'],
tasks: ['vjslanguages']
}
},
connect: {
dev: {
options: {
port: Number(process.env.VJS_CONNECT_PORT) || 9999,
livereload: true,
useAvailablePort: true
}
}
},
copy: {
minor: {
files: [
{expand: true, cwd: 'build/temp/', src: ['*'], dest: 'dist/'+version.majorMinor+'/', filter: 'isFile'} // includes files in path
]
},
patch: {
files: [
{expand: true, cwd: 'build/temp/', src: ['*'], dest: 'dist/'+version.full+'/', filter: 'isFile'} // includes files in path
]
},
fonts: { cwd: 'node_modules/videojs-font/fonts/', src: ['*'], dest: 'build/temp/font/', expand: true, filter: 'isFile' },
swf: { cwd: 'node_modules/videojs-swf/dist/', src: 'video-js.swf', dest: 'build/temp/', expand: true, filter: 'isFile' },
ie8: { cwd: 'node_modules/videojs-ie8/dist/', src: ['**/**'], dest: 'build/temp/ie8/', expand: true, filter: 'isFile' },
dist: { cwd: 'build/temp/', src: ['**/**', '!test*'], dest: 'dist/', expand: true, filter: 'isFile' },
a11y: { src: 'sandbox/descriptions.html.example', dest: 'sandbox/descriptions.test-a11y.html' }, // Can only test a file with a .html or .htm extension
examples: { cwd: 'docs/examples/', src: ['**/**'], dest: 'dist/examples/', expand: true, filter: 'isFile' }
},
cssmin: {
minify: {
expand: true,
cwd: 'build/temp/',
src: ['video-js.css', 'alt/video-js-cdn.css'],
dest: 'build/temp/',
ext: '.min.css'
}
},
sass: {
build: {
files: {
'build/temp/video-js.css': 'src/css/vjs.scss',
'build/temp/alt/video-js-cdn.css': 'src/css/vjs-cdn.scss'
}
}
},
karma: {
// this config file applies to all following configs except if overwritten
options: {
configFile: 'test/karma.conf.js'
},
defaults: {
detectBrowsers: {
enabled: !process.env.TRAVIS,
usePhantomJS: false
}
},
watch: {
autoWatch: true,
singleRun: false
},
// these are run locally on local browsers
dev: { browsers: ['Chrome', 'Firefox', 'Safari'] },
chromecanary: { browsers: ['ChromeCanary'] },
chrome: { browsers: ['Chrome'] },
firefox: { browsers: ['Firefox'] },
safari: { browsers: ['Safari'] },
ie: { browsers: ['IE'] },
// this only runs on PRs from the mainrepo on BrowserStack
browserstack: { browsers: ['chrome_bs'] },
chrome_bs: { browsers: ['chrome_bs'] },
firefox_bs: { browsers: ['firefox_bs'] },
safari_bs: { browsers: ['safari_bs'] },
edge_bs: { browsers: ['edge_bs'] },
ie11_bs: { browsers: ['ie11_bs'] },
ie10_bs: { browsers: ['ie10_bs'] },
ie9_bs: { browsers: ['ie9_bs'] },
ie8_bs: { browsers: ['ie8_bs'] }
},
vjsdocs: {
all: {
// TODO: Update vjsdocs to support new build, or switch to jsdoc
src: '',
dest: 'docs/api',
options: {
baseURL: 'https://github.com/videojs/video.js/blob/master/'
}
}
},
vjslanguages: {
defaults: {
files: {
'build/temp/lang': ['lang/*.json']
}
}
},
zip: {
dist: {
router: function (filepath) {
var path = require('path');
return path.relative('dist', filepath);
},
// compression: 'DEFLATE',
src: ['dist/**/*'],
dest: 'dist/video-js-' + version.full + '.zip'
}
},
version: {
options: {
pkg: 'package.json'
},
major: {
options: {
release: 'major'
},
src: ['package.json']
},
minor: {
options: {
release: 'minor'
},
src: ['package.json']
},
patch: {
options: {
release: 'patch'
},
src: ['package.json']
},
prerelease: {
options: {
release: 'prerelease'
},
src: ['package.json']
},
css: {
options: {
prefix: '@version\\s*'
},
src: 'build/temp/video-js.css'
}
},
'github-release': {
options: {
repository: 'videojs/video.js',
auth: {
user: process.env.VJS_GITHUB_USER,
password: process.env.VJS_GITHUB_TOKEN
}
},
release: githubReleaseOptions(),
prerelease: githubReleaseOptions({
options: {
release: {
prerelease: true
}
}
})
},
babel: {
es5: {
files: [{
expand: true,
cwd: 'src/js/',
src: ['**/*.js', '!base-styles.js'],
dest: 'es5/'
}]
}
},
browserify: {
build: {
options: browserifyGruntOptions(),
files: {
'build/temp/video.js': ['es5/video.js']
}
},
buildnovtt: {
options: browserifyGruntOptions({transform: [
['aliasify', {aliases: {'videojs-vtt.js': false}}]
]}),
files: {
'build/temp/alt/video.novtt.js': ['es5/video.js']
}
},
watch: {
options: browserifyGruntOptions({
watch: true,
keepAlive: true,
}),
files: {
'build/temp/video.js': ['es5/video.js']
}
},
watchnovtt: {
options: browserifyGruntOptions({
transform: [
['aliasify', {aliases: {'videojs-vtt.js': false}}]
],
watch: true,
keepAlive: true,
}),
files: {
'build/temp/alt/video.novtt.js': ['es5/video.js']
}
},
tests: {
options: {
browserifyOptions: {
verbose: true,
standalone: false,
transform: ['babelify']
},
plugin: [
['proxyquireify/plugin', 'bundle-collapser/plugin']
],
banner: false,
watch: true,
keepAlive: true
},
files: {
'build/temp/tests.js': [
'test/globals-shim.js',
'test/unit/**/*.js'
]
}
}
},
coveralls: {
options: {
// warn instead of failing when coveralls errors
// we've seen coveralls 503 relatively frequently
force: true
},
all: {
src: 'test/coverage/lcov.info'
}
},
concat: {
options: {
separator: '\n'
},
ie8_addition: {
src: ['build/temp/video-js.css', 'src/css/ie8.css'],
dest: 'build/temp/video-js.css'
}
},
concurrent: {
options: {
logConcurrentOutput: true
},
tests: [
'shell:babel',
'browserify:tests'
],
dev: [
'shell:babel',
'shell:rollupwatch',
'browserify:tests',
'watch:skin',
'watch:lang',
'watch:dist'
],
// Run multiple watch tasks in parallel
// Needed so watchify can cache intelligently
watchAll: [
'watch',
'browserify:watch',
'browserify:watchnovtt',
'browserify:tests',
'karma:watch'
],
watchSandbox: [
'watch',
'browserify:watch'
]
},
usebanner: {
novtt: {
options: {
process: createLicenseProcessor({includesVtt: false})
},
files: {
src: ['build/temp/alt/video.novtt.js']
}
},
vtt: {
options: {
process: createLicenseProcessor({includesVtt: true})
},
files: {
src: ['build/temp/video.js']
}
}
},
shell: {
rollup: {
command: 'npm run rollup',
options: {
preferLocal: true
}
},
rollupall: {
command: 'npm run rollup -- --no-progress && npm run rollup-minify -- --no-progress',
options: {
preferLocal: true
}
},
rollupwatch: {
command: 'npm run rollup-dev',
optoins: {
preferLocal: true
}
},
babel: {
command: 'npm run babel -- --watch --quiet',
options: {
preferLocal: true
}
},
lint: {
command: 'npm run lint -- --errors',
options: {
preferLocal: true
}
},
noderequire: {
command: 'node test/require/node.js',
options: {
failOnError: true
}
},
browserify: {
command: 'browserify test/require/browserify.js -o build/temp/browserify.js',
options: {
preferLocal: true
}
},
webpack: {
command: 'webpack --hide-modules test/require/webpack.js build/temp/webpack.js',
options: {
preferLocal: true
}
}
},
accessibility: {
options: {
accessibilityLevel: 'WCAG2AA',
reportLevels: {
notice: false,
warning: true,
error: true
},
ignore: [
// Ignore warning about contrast of the "vjs-no-js" fallback link
'WCAG2AA.Principle1.Guideline1_4.1_4_3.G18.BgImage'
]
},
test: {
src: ['sandbox/descriptions.test-a11y.html']
}
}
});
// load all the npm grunt tasks
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('videojs-doc-generator');
grunt.loadNpmTasks('chg');
grunt.loadNpmTasks('grunt-accessibility');
grunt.registerTask('build', [
'shell:lint',
'clean:build',
'shell:rollupall',
'skin',
'version:css',
'cssmin',
'copy:fonts',
'copy:swf',
'copy:ie8',
'vjslanguages'
]);
grunt.registerTask('dist', [
'clean:dist',
'build',
'copy:dist',
'copy:examples',
'zip:dist'
]);
grunt.registerTask('skin', ['sass', 'concat:ie8_addition']);
// Default task - build and test
grunt.registerTask('default', ['test']);
// The test script includes coveralls only when the TRAVIS env var is set.
grunt.registerTask('test', function() {
const tasks = [
'build',
'shell:noderequire',
'shell:browserify',
'shell:webpack',
'karma:defaults',
'test-a11y'
];
if (process.env.TRAVIS) {
if (isDocsOnly(process.env.TRAVIS_COMMIT, process.env.TRAVIS_COMMIT_RANGE)) {
grunt.log.write('Not running any tests because only docs were changed');
return;
}
tasks.concat(process.env.TRAVIS && 'coveralls').filter(Boolean);
}
grunt.task.run(tasks);
});
// Run while developing
grunt.registerTask('dev', ['sandbox', 'connect:dev', 'concurrent:dev']);
grunt.registerTask('watchAll', ['build', 'connect:dev', 'concurrent:watchAll']);
grunt.registerTask('test-a11y', ['copy:a11y', 'accessibility']);
// Pick your testing, or run both in different terminals
grunt.registerTask('test-ui', ['browserify:tests']);
grunt.registerTask('test-cli', ['karma:watch']);
// Load all the tasks in the tasks directory
grunt.loadTasks('build/tasks');
};
Arquivo binário não exibido.
+11
Ver Arquivo
@@ -0,0 +1,11 @@
/**
* @license
* Video.js <%= version %> <http://videojs.com/>
* <%= copyright %>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
<% if (includesVtt) { %> *
* Includes vtt.js <https://github.com/mozilla/vtt.js>
* Available under Apache License Version 2.0
* <https://github.com/mozilla/vtt.js/blob/master/LICENSE>
<% } %> */
+49
Ver Arquivo
@@ -0,0 +1,49 @@
import _ from 'lodash';
/**
* Customizes _.merge behavior in `gruntOptions` to concatenate
* arrays. This can be overridden on a per-call basis to
*
* @see https://lodash.com/docs#merge
* @function GruntCustomizer
* @private
* @param {Mixed} objectValue
* @param {Mixed} sourceValue
* @return {Object}
*/
function gruntCustomizer(objectValue, sourceValue) {
if (Array.isArray(objectValue)) {
return objectValue.concat(sourceValue);
}
}
/**
* Creates a gruntOptions instance for the specific defaultOptions and gruntCustomizer
*
* @function browserifyGruntOptions
* @private
* @param {Object} [options]
* @param {Function} [customizer=gruntCustomizer]
* If the default array-concatenation behavior is not desireable,
* pass _.noop or a unique customizer (https://lodash.com/docs#merge).
*
* @return {Function}
*/
function gruntOptionsMaker(defaultOptions, gruntCustomizer) {
/**
* Creates a unique object of Browserify Grunt task options.
*
* @function gruntOptions
* @private
* @param {Object} [options]
* @param {Function} [customizer=browserifyGruntCustomizer]
* If the default array-concatenation behavior is not desireable,
* pass _.noop or a unique customizer (https://lodash.com/docs#merge).
*
* @return {Object}
*/
return function gruntOptions(options = null, customizer = gruntCustomizer) {
return _.merge({}, defaultOptions, options, customizer);
}
};
export { gruntCustomizer, gruntOptionsMaker };
-153
Ver Arquivo
@@ -1,153 +0,0 @@
Video.js - [HTML5 Video Player](http://videojs.com)
==================================================
Version 3.0
---
Version 3 is almost a complete rewrite of the previous versions of Video.js. New features includes:
- HTML/CSS Controls and API now work for both the HTML5 and Flash versions.
- Custom Super-lightweight Flash Fallback
- Embed Code is much simpler.
- No more "vjs-box" div required, just use the video tag.
- No more embedding of Flash fallback within the video tag HTML.
---
View [videojs.com](http://videojs.com) for a demo and overview.
Video.js is an HTML5 video player that uses the HTML5 video tag built into modern browsers, and uses javascript to add custom controls, new functionality, and to fix cross browser bugs. For browsers that don't support HTML5, it will fallback to a Flash player.
View demo.html for an example of how to use it.
Originally based on [this tutorial](http://blog.steveheffernan.com/2010/04/how-to-build-an-html5-video-player/).
Contributors (Github Username)
------------------------------
heff, dz0ny, sentientbit, tvdeyen, brandonarbini, gordonbrander, Shraymonks, albertogasparin, sandaru1, nicholasbs, majornista, Fredust85, @wonderboymusic, ellis-, emirpprime, eirikb, mbrubeck
Getting Started
---------------
### Step 1: Include the Video.js Javascript and CSS files in the head of your page.
Change the file urls to point to the files on your server.
<script src="video.js"></script>
<link href="video-js.css" rel="stylesheet">
### Step 2: Add an HTML5 video tag to your page.
Use the video tag as normal, with a few extra pieces for Video.js:
1. The 'data-setup' attribute tells Video.js to automatically set up the video when the page is ready, and read any options (in JSON format) from the attribute.
2. The 'id' Attribute: Should be used and unique for every video on the same page.
3. The 'class' attribute contains two classes:
- 'video-js' applies styles that are required for Video.js functionality, like fullscreen and subtitles.
- 'vjs-default-skin' applies the default skin to the HTML controls, and can be removed or overridden to create your own controls design.
Otherwise include/exclude attributes, settings, sources, and tracks exactly as you would for HTML5 video.
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup='{"example_option":true}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
</video>
### Step 3: Nada!
That's all it take to get started. See the [docs](http://videojs.com/docs/) for more advanced uses.
Changelog
---------
3.0
- Complete rewrite
- HTML/CSS Controls and API now work for both the HTML5 and Flash versions
- Custom Super-lightweight Flash Fallback
- Embed Code is much simpler.
- No more "vjs-box" div required, just use the video tag.
- No more embedding of Flash fallback within the video tag HTML.
2.0.3
- Feature: Made returning to the start at the end of the movie an option ("returnToStart").
- Feature: Added loop option to loop movie ("loop").
- Feature: Reorganized player API and listeners.
- Feature: Added option to disable controls. controlsEnabled: false
- Feature: Setup method now has a callback, so you can more easily work with the player after setup
- Feature: Added listeners for enter/exit full screen/window.
- Feature: Added a VideoJS.player(id) function for getting the player for a video ID
- Changes: setupAllWhenReady is now just setupAll (backward compatible)
- Fix: Check for Android browser now excludes firefox and opera
2.0.2 (2010-12-10)
- Feature: Rewrote and optimized subtitle code.
- Feature: Protecting against volume ranges outside of 1 and 0.
- Fix: Bug in Safari for Mac OS 10.5 (Leopard) that was breaking fullscreen.
2.0.1 (2010-11-22)
- Fix: Issue with big play button when multiple videos are on the page.
- Fix: Optimized play progress tracking.
- Fix: Optimized buffer progress checking.
- Fix: Firefox not showing Flash fallback object.
2.0.0 (2010-11-21)
- Feature: Created "behaviors" concept for adding behaviors to elements
- Feature: Switched back to divs for controls, for more portable styles
- Feature: Created playerFallbackOrder array option. ["html5", "flash", "links"]
- Feature: Created playerType concept, for initializing different platforms
- Feature: Added play button for Android
- Feature: Added spinner for iPad (non-fullscreen)
- Feature: Split into multiple files for easier development
- Feature: Combined VideoJS & _V_ into the same variable to reduce confusion
- Fix: Checking for m3u8 files (Apple HTTP Streaming)
- Fix: Catching error on localStorage full that safari seems to randomly throw
- Fix: Scrubbing to end doesn't trigger onEnded
1.1.5 (2010-11-09)
- Feature: Switched to track method for setting subtitles. Now works like spec.
- Feature: Created "players" concept for defining fallbacks and fallback order
- Fix: Android playback bug.
- Fix: Massive reorganization of code to make easier to navigate
1.1.4 (2010-11-06)
- Feature: Added loading spinner.
- Feature: Improved styles loaded checking.
- Feature: Added volume() function to get and set volume through the player.
- Fix: Fix issue where FF would loop video in background when ended.
- Fix: Bug in Chrome that shows poster & plays audio if you set currentTime too quickly.
- Fix: Bug in Safari where waiting is triggered and shows spinner when not needed
- Fix: Updated to show links if only unplayable sources and no Flash.
- Fix: Issue where if play button was loaded after play, it wouldn't hide.
1.1.3 (2010-10-19)
- Feature: Width/Height functions for resizing the player
- Feature: Made initial click & hold trigger new value on progress and volume
- Feature: Made controls not hide when hovering over them
- Feature: Added big play button as default starting control.
- Fix: Removed trailing comma that was breaking IE7
- Fix: Removed some vars from global scope
- Fix: Changed a document.onmousemove to an eventListener to prevent conflicts
- Fix: Added a unique ID to FlowPlayer demo object to fix a FlowPlayer bug. Thanks @emirpprime.
- Fix: Safari error on unloaded video
1.1.2 (2010-09-20)
- Added a fix for the poster bug in iPad/iPhone
- Added more specificity to styles
1.1.1 (2010-09-14)
- First Formally Versioned Release
1.0.0 (2010-05-18)
- First released
-30
Ver Arquivo
@@ -1,30 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Video.js | HTML5 Video Player</title>
<!-- Chang URLs to wherever Video.js files will be hosted -->
<link href="video-js.css" rel="stylesheet" type="text/css">
<!-- video.js must be in the <head> for older IEs to work. -->
<script src="video.js"></script>
<!-- Unless using the CDN hosted version, update the URL to the Flash SWF -->
<script>
_V_.options.flash.swf = "video-js.swf";
</script>
</head>
<body>
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup="{}">
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="captions.vtt" srclang="en" label="English" />
</video>
</body>
</html>
+212
Ver Arquivo
@@ -0,0 +1,212 @@
import { rollup } from 'rollup';
import duration from 'humanize-duration';
import watch from 'rollup-watch';
import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import filesize from 'rollup-plugin-filesize';
import progress from 'rollup-plugin-progress';
import ignore from 'rollup-plugin-ignore';
import uglify from 'rollup-plugin-uglify';
import minimist from 'minimist';
import _ from 'lodash';
import pkg from '../package.json';
import fs from 'fs';
const args = minimist(process.argv.slice(2), {
boolean: ['watch', 'minify', 'progress'],
default: {
progress: true
},
alias: {
w: 'watch',
m: 'minify',
p: 'progress'
}
});
if (args.watch) {
args.progress = false;
}
const compiledLicense = _.template(fs.readFileSync('./build/license-header.txt', 'utf8'));
const bannerData = _.pick(pkg, ['version', 'copyright']);
const primedResolve = resolve({
jsnext: true,
main: true,
browser: true
});
const primedCjs = commonjs({
sourceMap: false
});
const primedBabel = babel({
babelrc: false,
exclude: 'node_modules/**',
presets: [
'es3',
['es2015', {
loose: true,
modules: false
}]
],
plugins: ['external-helpers']
});
const es = {
options: {
entry: 'src/js/video.js',
plugins: [
json(),
primedBabel,
args.progress ? progress() : {},
filesize()
],
onwarn(warning) {
if (warning.code === 'UNUSED_EXTERNAL_IMPORT' ||
warning.code === 'UNRESOLVED_IMPORT') {
return;
}
// eslint-disable-next-line no-console
console.warn(warning.message);
},
legacy: true
},
banner: compiledLicense(Object.assign({includesVtt: true}, bannerData)),
useStrict: false,
format: 'es',
dest: 'dist/video.es.js'
};
const cjs = Object.assign({}, es, {
format: 'cjs',
dest: 'dist/video.cjs.js'
});
const umd = {
options: {
entry: 'src/js/video.js',
plugins: [
primedResolve,
json(),
primedCjs,
primedBabel,
args.progress ? progress() : {},
filesize()
],
legacy: true
},
banner: compiledLicense(Object.assign({includesVtt: true}, bannerData)),
useStrict: false,
format: 'umd',
dest: 'dist/video.js'
};
const minifiedUmd = Object.assign({}, _.cloneDeep(umd), {
dest: 'dist/video.min.js'
});
minifiedUmd.options.plugins.splice(4, 0, uglify({
preserveComments: 'some',
screwIE8: false,
mangle: true,
compress: {
/* eslint-disable camelcase */
sequences: true,
dead_code: true,
conditionals: true,
booleans: true,
unused: true,
if_return: true,
join_vars: true,
drop_console: true
/* eslint-enable camelcase */
}
}));
const novttUmd = Object.assign({}, _.cloneDeep(umd), {
banner: compiledLicense(Object.assign({includesVtt: false}, bannerData)),
dest: 'dist/alt/video.novtt.js'
});
novttUmd.options.plugins.unshift(ignore(['videojs-vtt.js']));
const minifiedNovttUmd = Object.assign({}, _.cloneDeep(minifiedUmd), {
banner: compiledLicense(Object.assign({includesVtt: false}, bannerData)),
dest: 'dist/alt/video.novtt.min.js'
});
minifiedNovttUmd.options.plugins.unshift(ignore(['videojs-vtt.js']));
function runRollup({options, useStrict, format, dest, banner}) {
rollup(options)
.then(function(bundle) {
bundle.write({
useStrict,
format,
dest,
banner,
moduleName: 'videojs',
sourceMap: false
});
}, function(err) {
// eslint-disable-next-line no-console
console.error(err);
});
}
if (!args.watch) {
if (args.minify) {
runRollup(minifiedUmd);
runRollup(minifiedNovttUmd);
} else {
runRollup(es);
runRollup(cjs);
runRollup(umd);
runRollup(novttUmd);
}
} else {
const props = ['format', 'dest', 'banner', 'useStrict'];
const watchers = [
['es', watch({rollup},
Object.assign({},
es.options,
_.pick(es, props)))],
['cjs', watch({rollup},
Object.assign({},
cjs.options,
_.pick(cjs, props)))],
['umd', watch({rollup},
Object.assign({moduleName: 'videojs'},
umd.options,
_.pick(umd, props)))],
['novtt', watch({rollup},
Object.assign({moduleName: 'videojs'},
novttUmd.options,
_.pick(novttUmd, props)))]
];
watchers.forEach(function([type, watcher]) {
watcher.on('event', (details) => {
if (details.code === 'BUILD_START') {
// eslint-disable-next-line no-console
console.log(`Bundling ${type}...`);
return;
}
if (details.code === 'BUILD_END') {
// eslint-disable-next-line no-console
console.log(`Bundled ${type} in %s`, duration(details.duration));
return;
}
if (details.code === 'ERROR') {
// eslint-disable-next-line no-console
console.error(details.error.toString());
return;
}
});
});
}
+13
Ver Arquivo
@@ -0,0 +1,13 @@
module.exports = function(grunt) {
grunt.registerTask('cdn-links', 'Update the version of CDN links in docs', function(){
let doc = grunt.file.read('docs/guides/setup.md');
let version = require('../../package.json').version;
// remove the patch version to point to the latest patch
version = version.replace(/(\d+\.\d+)\.\d+/, '$1');
// update the version in http://vjs.zencdn.net/4.3/video.js
doc = doc.replace(/(\/\/vjs\.zencdn\.net\/)\d+\.\d+(\.\d+)?/g, '$1'+version);
grunt.file.write('docs/guides/setup.md', doc);
});
};
+35
Ver Arquivo
@@ -0,0 +1,35 @@
module.exports = function(grunt) {
grunt.registerTask('check-translations', 'Check that translations are up to date', function(){
const source = require('../../lang/en.json');
const table = require('markdown-table');
let doc = grunt.file.read('docs/translations-needed.md');
const tableRegex = /(<!-- START langtable -->)(.|\n)*(<!-- END langtable -->)/;
let tableData = [['Language file', 'Missing translations']];
grunt.file.recurse('lang', (abspath, rootdir, subdir, filename) => {
if (filename === 'en.json') {
return;
}
const target = require(`../../${abspath}`);
let missing = [];
for (const string in source) {
if (!target[string]) {
grunt.log.writeln(`${filename} missing "${string}"`);
missing.push(string);
}
}
if (missing.length > 0) {
grunt.log.error(`${filename} is missing ${missing.length} translations.`);
tableData.push([`${filename} (missing ${missing.length})`, missing[0]]);
for (var i = 1; i < missing.length; i++) {
tableData.push(['', missing[i]]);
}
} else {
grunt.log.ok(`${filename} is up to date.`);
tableData.push([`${filename} (Complete)`, '']);
}
});
doc = doc.replace(tableRegex, `$1\n` + table(tableData) + `\n$3`);
grunt.file.write('docs/translations-needed.md', doc);
});
};
+33
Ver Arquivo
@@ -0,0 +1,33 @@
const fs = require('fs');
const path = require('path');
const klawSync = require('klaw-sync');
module.exports = function(grunt) {
grunt.registerTask('sandbox', 'copy over sandbox example files if necessary', function() {
const files = klawSync('sandbox/').filter((file) => path.extname(file.path) === '.example');
const changes = files.map(function(file) {
const p = path.parse(file.path);
const nonExample = path.join(p.dir, p.name);
return {
file: file.path,
copy: nonExample
};
})
.filter(function(change) {
return !fs.existsSync(change.copy);
});
changes.forEach(function(change) {
grunt.file.copy(change.file, change.copy);
});
if (changes.length) {
grunt.log.writeln("Updated Sandbox files for:");
grunt.log.writeln('\t' + changes.map((chg) => chg.copy).join('\n\t'));
} else {
grunt.log.writeln("No sandbox updates necessary");
}
});
};
+11
Ver Arquivo
@@ -0,0 +1,11 @@
module.exports = function(grunt) {
grunt.registerTask('addStyleInjection', 'Adding base style injection', function() {
let minifiedCss = grunt.file.read('build/files/video-js.min.css');
// We need to escape any strings
minifiedCss = minifiedCss.replace(/'/g, '\\\'');
let combinedJs = grunt.file.read('build/files/combined.video.js');
combinedJs = combinedJs.replace(/\{{GENERATED_STYLES}}/g, minifiedCss);
grunt.file.write('build/files/combined.video.js', combinedJs);
});
};
+26
Ver Arquivo
@@ -0,0 +1,26 @@
module.exports = function(grunt) {
// You can specify which browsers to build with by using grunt-style arguments
// or separating them with a comma:
// grunt test:chrome:firefox # grunt-style
// grunt test:chrome,firefox # comma-separated
grunt.registerTask('test-local', function() {
let tasks = this.args;
let tasksMinified;
// if we aren't running this in a CI, but running it manually, we can
// supply arguments to this task. These arguments are either colon (`:`)
// separated which is the default grunt separator for arguments, or they
// are comma (`,`) separated to make it easier.
// The arguments are the names of which browsers you want.
if (tasks.length === 0) {
tasks.push('chrome');
}
if (tasks.length === 1) {
tasks = tasks[0].split(',');
}
tasks = tasks.map((task) => `karma:${task}`);
grunt.task.run(tasks);
});
};
+7
Ver Arquivo
@@ -0,0 +1,7 @@
module.exports = function(grunt) {
grunt.registerTask('vjs-version', function() {
let version = grunt.vjsVersion.full;
grunt.log.writeln(version);
return version;
});
}
+19
Ver Arquivo
@@ -0,0 +1,19 @@
var safeParse = require("safe-json-parse/tuple");
var tuple = safeParse(process.env.npm_config_argv);
var npm_config_argv = tuple[1]
if (tuple[0]) {
process.exit(1);
}
var sh = require('shelljs');
var prereleaseType = npm_config_argv['remain'][0];
var approvedTypes = {
'major': 1,
'minor': 1,
'patch': 1
}
if (prereleaseType in approvedTypes) {
sh.exec('npm run changelog');
}
+14
Ver Arquivo
@@ -0,0 +1,14 @@
{
"name": "videojs/video.js",
"description": "An HTML5 and Flash video player with a common API and skin for both.",
"type": "library",
"keywords": [
"videojs",
"html5",
"flash",
"video",
"player"
],
"homepage": "http://www.videojs.com/",
"license": "Apache-2.0"
}
-8
Ver Arquivo
@@ -1,8 +0,0 @@
Tracking/Polling CurrentTime Manually
-------------------------------------
- Necessary for most flash players and browsers that don't trigger timeupdate events.
- In VJS 1-2, we always tracked time because timeupdate was rare.
- Now most browsers support it well. There is a delay bug in the current Chrome.
http://code.google.com/p/chromium/issues/detail?id=92251
Andrew from Chrome told me it would be fix in an upcoming release.
Going to rely on browsers timeupdates when available now.
-13
Ver Arquivo
@@ -1,13 +0,0 @@
1
00:00:00,000 --> 00:00:07,200
[Background Music Playing]
2
00:00:16,000 --> 00:00:17,200
Welcome to this week's episode
3
00:00:17,400 --> 00:00:19,000
of explore California
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 85 KiB

Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 3.5 KiB

-190
Ver Arquivo
@@ -1,190 +0,0 @@
/* DEFAULT SKIN (override in another file)
================================================================================
Using all CSS to draw the controls. Images could be used if desired.
Instead of editing this file, I recommend creating your own skin CSS file to be included after this file,
so you can upgrade to newer versions easier. */
.vjs-original-skin .vjs-controls {
position: absolute; margin: 0; opacity: 0.85; color: #fff;
display: block; /* Start hidden */
left: 0; right: 0; /* 100% width of video-js-box */
width: 100%;
bottom: 0px; /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
height: 35px; /* Including any margin you want above or below control items */
padding: 0; /* Controls are absolutely position, so no padding necessary */
-webkit-transition: opacity 0.5s linear;
-moz-transition: opacity 0.5s linear;
-o-transition: opacity 0.5s linear;
-ms-transition: opacity 0.5s linear;
transition: opacity 0.5s linear;
}
.vjs-original-skin .vjs-control {
position: absolute; /* Use top, bottom, left, and right to specifically position the control. */
text-align: center; margin: 0; padding: 0;
height: 25px; /* Default height of individual controls */
top: 5px; /* Top margin to put space between video and controls when controls are below */
/* CSS Background Gradients
Using to give the aqua-ish look. */
/* Default */ background-color: #0B151A;
/* Webkit */ background: #1F3744 -webkit-gradient(linear, left top, left bottom, from(#0B151A), to(#1F3744)) left 12px;
/* Firefox */ background: #1F3744 -moz-linear-gradient(top, #0B151A, #1F3744) left 12px;
/* CSS Curved Corners */
-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;
/* CSS Shadows */
-webkit-box-shadow: 1px 1px 2px #000; -moz-box-shadow: 1px 1px 2px #000; box-shadow: 1px 1px 2px #000;
}
/* Placement of Control Items
- Left side of pogress bar, use left & width
- Rigth side of progress bar, use right & width
- Expand with the video (like progress bar) use left & right
(using div.x to make more specific than vjs-control style)
*/
.vjs-original-skin div.vjs-play-control { left: 5px; width: 25px; }
.vjs-original-skin div.vjs-progress-control { left: 35px; right: 165px; } /* Using left & right so it expands with the width of the video */
.vjs-original-skin div.vjs-time-control { width: 75px; right: 90px; } /* Time control and progress bar are combined to look like one */
.vjs-original-skin div.vjs-volume-control { width: 50px; right: 35px; }
.vjs-original-skin div.vjs-fullscreen-control { width: 25px; right: 5px; }
/* Removing curved corners on progress control and time control to join them. */
.vjs-original-skin div.vjs-progress-control {
-webkit-border-top-right-radius: 0; -moz-border-radius-topright: 0; border-top-right-radius: 0;
-webkit-border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; border-bottom-right-radius: 0;
}
.vjs-original-skin div.vjs-time-control {
-webkit-border-top-left-radius: 0; -moz-border-radius-topleft: 0; border-top-left-radius: 0;
-webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; border-bottom-left-radius: 0;
}
/* Play/Pause
-------------------------------------------------------------------------------- */
.vjs-original-skin .vjs-play-control { cursor: pointer !important; }
/* Play Icon */
.vjs-original-skin .vjs-play-control span { display: block; font-size: 0; line-height: 0; }
.vjs-original-skin.vjs-paused .vjs-play-control span {
width: 0; height: 0; margin: 8px 0 0 8px;
/* Drawing the play triangle with borders - http://www.infimum.dk/HTML/slantinfo.html */
border-left: 10px solid #fff; /* Width & Color of play icon */
/* Height of play icon is total top & bottom border widths. Color is transparent. */
border-top: 5px solid rgba(0,0,0,0); border-bottom: 5px solid rgba(0,0,0,0);
}
.vjs-original-skin.vjs-playing .vjs-play-control span {
width: 3px; height: 10px; margin: 8px auto 0;
/* Drawing the pause bars with borders */
border-top: 0px; border-left: 3px solid #fff; border-bottom: 0px; border-right: 3px solid #fff;
}
/* Progress
-------------------------------------------------------------------------------- */
.vjs-original-skin .vjs-progress-holder { /* Box containing play and load progresses */
position: relative; padding: 0; overflow:hidden; cursor: pointer !important;
height: 9px; border: 1px solid #777;
margin: 7px 1px 0 5px; /* Placement within the progress control item */
-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;
}
.vjs-original-skin .vjs-progress-holder div { /* Progress Bars */
position: absolute; display: block; width: 0; height: 9px; margin: 0; padding: 0;
left: 0; top: 0; /*Needed for IE6*/
-webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;
}
.vjs-original-skin .vjs-play-progress {
/* CSS Gradient */
/* Default */ background: #fff;
/* Webkit */ background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#777));
/* Firefox */ background: -moz-linear-gradient(top, #fff, #777);
}
.vjs-original-skin .vjs-load-progress {
opacity: 0.8;
/* CSS Gradient */
/* Default */ background-color: #555;
/* Webkit */ background: -webkit-gradient(linear, left top, left bottom, from(#555), to(#aaa));
/* Firefox */ background: -moz-linear-gradient(top, #555, #aaa);
}
/* Time Display
-------------------------------------------------------------------------------- */
.vjs-original-skin .vjs-time-control { font-size: 10px; line-height: 1; font-weight: normal; font-family: Helvetica, Arial, sans-serif; }
.vjs-original-skin .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
/* Volume
-------------------------------------------------------------------------------- */
.vjs-original-skin .vjs-volume-control { cursor: pointer !important; }
.vjs-original-skin .vjs-volume-control div { display: block; margin: 0 5px 0 5px; padding: 4px 0 0 0; }
/* Drawing the volume icon using 6 span elements */
.vjs-original-skin .vjs-volume-control div span { /* Individual volume bars */
float: left; padding: 0; font-size: 0; line-height: 0;
margin: 0 2px 0 0; /* Space between */
width: 5px; height: 0px; /* Total height is height + bottom border */
border-bottom: 18px solid #555; /* Default (off) color and height of visible portion */
}
.vjs-original-skin .vjs-volume-control div span.vjs-volume-level-on { border-color: #fff; /* Volume on bar color */ }
/* Creating differnt bar heights through height (transparent) and bottom border (visible). */
.vjs-original-skin .vjs-volume-control div span.vjs-vc-1 { border-bottom-width: 2px; height: 16px; }
.vjs-original-skin .vjs-volume-control div span.vjs-vc-2 { border-bottom-width: 4px; height: 14px; }
.vjs-original-skin .vjs-volume-control div span.vjs-vc-3 { border-bottom-width: 7px; height: 11px; }
.vjs-original-skin .vjs-volume-control div span.vjs-vc-4 { border-bottom-width: 10px; height: 8px; }
.vjs-original-skin .vjs-volume-control div span.vjs-vc-5 { border-bottom-width: 14px; height: 4px; }
.vjs-original-skin .vjs-volume-control div span.vjs-vc-6 { margin-right: 0; }
/* Fullscreen
-------------------------------------------------------------------------------- */
.vjs-original-skin .vjs-fullscreen-control { cursor: pointer !important; }
.vjs-original-skin .vjs-fullscreen-control div {
padding: 0; text-align: left; vertical-align: top; cursor: pointer !important;
margin: 5px 0 0 5px; /* Placement within the fullscreen control item */
width: 20px; height: 20px;
}
/* Drawing the fullscreen icon using 4 span elements */
.vjs-original-skin .vjs-fullscreen-control div span { float: left; margin: 0; padding: 0; font-size: 0; line-height: 0; width: 0; text-align: left; vertical-align: top; }
.vjs-original-skin .vjs-fullscreen-control div span.vjs-fc-1 { /* Top-left triangle */
margin-right: 3px; /* Space between top-left and top-right */
margin-bottom: 3px; /* Space between top-left and bottom-left */
border-top: 6px solid #fff; /* Height and color */
border-right: 6px solid rgba(0,0,0,0); /* Width */
}
.vjs-original-skin .vjs-fullscreen-control div span.vjs-fc-2 { border-top: 6px solid #fff; border-left: 6px solid rgba(0,0,0,0); }
.vjs-original-skin .vjs-fullscreen-control div span.vjs-fc-3 { clear: both; margin: 0 3px 0 0; border-bottom: 6px solid #fff; border-right: 6px solid rgba(0,0,0,0); }
.vjs-original-skin .vjs-fullscreen-control div span.vjs-fc-4 { border-bottom: 6px solid #fff; border-left: 6px solid rgba(0,0,0,0); }
/* Icon when video is in fullscreen mode */
.vjs-original-skin.vjs-fullscreen .vjs-fullscreen-control div span.vjs-fc-1 { border: none; border-bottom: 6px solid #fff; border-left: 6px solid rgba(0,0,0,0); }
.vjs-original-skin.vjs-fullscreen .vjs-fullscreen-control div span.vjs-fc-2 { border: none; border-bottom: 6px solid #fff; border-right: 6px solid rgba(0,0,0,0); }
.vjs-original-skin.vjs-fullscreen .vjs-fullscreen-control div span.vjs-fc-3 { border: none; border-top: 6px solid #fff; border-left: 6px solid rgba(0,0,0,0); }
.vjs-original-skin.vjs-fullscreen .vjs-fullscreen-control div span.vjs-fc-4 { border: none; border-top: 6px solid #fff; border-right: 6px solid rgba(0,0,0,0); }
/* Big Play Button (at start)
---------------------------------------------------------*/
.vjs-original-skin .vjs-big-play-button {
display: block; /* Start hidden */ z-index: 2;
position: absolute; top: 50%; left: 50%; width: 80px; height: 80px; margin: -43px 0 0 -43px; text-align: center; vertical-align: center; cursor: pointer !important;
border: 3px solid #fff; opacity: 0.9;
-webkit-border-radius: 20px; -moz-border-radius: 20px; border-radius: 20px;
/* CSS Background Gradients */
/* Default */ background-color: #0B151A;
/* Webkit */ background: #1F3744 -webkit-gradient(linear, left top, left bottom, from(#0B151A), to(#1F3744)) left 40px;
/* Firefox */ background: #1F3744 -moz-linear-gradient(top, #0B151A, #1F3744) left 40px;
/* CSS Shadows */
-webkit-box-shadow: 4px 4px 8px #000; -moz-box-shadow: 4px 4px 8px #000; box-shadow: 4px 4px 8px #000;
}
.vjs-original-skin div.vjs-big-play-button:hover {
-webkit-box-shadow: 0px 0px 80px #fff; -moz-box-shadow: 0px 0px 80px #fff; box-shadow: 0px 0px 80px #fff;
}
.vjs-original-skin div.vjs-big-play-button span {
display: block; font-size: 0; line-height: 0;
width: 0; height: 0; margin: 20px 0 0 23px;
/* Drawing the play triangle with borders - http://www.infimum.dk/HTML/slantinfo.html */
border-left: 40px solid #fff; /* Width & Color of play icon */
/* Height of play icon is total top & bottom border widths. Color is transparent. */
border-top: 20px solid rgba(0,0,0,0); border-bottom: 20px solid rgba(0,0,0,0);
}
-499
Ver Arquivo
@@ -1,499 +0,0 @@
/*
VideoJS Default Styles (http://videojs.com)
Version GENERATED_AT_BUILD
*/
/*
REQUIRED STYLES (be careful overriding)
================================================================================ */
/* When loading the player, the video tag is replaced with a DIV,
that will hold the video tag or object tag for other playback methods.
The div contains the video playback element (Flash or HTML5) and controls, and sets the width and height of the video.
** If you want to add some kind of border/padding (e.g. a frame), or special positioning, use another containing element.
Otherwise you risk messing up control positioning and full window mode. **
*/
.video-js {
background-color: #000; position: relative; padding: 0;
/* Start with 10px for base font size so other dimensions can be em based and easily calculable. */
font-size: 10px;
/* Allow poster to be vertially aligned. */
vertical-align: middle;
/* display: table-cell; */ /*This works in Safari but not Firefox.*/
}
/* Playback technology elements expand to the width/height of the containing div. <video> or <object> */
.video-js .vjs-tech { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when checking fullScreenEnabled. */
.video-js:-moz-full-screen { position: absolute; }
/* Fullscreen Styles */
body.vjs-full-window {
padding: 0; margin: 0;
height: 100%; overflow-y: auto; /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */
}
.video-js.vjs-fullscreen {
position: fixed; overflow: hidden; z-index: 1000; left: 0; top: 0; bottom: 0; right: 0; width: 100% !important; height: 100% !important;
_position: absolute; /* IE6 Full-window (underscore hack) */
}
.video-js:-webkit-full-screen {
width: 100% !important; height: 100% !important;
}
/* Poster Styles */
.vjs-poster {
margin: 0 auto; padding: 0; cursor: pointer;
/* Scale with the size of the player div. Works when poster is vertically shorter, but stretches when it's less wide. */
position: relative; width: 100%; max-height: 100%;
}
/* Text Track Styles */
/* Overall track holder for both captions and subtitles */
.video-js .vjs-text-track-display { text-align: center; position: absolute; bottom: 4em; left: 1em; right: 1em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
/* Individual tracks */
.video-js .vjs-text-track {
display: none; color: #fff; font-size: 1.4em; text-align: center; margin-bottom: 0.1em;
/* Transparent black background, or fallback to all black (IE6) */
background: rgb(0, 0, 0); background: rgba(0, 0, 0, 0.50);
}
.video-js .vjs-subtitles { color: #fff; }
.video-js .vjs-captions { color: #fc6; }
.vjs-tt-cue { display: block; }
/* Fading sytles, used to fade control bar. */
.vjs-fade-in {
visibility: visible !important; /* Needed to make sure things hide in older browsers too. */
opacity: 1 !important;
-webkit-transition: visibility 0s linear 0s, opacity 0.3s linear;
-moz-transition: visibility 0s linear 0s, opacity 0.3s linear;
-ms-transition: visibility 0s linear 0s, opacity 0.3s linear;
-o-transition: visibility 0s linear 0s, opacity 0.3s linear;
transition: visibility 0s linear 0s, opacity 0.3s linear;
}
.vjs-fade-out {
visibility: hidden !important;
opacity: 0 !important;
-webkit-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
-moz-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
-ms-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
-o-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
transition: visibility 0s linear 1.5s,opacity 1.5s linear;
}
/* DEFAULT SKIN (override in another file to create new skins)
================================================================================
Instead of editing this file, I recommend creating your own skin CSS file to be included after this file,
so you can upgrade to newer versions easier. You can remove all these styles by removing the 'vjs-default-skin' class from the tag. */
/* The default control bar. Created by bar.js */
.vjs-default-skin .vjs-controls {
position: absolute;
bottom: 0; /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
left: 0; right: 0; /* 100% width of div */
margin: 0; padding: 0; /* Controls are absolutely position, so no padding necessary */
height: 2.6em; /* Including any margin you want above or below control items */
color: #fff; border-top: 1px solid #404040;
/* CSS Gradient */
/* Can use the Ultimate CSS Gradient Generator: http://www.colorzilla.com/gradient-editor/ */
background: #242424; /* Old browsers */
background: -moz-linear-gradient(top, #242424 50%, #1f1f1f 50%, #171717 100%); /* FF3.6+ */
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(50%,#242424), color-stop(50%,#1f1f1f), color-stop(100%,#171717)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* IE10+ */
/* Filter was causing a lot of weird issues in IE. Elements would stop showing up, or other styles would break. */
/*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#242424', endColorstr='#171717',GradientType=0 );*/ /* IE6-9 */
background: linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* W3C */
/* Start hidden and with 0 opacity. Opacity is used to fade in modern browsers. */
/* Can't use display block to hide initially because widths of slider handles aren't calculated and avaialbe for positioning correctly. */
visibility: hidden;
opacity: 0;
}
/* General styles for individual controls. */
.vjs-default-skin .vjs-control {
position: relative; float: left;
text-align: center; margin: 0; padding: 0;
height: 2.6em; width: 2.6em;
}
.vjs-default-skin .vjs-control:focus {
outline: 1;
/* background-color: #555;*/
}
/* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
.vjs-default-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
/* Play/Pause
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-play-control { width: 5em; cursor: pointer !important; }
/* Play Icon */
.vjs-default-skin.vjs-paused .vjs-play-control div { width: 15px; height: 17px; background: url('video-js.png'); margin: 0.5em auto 0; }
.vjs-default-skin.vjs-playing .vjs-play-control div { width: 15px; height: 17px; background: url('video-js.png') -25px 0; margin: 0.5em auto 0; }
/* Rewind
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
.vjs-default-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('video-js.png'); margin: 0.5em auto 0; }
/* Volume/Mute
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-mute-control { width: 3.8em; cursor: pointer !important; float: right; }
.vjs-default-skin .vjs-mute-control div { width: 22px; height: 16px; background: url('video-js.png') -75px -25px; margin: 0.5em auto 0; }
.vjs-default-skin .vjs-mute-control.vjs-vol-0 div { background: url('video-js.png') 0 -25px; }
.vjs-default-skin .vjs-mute-control.vjs-vol-1 div { background: url('video-js.png') -25px -25px; }
.vjs-default-skin .vjs-mute-control.vjs-vol-2 div { background: url('video-js.png') -50px -25px; }
.vjs-default-skin .vjs-volume-control { width: 5em; float: right; }
.vjs-default-skin .vjs-volume-bar {
position: relative; width: 5em; height: 0.6em; margin: 1em auto 0; cursor: pointer !important;
-moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
background: #666;
background: -moz-linear-gradient(top, #333, #666);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#333), to(#666));
background: -webkit-linear-gradient(top, #333, #666);
background: -o-linear-gradient(top, #333, #666);
background: -ms-linear-gradient(top, #333, #666);
background: linear-gradient(top, #333, #666);
}
.vjs-default-skin .vjs-volume-level {
position: absolute; top: 0; left: 0; height: 0.6em;
-moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
background: #fff;
background: -moz-linear-gradient(top, #fff, #ccc);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ccc));
background: -webkit-linear-gradient(top, #fff, #ccc);
background: -o-linear-gradient(top, #fff, #ccc);
background: -ms-linear-gradient(top, #fff, #ccc);
background: linear-gradient(top, #fff, #ccc);
}
.vjs-default-skin .vjs-volume-handle {
position: absolute; top: -0.2em; width: 0.8em; height: 0.8em; background: #ccc; left: 0;
border: 1px solid #fff;
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
}
/* Progress
-------------------------------------------------------------------------------- */
.vjs-default-skin div.vjs-progress-control {
position: absolute;
left: 4.8em; right: 4.8em; /* Leave room for time displays. */
height: 1.0em; width: auto;
top: -1.3em; /* Set above the rest of the controls. And leave room for 2px of borders (progress bottom and controls top). */
border-bottom: 1px solid #1F1F1F;
border-top: 1px solid #222;
/* CSS Gradient */
background: #333;
background: -moz-linear-gradient(top, #222, #333);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
background: -webkit-linear-gradient(top, #222, #333);
background: -o-linear-gradient(top, #333, #222);
background: -ms-linear-gradient(top, #333, #222);
background: linear-gradient(top, #333, #222);
/* 1px top shadow */
/* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
}
/* Box containing play and load progresses. Also acts as seek scrubber. */
.vjs-default-skin .vjs-progress-holder {
position: relative; cursor: pointer !important; /*overflow: hidden;*/
padding: 0; margin: 0; /* Placement within the progress control item */
height: 1.0em;
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
/* CSS Gradient */
background: #111;
background: -moz-linear-gradient(top, #111, #262626);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#111), to(#262626));
background: -webkit-linear-gradient(top, #111, #262626);
background: -o-linear-gradient(top, #111, #262626);
background: -ms-linear-gradient(top, #111, #262626);
background: linear-gradient(top, #111, #262626);
}
.vjs-default-skin .vjs-progress-holder .vjs-play-progress,
.vjs-default-skin .vjs-progress-holder .vjs-load-progress { /* Progress Bars */
position: absolute; display: block; height: 1.0em; margin: 0; padding: 0;
left: 0; top: 0; /*Needed for IE6*/
-moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em;
/*width: 0;*/
}
.vjs-default-skin .vjs-play-progress {
/* CSS Gradient. */
background: #fff; /* Old browsers */
background: -moz-linear-gradient(top, #fff 0%, #d6d6d6 50%, #fff 100%);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#fff), color-stop(50%,#d6d6d6), color-stop(100%,#fff));
background: -webkit-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
background: -o-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
background: -ms-linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
background: linear-gradient(top, #fff 0%,#d6d6d6 50%,#fff 100%);
background: #efefef;
background: -moz-linear-gradient(top, #efefef 0%, #f5f5f5 50%, #dbdbdb 50%, #f1f1f1 100%);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#efefef), color-stop(50%,#f5f5f5), color-stop(50%,#dbdbdb), color-stop(100%,#f1f1f1));
background: -webkit-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
background: -o-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
background: -ms-linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#efefef', endColorstr='#f1f1f1',GradientType=0 );
background: linear-gradient(top, #efefef 0%,#f5f5f5 50%,#dbdbdb 50%,#f1f1f1 100%);
}
.vjs-default-skin .vjs-load-progress {
opacity: 0.8;
/* CSS Gradient */
background: #666;
background: -moz-linear-gradient(top, #666, #333);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#666), to(#333));
background: -webkit-linear-gradient(top, #666, #333);
background: -o-linear-gradient(top, #666, #333);
background: -ms-linear-gradient(top, #666, #333);
background: linear-gradient(top, #666, #333);
}
.vjs-default-skin div.vjs-seek-handle {
position: absolute;
width: 16px; height: 16px; /* Match img pixles */
margin-top: -0.3em;
left: 0; top: 0; /*Needed for IE6*/
background: url('video-js.png') 0 -50px;
/* CSS Curved Corners. Needed to make shadows curved. */
-moz-border-radius: 0.8em; -webkit-border-radius: 0.8em; border-radius: 0.8em;
/* CSS Shadows */
-webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
}
/* Time Display
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-time-controls {
position: absolute;
right: 0;
height: 1.0em; width: 4.8em;
top: -1.3em;
border-bottom: 1px solid #1F1F1F;
border-top: 1px solid #222;
background-color: #333;
font-size: 1em; line-height: 1.0em; font-weight: normal; font-family: Helvetica, Arial, sans-serif;
background: #333;
background: -moz-linear-gradient(top, #222, #333);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#222), to(#333));
background: -webkit-linear-gradient(top, #222, #333);
background: -o-linear-gradient(top, #333, #222);
background: -ms-linear-gradient(top, #333, #222);
background: linear-gradient(top, #333, #222);
/* 1px top shadow */
/* -webkit-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15); box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.15);*/
}
.vjs-default-skin .vjs-current-time { left: 0; }
.vjs-default-skin .vjs-duration { right: 0; display: none; }
.vjs-default-skin .vjs-remaining-time { right: 0; }
.vjs-time-divider { display:none; }
.vjs-default-skin .vjs-time-control { font-size: 1em; line-height: 1; font-weight: normal; font-family: Helvetica, Arial, sans-serif; }
.vjs-default-skin .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
/* Fullscreen
-------------------------------------------------------------------------------- */
.vjs-secondary-controls { float: right; }
.vjs-default-skin .vjs-fullscreen-control { width: 3.8em; cursor: pointer !important; float: right; }
.vjs-default-skin .vjs-fullscreen-control div { width: 16px; height: 16px; background: url('video-js.png') -50px 0; margin: 0.5em auto 0; }
.vjs-default-skin.vjs-fullscreen .vjs-fullscreen-control div { background: url('video-js.png') -75px 0; }
/* Big Play Button (at start)
---------------------------------------------------------*/
.vjs-default-skin .vjs-big-play-button {
display: block; /* Start hidden */ z-index: 2;
position: absolute; top: 50%; left: 50%; width: 8.0em; height: 8.0em; margin: -42px 0 0 -42px; text-align: center; vertical-align: center; cursor: pointer !important;
border: 0.2em solid #fff; opacity: 0.95;
-webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px;
background: #454545;
background: -moz-linear-gradient(top, #454545 0%, #232323 50%, #161616 50%, #3f3f3f 100%);
background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#454545), color-stop(50%,#232323), color-stop(50%,#161616), color-stop(100%,#3f3f3f));
background: -webkit-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
background: -o-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
background: -ms-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#454545', endColorstr='#3f3f3f',GradientType=0 );
background: linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
/* CSS Shadows */
-webkit-box-shadow: 4px 4px 8px #000; -moz-box-shadow: 4px 4px 8px #000; box-shadow: 4px 4px 8px #000;
}
.vjs-default-skin div.vjs-big-play-button:hover {
-webkit-box-shadow: 0 0 80px #fff; -moz-box-shadow: 0 0 80px #fff; box-shadow: 0 0 80px #fff;
}
.vjs-default-skin div.vjs-big-play-button span {
position: absolute; top: 50%; left: 50%;
display: block; width: 35px; height: 42px;
margin: -20px 0 0 -15px; /* Using negative margin to center image. */
background: url('video-js.png') -100px 0;
}
/* Loading Spinner
---------------------------------------------------------*/
/* CSS Spinners by Kilian Valkhof - http://kilianvalkhof.com/2010/css-xhtml/css3-loading-spinners-without-images/ */
.vjs-loading-spinner {
display: none;
position: absolute; top: 50%; left: 50%; width: 55px; height: 55px;
margin: -28px 0 0 -28px;
-webkit-animation-name: rotatethis;
-webkit-animation-duration:1s;
-webkit-animation-iteration-count:infinite;
-webkit-animation-timing-function:linear;
-moz-animation-name: rotatethis;
-moz-animation-duration:1s;
-moz-animation-iteration-count:infinite;
-moz-animation-timing-function:linear;
}
@-webkit-keyframes rotatethis {
0% {-webkit-transform:scale(0.6) rotate(0deg); }
12.5% {-webkit-transform:scale(0.6) rotate(0deg); }
12.51% {-webkit-transform:scale(0.6) rotate(45deg); }
25% {-webkit-transform:scale(0.6) rotate(45deg); }
25.01% {-webkit-transform:scale(0.6) rotate(90deg);}
37.5% {-webkit-transform:scale(0.6) rotate(90deg);}
37.51% {-webkit-transform:scale(0.6) rotate(135deg);}
50% {-webkit-transform:scale(0.6) rotate(135deg);}
50.01% {-webkit-transform:scale(0.6) rotate(180deg);}
62.5% {-webkit-transform:scale(0.6) rotate(180deg);}
62.51% {-webkit-transform:scale(0.6) rotate(225deg);}
75% {-webkit-transform:scale(0.6) rotate(225deg);}
75.01% {-webkit-transform:scale(0.6) rotate(270deg);}
87.5% {-webkit-transform:scale(0.6) rotate(270deg);}
87.51% {-webkit-transform:scale(0.6) rotate(315deg);}
100% {-webkit-transform:scale(0.6) rotate(315deg);}
}
@-moz-keyframes rotatethis {
0% {-moz-transform:scale(0.6) rotate(0deg);}
12.5% {-moz-transform:scale(0.6) rotate(0deg);}
12.51% {-moz-transform:scale(0.6) rotate(45deg);}
25% {-moz-transform:scale(0.6) rotate(45deg);}
25.01% {-moz-transform:scale(0.6) rotate(90deg);}
37.5% {-moz-transform:scale(0.6) rotate(90deg);}
37.51% {-moz-transform:scale(0.6) rotate(135deg);}
50% {-moz-transform:scale(0.6) rotate(135deg);}
50.01% {-moz-transform:scale(0.6) rotate(180deg);}
62.5% {-moz-transform:scale(0.6) rotate(180deg);}
62.51% {-moz-transform:scale(0.6) rotate(225deg);}
75% {-moz-transform:scale(0.6) rotate(225deg);}
75.01% {-moz-transform:scale(0.6) rotate(270deg);}
87.5% {-moz-transform:scale(0.6) rotate(270deg);}
87.51% {-moz-transform:scale(0.6) rotate(315deg);}
100% {-moz-transform:scale(0.6) rotate(315deg);}
}
/* Each circle */
div.vjs-loading-spinner .ball1 { opacity: 0.12; position:absolute; left: 20px; top: 0px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball2 { opacity: 0.25; position:absolute; left: 34px; top: 6px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball3 { opacity: 0.37; position:absolute; left: 40px; top: 20px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball4 { opacity: 0.50; position:absolute; left: 34px; top: 34px; width: 13px; height: 13px; background: #fff;
border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 15px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball5 { opacity: 0.62; position:absolute; left: 20px; top: 40px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball6 { opacity: 0.75; position:absolute; left: 6px; top: 34px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball7 { opacity: 0.87; position:absolute; left: 0px; top: 20px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
div.vjs-loading-spinner .ball8 { opacity: 1.00; position:absolute; left: 6px; top: 6px; width: 13px; height: 13px; background: #fff;
border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
/* Menu Buttons (Captions/Subtitles/etc.)
-------------------------------------------------------------------------------- */
.vjs-default-skin .vjs-menu-button {
float: right; margin: 0.2em 0.5em 0 0; padding: 0; width: 3em; height: 2em; cursor: pointer !important;
border: 1px solid #111; -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em;
background: #4d4d4d;
background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
}
/* Button Icon */
.vjs-default-skin .vjs-menu-button div { background: url('video-js.png') 0px -75px no-repeat; width: 16px; height: 16px; margin: 0.2em auto 0; padding: 0; }
/* Button Pop-up Menu */
.vjs-default-skin .vjs-menu-button ul {
display: none; /* Start hidden. Hover will show. */
opacity: 0.8;
padding: 0; margin: 0;
position: absolute; width: 10em; bottom: 2em; max-height: 15em;
left: -3.5em; /* Width of menu - width of button / 2 */
background-color: #111;
border: 2px solid #333;
-moz-border-radius: 0.7em; -webkit-border-radius: 1em; border-radius: .5em;
-webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
overflow: auto;
}
.vjs-default-skin .vjs-menu-button:focus ul,
.vjs-default-skin .vjs-menu-button:hover ul { display: block; list-style: none; }
.vjs-default-skin .vjs-menu-button ul li { list-style: none; margin: 0; padding: 0.3em 0 0.3em 20px; line-height: 1.4em; font-size: 1.2em; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; text-align: left; }
.vjs-default-skin .vjs-menu-button ul li.vjs-selected { text-decoration: underline; background: url('video-js.png') -125px -50px no-repeat; }
.vjs-default-skin .vjs-menu-button ul li:focus,
.vjs-default-skin .vjs-menu-button ul li:hover,
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:focus,
.vjs-default-skin .vjs-menu-button ul li.vjs-selected:hover { background-color: #ccc; color: #111; outline: 0; }
.vjs-default-skin .vjs-menu-button ul li.vjs-menu-title {
text-align: center; text-transform: uppercase; font-size: 1em; line-height: 2em; padding: 0; margin: 0 0 0.3em 0;
color: #fff; font-weight: bold;
cursor: default;
background: #4d4d4d;
background: -moz-linear-gradient(top, #4d4d4d 0%, #3f3f3f 50%, #333333 50%, #252525 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4d4d4d), color-stop(50%,#3f3f3f), color-stop(50%,#333333), color-stop(100%,#252525));
background: -webkit-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: -o-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: -ms-linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
background: linear-gradient(top, #4d4d4d 0%,#3f3f3f 50%,#333333 50%,#252525 100%);
}
/* Subtitles Button */
.vjs-default-skin .vjs-captions-button div { background-position: -25px -75px; }
.vjs-default-skin .vjs-chapters-button div { background-position: -100px -75px; }
.vjs-default-skin .vjs-chapters-button ul { width: 20em; left: -8.5em; /* Width of menu - width of button / 2 */ }
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 8.0 KiB

-51
Ver Arquivo
@@ -1,51 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>HTML5 Video Player</title>
<link href="design/video-js.css" rel="stylesheet" type="text/css">
<!--[if IE]>
<script src="https://getfirebug.com/releases/lite/1.3/firebug-lite.js"></script>
<!--<![endif]-->
<script src="src/core.js"></script>
<script src="src/lib.js"></script>
<script src="src/ecma.js"></script>
<script src="src/json.js"></script>
<script src="src/component.js"></script>
<script src="src/player.js"></script>
<script src="src/tech.js"></script>
<script src="src/controls.js"></script>
<script src="src/events.js"></script>
<script src="src/tracks.js"></script>
<script src="src/setup.js"></script>
<script type="text/javascript" charset="utf-8">
// Easy access to test Flash over HTML5. Add ?flash to URL
if (window.location.href.indexOf("?flash") !== -1) {
_V_.options.techOrder = ["H5swf"]
}
</script>
</head>
<body>
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup='{}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4'>
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm'>
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg'>
<p>Video Playback Not Supported</p>
</video>
<script>
vid = document.getElementById("vid1");
</script>
</body>
</html>
-17
Ver Arquivo
@@ -1,17 +0,0 @@
#! /usr/bin/env ruby
# Create javascript file with list of source files for easy inclusion in other development files.
# puts ARGV[0]
File.open("source-list.js", "w+") do |file|
file.puts "var vjsSourceList = [];"
Dir.foreach('../src') do |item|
next if item == '.' or item == '..' or item == '.DS_Store'
file.puts "vjsSourceList.push('src/#{item}')"
end
end
Ver Arquivo
-31
Ver Arquivo
@@ -1,31 +0,0 @@
// Attempting to create a portable script that loads source files in order. So we can change which files are included and have it change multiple places.
var vjsSourceList = ["require",
'order!../../src/core.js',
'order!../../src/lib.js',
'order!../../src/component.js',
'order!../../src/controls.js',
'order!../../src/ecma.js',
'order!../../src/events.js',
'order!../../src/json.js',
'order!../../src/player.js',
'order!../../src/tech.js',
'order!../../src/tracks.js',
'order!../../flash/swfobject.js',
'order!../../src/setup.js'
];
// Not going to be used in production, so eval ok.
require([vjsSourceList])
// var requireEval = '';
// for (var i=0; i < vjsSourceList.length; i++) {
// requireEval += 'require(["order!'+vjsSourceList[i]+'"], function() { ';
// }
//
// requireEval += 'var libsLoaded = true;'
//
// for (var i=0; i < vjsSourceList.length; i++) {
// requireEval += ' }); ';
// }
//
// eval(requireEval);
-2144
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
-13
Ver Arquivo
@@ -1,13 +0,0 @@
<!-- Video.js Source Files -->
<script src='src/core.js'></script>
<script src='src/lib.js'></script>
<script src='src/component.js'></script>
<script src='src/controls.js'></script>
<script src='src/ecma.js'></script>
<script src='src/events.js'></script>
<script src='src/json.js'></script>
<script src='src/player.js'></script>
<script src='src/tech.js'></script>
<script src='src/tracks.js'></script>
<script src='src/setup.js'></script>
<!-- END Video.js Source Files -->
-13
Ver Arquivo
@@ -1,13 +0,0 @@
var vjsSourceList = [];
vjsSourceList.push('src/core')
vjsSourceList.push('src/lib')
vjsSourceList.push('src/component')
vjsSourceList.push('src/controls')
vjsSourceList.push('src/ecma')
vjsSourceList.push('src/events')
vjsSourceList.push('src/json')
vjsSourceList.push('src/player')
vjsSourceList.push('src/tech')
vjsSourceList.push('src/tracks')
vjsSourceList.push('flash/swfobject')
vjsSourceList.push('src/setup')
-288
Ver Arquivo
@@ -1,288 +0,0 @@
---
layout: docs
title: API
description: Video.JS API Docs - API settings based on the HTML5 video API
body_id: api
body_class: docs subpage
---
API
===
The Video.js API allows you to interact with the video through Javascript, whether the browser is playing the video through HTML5 video, Flash, or any other supported playback technologies.
Referencing the Player
----------------------
To use the API functions, you need access to the player object. Luckily this is easy to get. You just need to make sure your video tag has an ID. The example embed code has an ID of "example\_video_1". If you have multiple videos on one page, make sure every video tag has a unique ID.
<code type="javascript">
var myPlayer = _V_("example_video_1");
</code>
(If the player hasn't been initialized yet via the data-setup attribute or another method, this will also initialize the player.)
Wait Until the Player is Ready
------------------------------
The time it takes Video.js to set up the video and API will vary depending on the playback technology being used (HTML5 will often be much faster to load than Flash). For that reason we want to use the player's 'ready' function to trigger any code that requires the player's API.
<code type="javascript">
_V_("example_video_1").ready(function(){
var myPlayer = this;
// EXAMPLE: Start playing the video.
myPlayer.play();
});
</code>
API Methods
-----------
Now that you have access to a ready player, you can control the video, get values, or respond to video events using the following functions. The Video.js API function names follow the [HTML5 media API](http://www.w3.org/TR/html5/video.html). The main difference is that attributes which you would get or set on a video element using the equals sign ( `myVideoElement.currentTime = "120";` ), you would use a function argument syntax for Video.js ( `myPlayer.currentTime(120);` )
### play() ###
Start video playback. Returns the player object.
<code type="javascript">
myPlayer.play();
</code>
### pause() ###
Pause the video playback. Returns the player object
<code type="javascript">
myPlayer.pause();
</code>
### src(newSource) ###
The source function updates the video source. There are three types of variables you can pass as the argument.
**URL String**: A URL to the the video file. Use this method if you're sure the current playback technology (HTML5/Flash) can support the source you provide. Currently only MP4 files can be used in both HTML5 and Flash.
<code type="javascript">
myPlayer.src("http://www.example.com/path/to/video.mp4");
</code>
**Source Object (or element):** A javascript object containing information about the source file. Use this method if you want the player to determine if it can support the file using the type information.
<code type="javascript">
myPlayer.src({ type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" });
</code>
**Array of Source Objects:** To provide multiple versions of the source so that it can be played using HTML5 across browsers you can use an array of source objects. Video.js will detect which version is supported and load that file.
<code type="javascript">
myPlayer.src([
{ type: "video/mp4", src: "http://www.example.com/path/to/video.mp4" },
{ type: "video/webm", src: "http://www.example.com/path/to/video.webm" },
{ type: "video/ogg", src: "http://www.example.com/path/to/video.ogv" }
]);
</code>
Returns the player object.
### currentTime() ###
Returns the current time of the video in seconds.
<code type="javascript">
var whereYouAt = myPlayer.currentTime();
</code>
### currentTime(seconds) // Type: Integer or Float ###
Seek to the supplied time (seconds). Returns the player object.
<code type="javascript">
myPlayer.currentTime(120); // 2 minutes into the video
</code>
### duration() ###
Returns the length in time of the video in seconds. NOTE: The video must have started loading before the duration can be known, and in the case of Flash, may not be known until the video starts playing.
<code type="javascript">
var howLongIsThis = myPlayer.duration();
</code>
### buffered() ###
Returns a [TimeRange](http://videojs.com/docs/glossary.html#timerange) object with sections of the video that have been downloaded. If you just want the percent of the video that's been downloaded, use bufferedPercent.
<code type="javascript">
var bufferedTimeRange = myPlayer.buffered(),
// Number of different ranges of time have been buffered. Usually 1.
numberOfRanges = bufferedTimeRange.length,
// Time in seconds when the first range starts. Usually 0.
firstRangeStart = bufferedTimeRange.start(0),
// Time in seconds when the first range ends
firstRangeEnd = bufferedTimeRange.end(0),
// Length in seconds of the first time range
firstRangeLength = firstRangeEnd - firstRangeStart;
</code>
### bufferedPercent() ###
Returns the percent (as a decimal) of the video that's been downloaded. 0 means none, 1 means all.
<code type="javascript">
var howMuchIsDownloaded = myPlayer.bufferedPercent();
</code>
### volume() ###
Returns the current volume of the video as a percent in decimal form. 0 is off (muted), 1.0 is all the way up, 0.5 is half way.
<code type="javascript">
var howLoudIsIt = myPlayer.volume();
</code>
### volume(percentAsDecimal) ###
Set the volume to the supplied percent (as a decimal between 0 and 1).
<code type="javascript">
myPlayer.volume(0.5); // Set volume to half
</code>
### width() ###
Returns the current width of the video in pixels.
<code type="javascript">
var howWideIsIt = myPlayer.width();
</code>
### width(pixels) ###
Change the width of the video to the supplied width in pixels. Returns the player object
<code type="javascript">
myPlayer.width(640);
</code>
### height() ###
Returns the current height of the video in pixels.
<code type="javascript">
var howTallIsIt = myPlayer.height();
</code>
### height(pixels) ###
Change the height of the video to the supplied height in pixels. Returns the player object
<code type="javascript">
myPlayer.height(480);
</code>
### size(width, height) ###
Changes the width and height of the video to the supplied width and height. This is more efficient if you're changing both width and height (only triggers the player's resize event once). Returns the player object.
<code type="javascript">
myPlayer.size(640,480);
</code>
### requestFullScreen() ###
Increase the size of the video to full screen. In some browsers, full screen is not supported natively, so it enters full window mode, where the video fills the browser window. In browsers and devices that support native full screen, sometimes the browser's default controls will be shown, and not the Video.js custom skin. This includes most mobile devices (iOS, Android) and older versions of Safari. Returns the player object.
<code type="javascript">
myPlayer.requestFullScreen();
</code>
### cancelFullScreen() ###
Return the video to its normal size after having been in full screen mode. Returns the player object.
<code type="javascript">
myPlayer.cancelFullScreen();
</code>
Events
------
You can attach event listeners to the player similarly to how you would for a video element.
<code type="javascript">
var myFunc = function(){
var myPlayer = this;
// Do something when the event is fired
};
myPlayer.addEvent("eventName", myFunc);
</code>
You can also remove the listeners later.
<code type="javascript">
myPlayer.removeEvent("eventName", myFunc);
</code>
### Event Types
List of player events you can add listeners for.
<table border="0" cellspacing="5" cellpadding="5">
<tr><th>Name</th><th>Description</th></tr>
<tr><td>loadstart</td><td>Fired when the user agent begins looking for media data.</td></tr>
<tr><td>loadedmetadata</td><td>Fired when the player has initial duration and dimension information.</td></tr>
<tr><td>loadeddata</td><td>Fired when the player has downloaded data at the current playback position.</td></tr>
<tr><td>loadedalldata</td><td>Fired when the player has finished downloading the source data.</td></tr>
<tr><td>play</td><td>Fired whenever the media begins or resumes playback.</td></tr>
<tr><td>pause</td><td>Fired whenever the media has been paused.</td></tr>
<tr><td>timeupdate</td><td>Fired when the current playback position has changed. During playback this is fired every 15-250 milliseconds, depnding on the playback technology in use.</td></tr>
<tr><td>ended</td><td>Fired when the end of the media resource is reached. currentTime == duration</td></tr>
<tr><td>durationchange</td><td>Fired when the duration of the media resource is changed, or known for the first time.</td></tr>
<tr><td>progress</td><td>Fired while the user agent is downloading media data.</td></tr>
<tr><td>resize</td><td>Fired when the width and/or height of the video window changes.</td></tr>
<tr><td>volumechange</td><td>Fired when the volume changes.</td></tr>
<tr><td>error</td><td>Fired when there is an error in playback.</td></tr>
<tr><td>fullscreenchange</td><td>Fired when the player switches in or out of fullscreen mode.</td></tr>
</table>
+330
Ver Arquivo
@@ -0,0 +1,330 @@
WEBVTT
1
00:00:15.042 --> 00:00:18.625
...إلى... إلى الشمال يمكن أن نرى
...يمكن أن نرى الـ
2
00:00:18.750 --> 00:00:20.958
...إلى اليمين يمكن أن نرى الـ
3
00:00:21.000 --> 00:00:23.125
طاحنات الرؤوس...
4
00:00:23.208 --> 00:00:25.208
كل شيئ آمن
آمن كلية
5
00:00:26.333 --> 00:00:28.333
إيمو ؟
6
00:00:28.875 --> 00:00:30.958
! حذاري
7
00:00:47.125 --> 00:00:49.167
هل أصبت ؟
8
00:00:52.125 --> 00:00:54.833
...لا أظن ذلك
وأنت ؟
9
00:00:55.625 --> 00:00:57.625
أنا بخير
10
00:00:57.667 --> 00:01:01.667
،قم يا إيمو
المكان هنا غير آمن
11
00:01:02.208 --> 00:01:04.083
لنذهب
12
00:01:04.167 --> 00:01:06.167
وماذا بعد ؟
13
00:01:06.167 --> 00:01:08.583
...سترى... سترى
14
00:01:16.167 --> 00:01:18.375
إيمو، من هنا
15
00:01:34.958 --> 00:01:37.000
! إتبعني
16
00:02:11.125 --> 00:02:13.625
! أسرع يا إيمو
17
00:02:48.375 --> 00:02:50.375
! لست منتبها
18
00:02:50.750 --> 00:02:54.500
...أريد فقط أن أجيب الـ
الهاتف...
19
00:02:55.000 --> 00:02:58.500
،إيمو، أنظر
أقصد أنصت
20
00:02:59.750 --> 00:03:03.292
عليك أن تتعلم الإصغاء
21
00:03:03.625 --> 00:03:05.917
هذا ليس ضربا من اللهو
22
00:03:06.083 --> 00:03:09.958
...إنك
أقصد إننا قد نموت بسهولة في هذا المكان
23
00:03:10.208 --> 00:03:14.125
...أنصت
أنصت إلى أصوات الآلة
24
00:03:18.333 --> 00:03:20.417
أنصت إلى نَفَسِك
25
00:04:27.208 --> 00:04:29.250
ألا تمل أبدا من هذا ؟
26
00:04:29.583 --> 00:04:31.583
أمل ؟!؟
نعم -
27
00:04:31.750 --> 00:04:34.667
إيمو؛ الآلة في دقتها... مثل الساعة
28
00:04:35.500 --> 00:04:37.708
...حركة ناشزة واحدة قد
29
00:04:37.833 --> 00:04:39.875
تطرحك معجونا
30
00:04:41.042 --> 00:04:43.083
...أو ليست
31
00:04:43.125 --> 00:04:46.542
! عجينة يا إيمو
أ هذا ما تريد ؟ أن تصبح عجينة ؟
32
00:04:48.083 --> 00:04:50.083
أيمو، أ هذا هدفك في الحياة ؟
33
00:04:50.583 --> 00:04:52.667
أن تصير عجينة ؟
34
00:05:41.833 --> 00:05:43.875
إيمو، أغمض عينيك
35
00:05:44.917 --> 00:05:47.000
لماذا ؟
! الآن -
36
00:05:53.750 --> 00:05:56.042
حسن
37
00:05:59.542 --> 00:06:02.792
ماذا ترى إلى شمالك يا إيمو ؟
38
00:06:04.417 --> 00:06:06.500
لا شيئ
حقا ؟ -
39
00:06:06.542 --> 00:06:08.625
لا، لا شيئ البتة
40
00:06:08.625 --> 00:06:12.417
وماذا ترى إلى جهتك اليمنى يا إيمو ؟
41
00:06:13.667 --> 00:06:17.833
،نفس الشيئ يا بروغ
! نفس الشيئ بالضبط؛ لا شيئ
42
00:06:17.875 --> 00:06:19.917
عظيم
43
00:06:40.625 --> 00:06:42.958
أنصت يا بروغ ! هل تسمع ذلك ؟
44
00:06:43.625 --> 00:06:45.625
هل نستطيع الذهاب إلى هناك ؟
45
00:06:45.708 --> 00:06:47.792
هناك ؟
نعم -
46
00:06:47.833 --> 00:06:49.833
إنه غير آمن يا إيمو
47
00:06:49.917 --> 00:06:52.500
صدقني، إنه غير آمن
48
00:06:53.292 --> 00:06:55.375
...لكن لعلي أستطيع
49
00:06:55.417 --> 00:06:57.417
...لكن
! لا -
50
00:06:57.667 --> 00:06:59.667
! لا
51
00:07:00.875 --> 00:07:03.750
هل من أسئلة أخرى يا إيمو ؟
52
00:07:04.250 --> 00:07:06.333
لا
53
00:07:09.458 --> 00:07:11.542
...إيمو
نعم -
54
00:07:11.875 --> 00:07:13.958
...لماذا يا إيمو... لماذا
55
00:07:15.292 --> 00:07:18.792
لماذا لا تستطيع أن ترى حُسْن هذا المكان
56
00:07:18.833 --> 00:07:20.833
...والطريقة التي يعمل بها
57
00:07:20.875 --> 00:07:24.000
وكيف... وكيف أنه غاية في الكمال
58
00:07:24.083 --> 00:07:27.417
! لا يا بروغ، لا أرى ذلك
59
00:07:27.542 --> 00:07:30.333
لا أرى ذلك لأنه لا يوجد شيئ هناك
60
00:07:31.500 --> 00:07:35.333
ثم لماذا يجب علي أن أسلم حياتي
لشيئ لا وجود له ؟
61
00:07:35.583 --> 00:07:37.625
هل يمكنك أن تخبرني ؟
62
00:07:37.708 --> 00:07:39.750
! أجبني
63
00:07:43.208 --> 00:07:47.333
...بروغ
! أنت معتوه يا هذا
64
00:07:47.375 --> 00:07:49.417
! إبعد عني
65
00:07:52.583 --> 00:07:55.083
! لا يا إيمو ! إنه فخ
66
00:07:55.833 --> 00:07:57.875
...إنه فخ
67
00:07:57.917 --> 00:08:01.750
إلى جنبك الأيسر يمكنك أن ترى
حدائق بابل المعلقة
68
00:08:02.250 --> 00:08:04.292
هل تعجبك كفخ ؟
69
00:08:05.458 --> 00:08:07.542
لا يا أيمو
70
00:08:09.417 --> 00:08:12.792
...إلى جنبك الأيمن يمكنك رؤية
حزر ماذا ؟
71
00:08:13.000 --> 00:08:15.042
! عملاق رودس
72
00:08:15.125 --> 00:08:16.417
! لا
73
00:08:16.458 --> 00:08:20.500
،عملاق رودس
وهو هنا خصيصا من أجلك يا بروغ
74
00:08:20.583 --> 00:08:22.583
فقط من أجلك
75
00:08:51.333 --> 00:08:53.375
إنه هناك
76
00:08:53.417 --> 00:08:55.500
أنا أؤكد لك... إيمو
77
00:08:57.333 --> 00:09:00.000
...إنه
+334
Ver Arquivo
@@ -0,0 +1,334 @@
WEBVTT
1
00:00:15.000 --> 00:00:17.951
At the left we can see...
2
00:00:18.166 --> 00:00:20.083
At the right we can see the...
3
00:00:20.119 --> 00:00:21.962
...the head-snarlers
4
00:00:21.999 --> 00:00:24.368
Everything is safe.
Perfectly safe.
5
00:00:24.582 --> 00:00:27.035
Emo?
6
00:00:28.206 --> 00:00:29.996
Watch out!
7
00:00:47.037 --> 00:00:48.494
Are you hurt?
8
00:00:51.994 --> 00:00:53.949
I don't think so.
You?
9
00:00:55.160 --> 00:00:56.985
I'm Ok.
10
00:00:57.118 --> 00:01:01.111
Get up.
Emo. it's not safe here.
11
00:01:02.034 --> 00:01:03.573
Let's go.
12
00:01:03.610 --> 00:01:05.114
What's next?
13
00:01:05.200 --> 00:01:09.146
You'll see!
14
00:01:16.032 --> 00:01:18.022
Emo.
This way.
15
00:01:34.237 --> 00:01:35.481
Follow me!
16
00:02:11.106 --> 00:02:12.480
Hurry Emo!
17
00:02:48.059 --> 00:02:49.930
You're not paying attention!
18
00:02:50.142 --> 00:02:54.052
I just want to answer the...
...phone.
19
00:02:54.974 --> 00:02:57.972
Emo. look.
I mean listen.
20
00:02:59.140 --> 00:03:02.008
You have to learn to listen.
21
00:03:03.140 --> 00:03:04.965
This is not some game.
22
00:03:05.056 --> 00:03:09.345
You. I mean we.
we could easily die out here.
23
00:03:10.014 --> 00:03:13.959
Listen.
listen to the sounds of the machine.
24
00:03:18.054 --> 00:03:20.009
Listen to your breathing.
25
00:04:27.001 --> 00:04:28.956
Well. don't you ever get tired of this?
26
00:04:29.084 --> 00:04:30.909
Tired?!?
27
00:04:31.126 --> 00:04:34.491
Emo. the machine is like clockwork.
28
00:04:35.083 --> 00:04:37.074
One move out of place...
29
00:04:37.166 --> 00:04:39.121
...and you're ground to a pulp.
30
00:04:40.958 --> 00:04:42.004
But isn't it -
31
00:04:42.041 --> 00:04:46.034
Pulp. Emo!
Is that what you want. pulp?
32
00:04:47.040 --> 00:04:48.995
Emo. your goal in life...
33
00:04:50.081 --> 00:04:51.953
...pulp?
34
00:05:41.156 --> 00:05:43.028
Emo. close your eyes.
35
00:05:44.156 --> 00:05:46.027
Why?
- Now!
36
00:05:51.155 --> 00:05:52.102
Ok.
37
00:05:53.113 --> 00:05:54.688
Good.
38
00:05:59.070 --> 00:06:02.103
What do you see at your left side. Emo?
39
00:06:04.028 --> 00:06:05.899
Nothing.
- Really?
40
00:06:06.027 --> 00:06:07.105
No. nothing at all.
41
00:06:07.944 --> 00:06:11.984
And at your right.
what do you see at your right side. Emo?
42
00:06:13.151 --> 00:06:16.102
The same Proog. exactly the same...
43
00:06:16.942 --> 00:06:19.098
...nothing!
- Great.
44
00:06:40.105 --> 00:06:42.724
Listen Proog! Do you hear that!
45
00:06:43.105 --> 00:06:44.894
Can we go here?
46
00:06:44.979 --> 00:06:47.894
There?
It isn't safe. Emo.
47
00:06:49.145 --> 00:06:52.013
But...
- Trust me. it's not.
48
00:06:53.020 --> 00:06:54.145
Maybe I could...
49
00:06:54.181 --> 00:06:55.969
No.
50
00:06:57.102 --> 00:06:59.934
NO!
51
00:07:00.144 --> 00:07:03.058
Any further questions. Emo?
52
00:07:03.976 --> 00:07:05.090
No.
53
00:07:09.059 --> 00:07:10.089
Emo?
54
00:07:11.142 --> 00:07:13.058
Emo. why...
55
00:07:13.095 --> 00:07:14.022
Emo...
56
00:07:14.058 --> 00:07:18.003
...why can't you see
the beauty of this place?
57
00:07:18.141 --> 00:07:20.048
The way it works.
58
00:07:20.140 --> 00:07:23.895
How perfect it is.
59
00:07:23.932 --> 00:07:26.964
No. Proog. I don't see.
60
00:07:27.056 --> 00:07:29.970
I don't see because there's nothing there.
61
00:07:31.055 --> 00:07:34.965
And why should I trust my
life to something that isn't there?
62
00:07:35.055 --> 00:07:36.926
Well can you tell me that?
63
00:07:37.054 --> 00:07:38.926
Answer me!
64
00:07:42.970 --> 00:07:44.000
Proog...
65
00:07:45.053 --> 00:07:46.985
...you're a sick man!
66
00:07:47.022 --> 00:07:48.918
Stay away from me!
67
00:07:52.052 --> 00:07:54.884
No! Emo! It's a trap!
68
00:07:55.135 --> 00:07:56.931
Hah. it's a trap.
69
00:07:56.968 --> 00:08:01.043
At the left side you can see
the hanging gardens of Babylon!
70
00:08:01.967 --> 00:08:03.957
How's that for a trap?
71
00:08:05.050 --> 00:08:06.922
No. Emo.
72
00:08:09.008 --> 00:08:12.088
At the right side you can see...
...well guess what...
73
00:08:12.924 --> 00:08:14.665
...the colossus of Rhodes!
74
00:08:15.132 --> 00:08:16.053
No!
75
00:08:16.090 --> 00:08:21.919
The colossus of Rhodes
and it is here just for you Proog.
76
00:08:51.001 --> 00:08:52.923
It is there...
77
00:08:52.959 --> 00:08:56.040
I'm telling you.
Emo...
78
00:08:57.000 --> 00:08:59.867
...it is.
+326
Ver Arquivo
@@ -0,0 +1,326 @@
WEBVTT
1
00:00:15.042 --> 00:00:18.042
左に見えるのは…
2
00:00:18.750 --> 00:00:20.333
右に見えるのは…
3
00:00:20.417 --> 00:00:21.917
…首刈り機
4
00:00:22.000 --> 00:00:24.625
すべて安全
完璧に安全だ
5
00:00:26.333 --> 00:00:27.333
イーモ?
6
00:00:28.875 --> 00:00:30.250
危ない!
7
00:00:47.125 --> 00:00:48.250
ケガはないか?
8
00:00:51.917 --> 00:00:53.917
ええ、多分…
あなたは?
9
00:00:55.625 --> 00:00:57.125
わしは平気だ
10
00:00:57.583 --> 00:01:01.667
起きてくれイーモ
ここは危ない
11
00:01:02.208 --> 00:01:03.667
行こう
12
00:01:03.750 --> 00:01:04.917
どこに?
13
00:01:05.875 --> 00:01:07.875
すぐにわかるさ!
14
00:01:16.167 --> 00:01:18.375
イーモ、こっちだ
15
00:01:34.958 --> 00:01:36.958
ついて来るんだ!
16
00:02:11.583 --> 00:02:12.792
イーモ、早く!
17
00:02:48.375 --> 00:02:50.083
むやみにさわるな!
18
00:02:50.750 --> 00:02:54.500
僕はただ、電話に
…出ようと
19
00:02:55.000 --> 00:02:58.208
イーモ、見るんだ…
いや、聞いてくれ
20
00:02:59.750 --> 00:03:02.292
君は「聞き方」を知る必要がある
21
00:03:03.625 --> 00:03:05.125
これは遊びじゃない
22
00:03:06.167 --> 00:03:10.417
我々はここでは
たやすく死ぬ
23
00:03:11.208 --> 00:03:14.125
機械の声を聞くんだ
24
00:03:18.333 --> 00:03:22.417
君の息づかいを聞くんだ
25
00:04:27.208 --> 00:04:29.250
そんなことして疲れない?
26
00:04:29.583 --> 00:04:31.083
疲れる?!
27
00:04:31.750 --> 00:04:34.667
この機械は非常に正確で
28
00:04:35.500 --> 00:04:37.708
一つ間違えば…
29
00:04:37.833 --> 00:04:40.792
…地面に落ちてバラバラだ
30
00:04:41.042 --> 00:04:42.375
え、でも―
31
00:04:42.417 --> 00:04:46.542
バラバラだぞ、イーモ!
それでいいのか?
32
00:04:48.083 --> 00:04:50.000
バラバラで死ぬんだぞ?
33
00:04:50.583 --> 00:04:52.250
バラバラだ!
34
00:05:41.833 --> 00:05:43.458
イーモ、目を閉じるんだ
35
00:05:44.917 --> 00:05:46.583
なぜ?
―早く!
36
00:05:53.750 --> 00:05:56.042
それでいい
37
00:05:59.542 --> 00:06:03.792
左に見えるものは何だ、イーモ?
38
00:06:04.417 --> 00:06:06.000
え…何も
―本当か?
39
00:06:06.333 --> 00:06:07.917
全く何も
40
00:06:08.042 --> 00:06:12.833
では右は
何か見えるか、イーモ?
41
00:06:13.875 --> 00:06:16.917
同じだよプルーグ、全く同じ…
42
00:06:17.083 --> 00:06:18.583
何もない!
43
00:06:40.625 --> 00:06:43.208
プルーグ!何か聞こえない?
44
00:06:43.625 --> 00:06:45.042
あそこに行かないか?
45
00:06:45.208 --> 00:06:48.042
あそこ?
…安全じゃない
46
00:06:49.917 --> 00:06:52.500
でも…
―本当に危ないぞ
47
00:06:53.292 --> 00:06:54.792
大丈夫だよ…
48
00:06:54.833 --> 00:06:56.333
だめだ
49
00:06:57.667 --> 00:07:00.167
だめだ!
50
00:07:00.875 --> 00:07:03.750
まだ続ける気か、イーモ?
51
00:07:04.250 --> 00:07:05.917
いいえ…
52
00:07:09.458 --> 00:07:10.833
イーモ?
53
00:07:11.875 --> 00:07:13.542
イーモ、なぜ…
54
00:07:13.583 --> 00:07:14.458
イーモ…
55
00:07:14.500 --> 00:07:18.500
…なぜここの美しさが
見えない?
56
00:07:18.833 --> 00:07:20.750
仕組みがこんなに…
57
00:07:20.875 --> 00:07:24.000
こんなに完全なのに
58
00:07:24.083 --> 00:07:27.417
もういいよ!プルーグ!
59
00:07:27.542 --> 00:07:30.333
そこには何もないんだから
60
00:07:31.500 --> 00:07:35.333
なぜ命を「ない」物に
ゆだねなきゃ?
61
00:07:35.583 --> 00:07:37.125
教えてくれないか?
62
00:07:37.500 --> 00:07:39.167
さあ!
63
00:07:43.208 --> 00:07:44.583
プルーグ…
64
00:07:45.500 --> 00:07:47.333
あなたは病気なんだ
65
00:07:47.375 --> 00:07:49.208
僕から離れてくれ
66
00:07:52.583 --> 00:07:55.083
いかん!イーモ!ワナだ!
67
00:07:55.833 --> 00:07:57.167
ワナだ? ふーん
68
00:07:57.208 --> 00:08:01.750
左に何が見える?
バビロンの空中庭園!
69
00:08:02.250 --> 00:08:04.292
これがワナとでも?
70
00:08:05.458 --> 00:08:07.125
だめだ、イーモ
71
00:08:09.417 --> 00:08:12.792
右にあるのは…
…すごい!…
72
00:08:13.000 --> 00:08:14.750
…ロードス島の巨像だ!
73
00:08:15.833 --> 00:08:16.708
やめろ!
74
00:08:16.750 --> 00:08:22.167
この巨像はあなたの物
プルーグ、あなたのだよ
75
00:08:51.333 --> 00:08:53.167
いってるじゃないか…
76
00:08:53.208 --> 00:08:55.500
そこにあるって、イーモ…
77
00:08:57.333 --> 00:09:00.000
…あるって
+356
Ver Arquivo
@@ -0,0 +1,356 @@
WEBVTT
1
00:00:14.958 --> 00:00:17.833
Слева мы видим...
2
00:00:18.458 --> 00:00:20.208
справа мы видим...
3
00:00:20.333 --> 00:00:21.875
...голово-клацов.
4
00:00:22.000 --> 00:00:24.583
всё в порядке.
в полном порядке.
5
00:00:26.333 --> 00:00:27.333
Имо?
6
00:00:28.833 --> 00:00:30.250
Осторожно!
7
00:00:47.125 --> 00:00:48.250
Ты не ранен?
8
00:00:51.875 --> 00:00:53.875
Вроде нет...
а ты?
9
00:00:55.583 --> 00:00:57.125
Я в порядке.
10
00:00:57.542 --> 00:01:01.625
Вставай.
Имо. здесь не безопасно.
11
00:01:02.208 --> 00:01:03.625
Пойдём.
12
00:01:03.708 --> 00:01:05.708
Что дальше?
13
00:01:05.833 --> 00:01:07.833
Ты увидишь!
14
00:01:08.000 --> 00:01:08.833
Ты увидишь...
15
00:01:16.167 --> 00:01:18.375
Имо. сюда.
16
00:01:34.917 --> 00:01:35.750
За мной!
17
00:02:11.542 --> 00:02:12.750
Имо. быстрее!
18
00:02:48.375 --> 00:02:50.083
Ты не обращаешь внимания!
19
00:02:50.708 --> 00:02:54.500
Я только хотел ответить на ...
...звонок.
20
00:02:55.000 --> 00:02:58.208
Имо. смотри.
то есть слушай...
21
00:02:59.708 --> 00:03:02.292
Ты должен учиться слушать.
22
00:03:03.250 --> 00:03:05.333
Это не какая-нибудь игра.
23
00:03:06.000 --> 00:03:08.833
Ты. вернее мы. легко можем погибнуть здесь.
24
00:03:10.000 --> 00:03:11.167
Слушай...
25
00:03:11.667 --> 00:03:14.125
слушай звуки машины.
26
00:03:18.333 --> 00:03:20.417
Слушай своё дыхание.
27
00:04:27.208 --> 00:04:29.250
И не надоест тебе это?
28
00:04:29.542 --> 00:04:31.083
Надоест?!?
29
00:04:31.708 --> 00:04:34.625
Имо! Машина -
она как часовой механизм.
30
00:04:35.500 --> 00:04:37.667
Одно движение не туда...
31
00:04:37.792 --> 00:04:39.750
...и тебя размелют в месиво!
32
00:04:41.042 --> 00:04:42.375
А разве это не -
33
00:04:42.417 --> 00:04:46.500
Месиво. Имо!
ты этого хочешь? месиво?
34
00:04:48.083 --> 00:04:50.000
Имо. твоя цель в жизни?
35
00:04:50.542 --> 00:04:52.250
Месиво!
36
00:05:41.792 --> 00:05:43.458
Имо. закрой глаза.
37
00:05:44.875 --> 00:05:46.542
Зачем?
- Ну же!
38
00:05:51.500 --> 00:05:52.333
Ладно.
39
00:05:53.708 --> 00:05:56.042
Хорошо.
40
00:05:59.500 --> 00:06:02.750
Что ты видишь слева от себя. Имо?
41
00:06:04.417 --> 00:06:06.000
Ничего.
- Точно?
42
00:06:06.333 --> 00:06:07.875
да. совсем ничего.
43
00:06:08.042 --> 00:06:12.708
А справа от себя.
что ты видишь справа от себя. Имо?
44
00:06:13.833 --> 00:06:16.875
Да то же Пруг. в точности то же...
45
00:06:17.042 --> 00:06:18.500
Ничего!
46
00:06:18.667 --> 00:06:19.500
Прекрасно...
47
00:06:40.583 --> 00:06:42.917
Прислушайся. Пруг! Ты слышишь это?
48
00:06:43.583 --> 00:06:45.042
Может. мы пойдём туда?
49
00:06:45.208 --> 00:06:48.042
Туда?
Это не безопасно. Имо.
50
00:06:49.875 --> 00:06:52.500
Но...
- Поверь мне. это так.
51
00:06:53.292 --> 00:06:54.750
Может я бы ...
52
00:06:54.792 --> 00:06:56.333
Нет.
53
00:06:57.625 --> 00:06:59.583
- Но...
- НЕТ!
54
00:06:59.708 --> 00:07:00.833
Нет!
55
00:07:00.833 --> 00:07:03.708
Ещё вопросы. Имо?
56
00:07:04.250 --> 00:07:05.875
Нет.
57
00:07:09.458 --> 00:07:10.792
Имо?
58
00:07:11.833 --> 00:07:13.500
Имо. почему...
59
00:07:13.542 --> 00:07:14.458
Имо...
60
00:07:14.500 --> 00:07:18.500
...почему? почему ты не видишь
красоты этого места?
61
00:07:18.792 --> 00:07:20.708
То как оно работает.
62
00:07:20.833 --> 00:07:24.000
Как совершенно оно.
63
00:07:24.083 --> 00:07:27.417
Нет. Пруг. я не вижу.
64
00:07:27.500 --> 00:07:30.333
Я не вижу. потому что здесь ничего нет.
65
00:07:31.375 --> 00:07:35.333
И почему я должен доверять свою жизнь
чему-то. чего здесь нет?
66
00:07:35.542 --> 00:07:37.125
это ты мне можешь сказать?
67
00:07:37.500 --> 00:07:39.167
Ответь мне!
68
00:07:43.208 --> 00:07:44.542
Пруг...
69
00:07:45.500 --> 00:07:47.333
Ты просто больной!
70
00:07:47.375 --> 00:07:48.500
Отстань от меня.
71
00:07:48.625 --> 00:07:49.917
Имо...
72
00:07:52.542 --> 00:07:55.083
Нет! Имо! Это ловушка!
73
00:07:55.792 --> 00:07:57.167
Это ловушка!
74
00:07:57.208 --> 00:08:01.708
Слева от себя вы можете увидеть
Висящие сады Семирамиды!
75
00:08:02.250 --> 00:08:04.292
Сойдёт за ловушку?
76
00:08:05.458 --> 00:08:07.125
Нет. Имо.
77
00:08:09.417 --> 00:08:12.750
Справа от себя вы можете увидеть...
...угадай кого...
78
00:08:13.000 --> 00:08:14.708
...Колосса Родосского!
79
00:08:15.500 --> 00:08:16.625
Нет!
80
00:08:16.667 --> 00:08:21.125
Колосс Родосский!
И он здесь специально для тебя. Пруг.
81
00:08:21.167 --> 00:08:22.208
Специально для тебя...
82
00:08:51.333 --> 00:08:53.167
Она здесь есть!
83
00:08:53.208 --> 00:08:55.500
Говорю тебе.
Имо...
84
00:08:57.333 --> 00:09:00.000
...она есть... есть...
+349
Ver Arquivo
@@ -0,0 +1,349 @@
WEBVTT
1
00:00:15.042 --> 00:00:18.250
Till vänster kan vi se...
Ser vi...
2
00:00:18.708 --> 00:00:20.333
Till höger ser vi...
3
00:00:20.417 --> 00:00:21.958
...huvudkaparna.
4
00:00:22.000 --> 00:00:24.792
Allt är säkert.
alldeles ofarligt.
5
00:00:24.917 --> 00:00:26.833
Emo?
6
00:00:28.750 --> 00:00:30.167
Se upp!
7
00:00:46.708 --> 00:00:48.750
Är du skadad?
8
00:00:51.875 --> 00:00:54.458
Jag tror inte det...
Är du?
9
00:00:55.292 --> 00:00:57.333
Jag är ok.
10
00:00:57.542 --> 00:01:01.625
Res dig upp Emo.
Det är inte säkert här.
11
00:01:02.208 --> 00:01:03.625
Kom så går vi.
12
00:01:03.708 --> 00:01:05.708
Vad nu då?
13
00:01:05.833 --> 00:01:07.833
Du får se...
14
00:01:08.042 --> 00:01:10.417
Du får se.
15
00:01:15.958 --> 00:01:18.375
Emo. den här vägen.
16
00:01:34.417 --> 00:01:36.750
Följ efter mig!
17
00:02:11.250 --> 00:02:13.250
Skynda dig. Emo!
18
00:02:48.375 --> 00:02:50.583
Du är inte uppmärksam!
19
00:02:50.708 --> 00:02:54.500
Jag vill bara svara...
... i telefonen.
20
00:02:54.500 --> 00:02:58.208
Emo. se här...
Lyssna menar jag.
21
00:02:59.708 --> 00:03:02.292
Du måste lära dig att lyssna.
22
00:03:03.292 --> 00:03:05.208
Det här är ingen lek.
23
00:03:05.250 --> 00:03:08.917
Du... Jag menar vi.
vi skulle kunna dö här ute.
24
00:03:09.917 --> 00:03:11.417
Lyssna...
25
00:03:11.708 --> 00:03:14.833
Lyssna på ljuden från maskinen.
26
00:03:18.125 --> 00:03:21.417
Lyssna på dina andetag.
27
00:04:26.625 --> 00:04:29.250
Tröttnar du aldrig på det här?
28
00:04:29.542 --> 00:04:31.083
Tröttnar!?
29
00:04:31.208 --> 00:04:33.458
Emo. maskinen är som...
30
00:04:33.458 --> 00:04:35.333
Som ett urverk.
31
00:04:35.417 --> 00:04:37.167
Ett felsteg...
32
00:04:37.208 --> 00:04:39.750
...och du blir krossad.
33
00:04:41.042 --> 00:04:42.292
Men är det inte -
34
00:04:42.292 --> 00:04:47.000
Krossad. Emo!
Är det vad du vill bli? Krossad till mos?
35
00:04:47.500 --> 00:04:50.542
Emo. är det ditt mål i livet?
36
00:04:50.667 --> 00:04:53.250
Att bli mos!?
37
00:05:41.375 --> 00:05:43.458
Emo. blunda.
38
00:05:44.375 --> 00:05:46.542
Varför då?
- Blunda!
39
00:05:51.292 --> 00:05:55.042
Ok.
- Bra.
40
00:05:59.500 --> 00:06:02.750
Vad ser du till vänster om dig Emo?
41
00:06:04.125 --> 00:06:06.292
Ingenting.
- Säker?
42
00:06:06.333 --> 00:06:07.958
Ingenting alls.
43
00:06:08.042 --> 00:06:12.625
Jaså. och till höger om dig...
Vad ser du där. Emo?
44
00:06:13.750 --> 00:06:15.583
Samma där Proog...
45
00:06:15.583 --> 00:06:18.083
Exakt samma där. ingenting!
46
00:06:18.083 --> 00:06:19.667
Perfekt.
47
00:06:40.500 --> 00:06:42.917
Lyssna Proog! Hör du?
48
00:06:43.500 --> 00:06:45.125
Kan vi gå dit?
49
00:06:45.208 --> 00:06:48.125
Gå dit?
Det är inte tryggt.
50
00:06:49.583 --> 00:06:52.583
Men. men...
- Tro mig. det inte säkert.
51
00:06:53.000 --> 00:06:54.292
Men kanske om jag -
52
00:06:54.292 --> 00:06:56.333
Nej.
53
00:06:57.208 --> 00:07:00.167
Men -
- Nej. NEJ!
54
00:07:00.917 --> 00:07:03.792
Några fler frågor Emo?
55
00:07:04.250 --> 00:07:05.875
Nej.
56
00:07:09.542 --> 00:07:11.375
Emo?
- Ja?
57
00:07:11.542 --> 00:07:15.667
Emo. varför...
58
00:07:15.792 --> 00:07:18.583
Varför kan du inte se skönheten i det här?
59
00:07:18.792 --> 00:07:21.708
Hur det fungerar.
60
00:07:21.833 --> 00:07:24.000
Hur perfekt det är.
61
00:07:24.083 --> 00:07:27.333
Nej Proog. jag kan inte se det.
62
00:07:27.333 --> 00:07:30.333
Jag ser det inte. för det finns inget där.
63
00:07:31.292 --> 00:07:35.333
Och varför skulle jag lägga mitt liv
i händerna på något som inte finns?
64
00:07:35.333 --> 00:07:37.083
Kan du berätta det för mig?
- Emo...
65
00:07:37.083 --> 00:07:39.167
Svara mig!
66
00:07:43.500 --> 00:07:45.208
Proog...
67
00:07:45.208 --> 00:07:47.083
Du är inte frisk!
68
00:07:47.167 --> 00:07:49.292
Håll dig borta från mig!
69
00:07:52.292 --> 00:07:55.083
Nej! Emo!
Det är en fälla!
70
00:07:55.375 --> 00:07:57.208
Heh. det är en fälla.
71
00:07:57.208 --> 00:08:01.708
På vänster sida ser vi...
Babylons hängande trädgårdar!
72
00:08:01.958 --> 00:08:04.000
Vad sägs om den fällan?
73
00:08:05.458 --> 00:08:07.333
Nej. Emo.
74
00:08:08.917 --> 00:08:12.667
Till höger ser vi...
Gissa!
75
00:08:12.750 --> 00:08:15.125
Rhodos koloss!
76
00:08:15.375 --> 00:08:16.500
Nej!
77
00:08:16.500 --> 00:08:20.250
Kolossen på Rhodos!
Och den är här för din skull. Proog...
78
00:08:20.250 --> 00:08:23.250
Bara för din skull.
79
00:08:50.917 --> 00:08:53.250
Den är där...
80
00:08:53.625 --> 00:08:56.417
Tro mig.
Emo...
81
00:08:57.000 --> 00:09:00.000
Det är den.
Det är den...
+44
Ver Arquivo
@@ -0,0 +1,44 @@
WEBVTT
NOTE Created by Owen Edwards 2015. http://creativecommons.org/licenses/by/2.5/
NOTE Based on 'finalbreakdown.rtf', part of the prepoduction notes, which are:
NOTE (c) Copyright 2006, Blender Foundation /
NOTE Netherlands Media Art Institute /
NOTE www.elephantsdream.org
1
00:00:00.000 --> 00:00:27.500
Prologue
2
00:00:27.500 --> 00:01:10.000
Switchboard trap
3
00:01:10.000 --> 00:03:25.000
Telephone/Lecture
4
00:03:25.000 --> 00:04:52.000
Typewriter
5
00:04:52.000 --> 00:06:19.500
Proog shows Emo stuff
6
00:06:19.500 --> 00:07:09.000
Which way
7
00:07:09.000 --> 00:07:45.000
Emo flips out
8
00:07:45.000 --> 00:09:25.000
Emo creates
9
00:09:25.000 --> 00:10:53.000
Closing credits
@@ -0,0 +1,280 @@
WEBVTT
License: CC BY 4.0 http://creativecommons.org/licenses/by/4.0/
Author: Silvia Pfeiffer
1
00:00:00.000 --> 00:00:05.000
The orange open movie project presents
2
00:00:05.010 --> 00:00:12.000
Introductory titles are showing on the background of a water pool with fishes swimming and mechanical objects lying on a stone floor.
3
00:00:12.010 --> 00:00:14.800
elephants dream
4
00:00:26.100 --> 00:00:28.206
Two people stand on a small bridge.
5
00:00:30.010 --> 00:00:40.000
The old man, Proog, shoves the younger and less experienced Emo on the ground to save him from being mowed down by a barrage of jack plugs that whir back and forth between the two massive switch-board-like walls.
6
00:00:40.000 --> 00:00:47.000
The plugs are oblivious of the two, endlessly channeling streams of bizarre sounds and data.
7
00:00:48.494 --> 00:00:51.994
Emo sits on the bridge and checks his limbs.
8
00:01:09.150 --> 00:01:16.030
After the squealing plugs move on, Proog makes sure that Emo is unharmed and urges him onwards through a crack in one of the plug-walls.
9
00:01:18.050 --> 00:01:24.000
They walk through the narrow hall into a massive room that fades away into blackness on all sides.
10
00:01:24.050 --> 00:01:34.200
Only one path is visible, suspended in mid-air that runs between thousands of dangling electric cables on which sit crowds of robin-like robotic birds.
11
00:01:36.000 --> 00:01:40.000
As Proog and Emo enter the room, the birds begin to wake up and notice them.
12
00:01:42.000 --> 00:01:50.000
Realizing the danger, Proog grabs Emo by the arm.
13
00:01:50.050 --> 00:02:00.000
They run along the increasingly bizarre path as the birds begin to swarm.
14
00:02:00.050 --> 00:02:11.000
All sound is blocked out by the birds which are making the same noises as the jack-plugs, garbled screaming and obscure sentences and static.
15
00:02:12.600 --> 00:02:17.000
The path dead-ends, stopping in the middle of no-where above the infinite drop.
16
00:02:17.600 --> 00:02:22.000
Proog turns around as the birds reach them and begin to dive-bomb at them.
17
00:02:22.600 --> 00:02:28.000
At the last moment, Proog takes out an old candlestick phone and the birds dive into the speaker piece.
18
00:02:28.600 --> 00:02:31.000
The screen cuts to black.
19
00:02:31.600 --> 00:02:38.000
In the next scene, Proog stands at one end of a room, suspiciously watching what is probably the same candlestick phone, which is ringing.
20
00:02:38.500 --> 00:02:41.000
Emo watches from the other side of the room.
21
00:02:41.500 --> 00:02:43.000
The phone continues to ring.
22
00:02:43.500 --> 00:02:48.000
After a while Emo approaches it to answer it, but Proog slaps his hand away.
23
00:02:57.972 --> 00:02:59.100
Proog takes the ear-piece off the hook.
24
00:03:13.500 --> 00:03:18.054
The phone speaker revealed a mass of clawed, fleshy polyps which scream and gibber obscenely.
25
00:03:25.000 --> 00:03:33.000
There is a solemn silence as Emo looks around the room and the technical objects therein.
26
00:03:38.000 --> 00:03:44.000
Emo laughs disbelievingly and Proog walks away.
27
00:03:46.000 --> 00:03:54.000
In the next scene, the two enter another massive black room.
28
00:03:54.500 --> 00:04:04.000
There is no path, the entry platform is the only structure that seems to be there except for another exit, lit distantly at the far side.
29
00:04:04.500 --> 00:04:14.000
Proog takes a step forward into the void, and his feet are suddenly caught by giant typewriter arms that rocket up out of the blackness to catch his feet as he dances across mid-air.
30
00:04:14.500 --> 00:04:22.000
Emo follows Proog with somewhat less enthusiasm as the older man leads the way.
31
00:04:52.000 --> 00:04:58.000
They reach the end of the room and go through a hall into a small compartment.
32
00:05:02.000 --> 00:05:06.000
Proog presses a button, and the door shuts.
33
00:05:06.500 --> 00:05:09.000
It is an elevator.
34
00:05:09.500 --> 00:05:24.000
The elevator lurches suddenly as it is grabbed by a giant mechanical arm and thrown upwards, rushing up through an ever-widening tunnel.
35
00:05:26.500 --> 00:05:32.000
When it begins to slow down, another arm grabs the capsule and throws it even further up.
36
00:05:32.500 --> 00:05:40.000
As it moves up, the walls unlock and fall away, leaving only the floor with the two on it, rushing higher and higher.
37
00:05:54.500 --> 00:05:59.000
They exit the tunnel into a black sky and the platform reaches the peak of its arc.
38
00:06:19.500 --> 00:06:26.000
The elevator begins to drop down another shaft, coming to rest as it slams into the floor of another room and bringing the two to a level stop.
39
00:06:26.500 --> 00:06:28.000
A camera flashes.
40
00:06:28.010 --> 00:06:34.000
They are in a large, dingy room filled with strange, generator-like devices and dotted with boxy holographic projectors.
41
00:06:34.500 --> 00:06:38.000
One of them is projecting a portion of wall with a door in it right beside them.
42
00:06:38.500 --> 00:06:40.000
The door seems harmless enough.
43
00:06:42.800 --> 00:06:45.100
From behind the door comes light music.
44
00:06:56.000 --> 00:07:00.100
Proog presses a button on his cane, which changes the holograph to another wall.
45
00:07:05.100 --> 00:07:11.000
Proog finishes the wall, and boxes them into a Safe Room, out of the view of anything outside.
46
00:07:39.000 --> 00:07:42.500
Proog slaps him, trying to bring him to his senses.
47
00:07:45.000 --> 00:07:52.000
Emo storms away down the length of the room towards a wall he apparently cannot see and the wall begins to move, extending the length of the room.
48
00:08:00.000 --> 00:08:07.000
The walls begin to discolour and mechanical roots start tearing through the walls to his left.
49
00:08:07.010 --> 00:08:09.000
The roots move forwards toward Proog.
50
00:08:22.000 --> 00:08:31.000
The rest of the safety wall crumples away as a pair of massive hands heave out of the ground and begin to attack.
51
00:08:31.010 --> 00:08:37.000
Proog is knocked down by the shockwave, while Emo turns and begins to walk away, waving his finger around his temple in the 'crazy' sign.
52
00:08:37.010 --> 00:08:44.000
In a last effort, Proog extricates himself from the tentacle roots, and cracks Emo over the back of the head with his cane.
53
00:08:44.500 --> 00:08:51.000
As Emo collapses, everything falls away, and Proog and Emo are left in one tiny patch of light in the middle of blackness.
54
00:09:00.000 --> 00:09:20.000
The scene fades to black while panning over a pile of tentacle roots lying on the ground.
55
00:09:26.000 --> 00:09:28.000
Credits begin:
56
00:09:28.500 --> 00:09:35.000
Orange Open Movie Team
Director: Bassum Kurdali
Art Director: Andreas Goralczyk
57
00:09:35.500 --> 00:09:39.000
Music and Sound Design: Jan Morgenstern
58
00:09:39.500 --> 00:09:44.000
Emo: Cas Jansen
Proog: Tygo Gernandt
59
00:09:44.500 --> 00:09:50.000
Screenplay: Pepijn Zwanenberg
Original Concept & Scenario: Andreas Goralczyk, Bassam Kurdali, Ton Roosendaal
60
00:09:50.500 --> 00:10:24.000
More people for
Additional Artwork and Animation
Texture Photography
Software Development
3D Modelling, Animation, Rendering, Compiling Software
Special Thanks to Open Source Projects
Rendering Services Provided
Hardware Sponsored
Casting
Sound FX, Foley, Dialogue Editing, Audio Mix and Post
Voice Recording
HDCam conversion
Netherlands Media Art Institute Staff
Blender Foundation Staff
61
00:10:24.500 --> 00:10:30.000
Many Thanks to our Donation and DVD sponsors
62
00:10:30.500 --> 00:10:47.000
Elephants Dream has been realised with financial support from
The Netherlands Film Fund
Mondriaan Foundation
VSBfonds
Uni-Verse / EU Sixth Framework Programme
63
00:10:47.500 --> 00:10:53.000
Produced By
Ton Roosendaal
Copyright 2006
Netherlands Media Art Institute / Montevideo
Blender Foundation
+42
Ver Arquivo
@@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Video.js Text Descriptions, Chapters &amp; Captions Example</title>
<link href="http://vjs.zencdn.net/5.19/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/ie8/1.1/videojs-ie8.min.js"></script>
<script src="http://vjs.zencdn.net/5.19/video.js"></script>
</head>
<body>
<!-- NOTE: we have to disable native Text Track support for the HTML5 tech,
since even HTML5 video players with native Text Track support
don't currently support 'description' text tracks in any
useful way! Currently this means that iOS will not display
ANY text tracks -->
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="360"
data-setup='{ "html5" : { "nativeTextTracks" : false } }'
poster="http://d2zihajmogu5jn.cloudfront.net/elephantsdream/poster.png">
<source src="//d2zihajmogu5jn.cloudfront.net/elephantsdream/ed_hd.mp4" type="video/mp4">
<source src="//d2zihajmogu5jn.cloudfront.net/elephantsdream/ed_hd.ogg" type="video/ogg">
<track kind="captions" src="captions.en.vtt" srclang="en" label="English" default></track><!-- Tracks need an ending tag thanks to IE9 -->
<track kind="captions" src="captions.sv.vtt" srclang="sv" label="Swedish"></track>
<track kind="captions" src="captions.ru.vtt" srclang="ru" label="Russian"></track>
<track kind="captions" src="captions.ja.vtt" srclang="ja" label="Japanese"></track>
<track kind="captions" src="captions.ar.vtt" srclang="ar" label="Arabic"></track>
<track kind="descriptions" src="descriptions.en.vtt" srclang="en" label="English"></track>
<track kind="chapters" src="chapters.en.vtt" srclang="en" label="English"></track>
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
</body>
</html>
+18
Ver Arquivo
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Index of video.js examples</title>
</head>
<body>
<h1>Index of video.js examples</h1>
<ul>
<li><a href="simple-embed">Video.js HTML5 video player simple example</a></li>
<li><a href="elephantsdream">Elephants Dream video with text descriptions, chapters &amp; captions example</a></li>
</ul>
</body>
</html>
+26
Ver Arquivo
@@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Video.js | HTML5 Video Player</title>
<link href="http://vjs.zencdn.net/5.19/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/ie8/1.1/videojs-ie8.min.js"></script>
<script src="http://vjs.zencdn.net/5.19/video.js"></script>
</head>
<body>
<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png" data-setup="{}">
<source src="http://vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm">
<source src="http://vjs.zencdn.net/v/oceans.ogv" type="video/ogg">
<track kind="captions" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<track kind="subtitles" src="../shared/example-captions.vtt" srclang="en" label="English"></track>
<!-- Tracks need an ending tag thanks to IE9 -->
<p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
</body>
</html>
-47
Ver Arquivo
@@ -1,47 +0,0 @@
---
layout: docs
title: VideoJS Glossary
description: Video.JS Glossary
body_id: glossary
body_class: docs subpage
---
Glossary
========
### DOM (Document Object Model)
The container of elements on the page that must be loaded before you can interact with the elements with through Javascript.
http://en.wikipedia.org/wiki/Document_Object_Model
### Flash Fallback
The Flash video player (SWF) used to play a video when HTML5 isn't supported.
<a name="timerange"></a>
### TimeRange
<a name="html5-video"></a>
### HTML5 Video
HTML is the markup language that makes up every page on the web. The newest version, HTML5, includes specifications for a video tag, that is meant to allow website developers to add a video to a page the same way they would add an image. In order for this to work, web browser developers (Mozilla, Apple, Microsoft, Google, Opera, etc.) have to build the video playback functionality into their browsers. The W3C has created directions on how video should work in browsers, and its up to browser developers to follow those directions, so that video works the same across all browsers. This doesnt always happen thanks to technology, legal, and financial choices made by browser developers, but so far no ones varying too far from the specifications. However the specifications are still being changed and refined, so browsers developers have to keep up with that as well.
Playing video in a web page may not seem so special since you can already view video on a web page through plugins like Flash Player, Quicktime, Silverlight, and RealPlayer, however this is a big step forward for standardizing video playback across web browsers and devices. The goal is that in the future, developers will only need to use one method for embedding a video, thats based on open standards (not controlled by one company), and it will work everywhere.
A prime example of this is the iPhone and iPad. Apple has decided not to support Flash on their mobile devices, but they do support HTML5 video. Since Flash is currently the most common way video is added to web pages, most web video (aside from YouTube who has a special relationship with Apple) cant be viewed on the iPhone or iPad. These devices are very popular, so many web sites are switching to hybrid HTML5/Flash player setups (like VideoJS).
<a name="video-tag"></a>
### Video Tag
There are a number of great resources that will give you an introduction to the video tag an how it is used including:
- [Dive into HTML5](http://diveintohtml5.org/video.html)
- Lynda.com's ['HTML5 Video and Audio in Depth'](http://www.lynda.com/HTML-5-tutorials/HTML5-Video-and-Audio-in-Depth/80781-2.html) video tutorials created by yours truly.
An if you really want to dig in, you can read the (W3C Spec)[http://www.w3.org/TR/html5/video.html]. (Warning - not for the faint of heart)
<a name="skin"></a>
### Skin
"Skin" refers to the design of the player's controls, also sometimes called the chrome. With VideoJS, new skins can be built simply by creating a new stylesheet.
<a name="cdn"></a>
### Content Delivery Network (CDN)
A network of servers around the world that host copies of a file. When your browser requests one of these files, the CDN automatically determines which server is closest to your location and delivers the file from there. This drastically increases delivery time, especially internationally.
+161
Ver Arquivo
@@ -0,0 +1,161 @@
# Audio Tracks
Audio tracks are a feature of HTML5 video for providing alternate audio track selections
to the user, so that a track other than the main track can be played. Video.js offers a
cross-browser implementation of audio tracks.
## Table of Contents
* [Caveats](#caveats)
* [Working with Audio Tracks](#working-with-audio-tracks)
* [Add an Audio Track to the Player](#add-an-audio-track-to-the-player)
* [Listen for a Video Track Becoming Enabled](#listen-for-a-video-track-becoming-enabled)
* [Removing an Audio Track from the Player](#removing-an-audio-track-from-the-player)
* [API](#api)
* [videojs.AudioTrack](#videojsaudiotrack)
* [id](#id)
* [kind](#kind)
* [label](#label)
* [language](#language)
* [enabled](#enabled)
## Caveats
* It is not possible to add audio tracks through HTML like you can with text tracks.
They must be added programmatically.
* Video.js only stores track representations. Switching audio tracks for playback is
_not handled by Video.js_ and must be handled elsewhere - for example,
[videojs-contrib-hls][hls] handles switching
audio tracks to support track selection through the UI.
## Working with Audio Tracks
### Add an Audio Track to the Player
```js
// Create a player.
var player = videojs('my-player');
// Create a track object.
var track = new videojs.AudioTrack({
id: 'my-spanish-audio-track',
kind: 'translation',
label: 'Spanish',
language: 'es'
});
// Add the track to the player's audio track list.
player.audioTracks().addTrack(track);
```
### Listen for a Video Track Becoming Enabled
When a track is enabled or disabled on an `AudioTrackList`, a `change` event will be
fired. You can listen for that event and do something with it.
> NOTE: The initial `AudioTrack` selection (usually the main track that is selected)
> should not fire a `change` event.
```js
// Get the current player's AudioTrackList object.
var audioTrackList = player.audioTracks();
// Listen to the "change" event.
audioTrackList.addEventListener('change', function() {
// Log the currently enabled AudioTrack label.
for (var i = 0; i < audioTrackList.length; i++) {
var track = audioTrackList[i];
if (track.enabled) {
videojs.log(track.label);
return;
}
}
});
```
### Removing an Audio Track from the Player
Assuming a player already exists and has an audio track that you want to remove, you
might do something like the following:
```js
// Get the track we created in an earlier example.
var track = player.audioTracks().getTrackById('my-spanish-audio-track');
// Remove it from the audio track list.
player.audioTracks().removeTrack(track);
```
## API
For more complete information, refer to the
[Video.js API docs](http://docs.videojs.com/), specifically:
* `Player#audioTracks`
* `AudioTrackList`
* `AudioTrack`
### `videojs.AudioTrack`
This class is based on [the `AudioTrack` standard][spec-audiotrack] and can be used to
create new audio track objects.
Each property below is available as an option to the `AudioTrack` constructor.
#### `id`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-id)
A unique identifier for this track. Video.js will generate one if not given.
#### `kind`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind)
Video.js supports standard `kind` values for `AudioTracks`:
* `"alternative"`: A possible alternative to the main track.
* `"descriptions"`: An audio description of a video track.
* `"main"`: The primary audio track for this video.
* `"main-desc"`: The primary audio track, mixed with audio descriptions.
* `"translation"`: A translated version of the main audio track.
* `"commentary"`: Commentary on the primary audio track, e.g. a director's commentary.
* `""` (default): No explicit kind, or the kind given by the track's metadata is not
recognized by the user agent.
#### `label`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-label)
The label for the track that will be shown to the user. For example, in a menu that lists
the different languages available as alternate audio tracks.
#### `language`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-language)
The valid [BCP 47](https://tools.ietf.org/html/bcp47) code for the language of the audio
track, e.g. `"en"` for English or `"es"` for Spanish.
For supported language translations, please see the [languages folder (/lang)](https://github.com/videojs/video.js/tree/master/lang)
located in the Video.js root and refer to the [languages guide][languages-guide] for more
information on languages in Video.js.
#### `enabled`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-enabled)
Whether or not this track should be playing.
In Video.js, we only allow one track to be enabled at a time; so, if you enable more
than one, the last one to be enabled will end up being the only one. While the spec
allows for more than one track to be enabled, Safari and most implementations only allow
one audio track to be enabled at a time.
[languages-guide]: /docs/guides/languages.md
[spec-audiotrack]: https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack
[hls]: http://github.com/videojs/videojs-contrib-hls
+340
Ver Arquivo
@@ -0,0 +1,340 @@
# Components
The architecture of the Video.js player is centered around components. The `Player` class and all classes representing player controls and other UI elements inherit from the `Component` class. This architecture makes it easy to construct the user interface of the Video.js player in a tree-like structure that mirrors the DOM.
## Table of Contents
* [What is a Component?](#what-is-a-component)
* [Creating a Component](#creating-a-component)
* [Component Children](#component-children)
* [Basic Example](#basic-example)
* [Using Options](#using-options)
* [Event Listening](#event-listening)
* [Using on](#using-on)
* [Using off](#using-off)
* [Using one](#using-one)
* [Using trigger](#using-trigger)
* [Default Component Tree](#default-component-tree)
* [Specific Component Details](#specific-component-details)
* [Volume Panel](#volume-panel)
* [Text Track Settings](#text-track-settings)
## What is a Component?
A component is a JavaScript object that has the following features:
* An associated DOM element, in almost all cases.
* An association to a `Player` object.
* The ability to manage any number of child components.
* The ability to listen for and trigger events.
* A lifecycle of initialization and disposal.
For more specifics on the programmatic interface of a component, see [the component API docs][api].
## Creating a Component
Video.js components can be inherited and registered with Video.js to add new features and UI to the player.
For a working example, [we have a JSBin](http://jsbin.com/vobacas/edit?html,css,js,output) demonstrating the creation of a component for displaying a title across the top of the player.
In addition, there are a couple methods worth recognizing:
* `videojs.getComponent(String name)`: Retrieves component constructors from Video.js.
* `videojs.registerComponent(String name, Function Comp)`: Registers component constructors with Video.js.
* `videojs.extend(Function component, Object properties)`: Provides prototype inheritance. Can be used to extend a component's constructor, returning a new constructor with the given properties.
Creation:
```js
// adding a button to the player
var player = videojs('some-video-id');
var Component = videojs.getComponent('Component');
var button = new Component(player);
console.log(button.el());
```
The above code will output
```html
<div class="video-js">
<div class="vjs-button">Button</div>
</div>
```
Adding the new button to the player
```js
// adding a button to the player
var player = videojs('some-video-id');
var button = player.addChild('button');
console.log(button.el());
// will have the same html result as the previous example
```
## Component Children
Again, refer to [the component API docs][api] for complete details on methods available for managing component structures.
### Basic Example
When child component is added to a parent component, Video.js inserts the element of the child into the element of the parent. For example, adding a component like this:
```js
// Add a "BigPlayButton" component to the player. Its element will be appended to the player's element.
player.addChild('BigPlayButton');
```
Results in a DOM that looks like this:
```html
<!-- Player Element -->
<div class="video-js">
<!-- BigPlayButton Element -->
<div class="vjs-big-play-button"></div>
</div>
```
Conversely, removing child components will remove the child component's element from the DOM:
```js
player.removeChild('BigPlayButton');
```
Results in a DOM that looks like this:
```html
<!-- Player Element -->
<div class="video-js">
</div>
```
### Using Options
Pass in options for child constructors and options for children of the child.
```js
var player = videojs('some-vid-id');
var Component = videojs.getComponent('Component');
var myComponent = new Component(player);
var myButton = myComponent.addChild('MyButton', {
text: 'Press Me',
buttonChildExample: {
buttonChildOption: true
}
});
```
Children can also be added via options when a component is initialized.
> Note: Include a 'name' key which will be used if two child components of the same
> type that need different options.
```js
// MyComponent is from the above example
var myComp = new MyComponent(player, {
children: ['button', {
name: 'button',
someOtherOption: true
}, {
name: 'button',
someOtherOption: false
}]
});
```
## Event Listening
### Using `on`
```js
var player = videojs('some-player-id');
var Component = videojs.getComponent('Component');
var myComponent = new Component(player);
var myFunc = function() {
var myComponent = this;
console.log('myFunc called');
};
myComponent.on('eventType', myFunc);
myComponent.trigger('eventType');
// logs 'myFunc called'
```
The context of `myFunc` will be `myComponent` unless it is bound. You can add
a listener to another element or component.
```js
var otherComponent = new Component(player);
// myComponent/myFunc is from the above example
myComponent.on(otherComponent.el(), 'eventName', myFunc);
myComponent.on(otherComponent, 'eventName', myFunc);
otherComponent.trigger('eventName');
// logs 'myFunc called' twice
```
### Using `off`
```js
var player = videojs('some-player-id');
var Component = videojs.getComponent('Component');
var myComponent = new Component(player);
var myFunc = function() {
var myComponent = this;
console.log('myFunc called');
};
myComponent.on('eventType', myFunc);
myComponent.trigger('eventType');
// logs 'myFunc called'
myComponent.off('eventType', myFunc);
myComponent.trigger('eventType');
// does nothing
```
If myFunc gets excluded, _all_ listeners for the event type will get removed. If
eventType gets excluded, _all_ listeners will get removed from the component.
You can use `off` to remove listeners that get added to other elements or
components using:
`myComponent.on(otherComponent...`
In this case both the event type and listener function are **REQUIRED**.
```js
var otherComponent = new Component(player);
// myComponent/myFunc is from the above example
myComponent.on(otherComponent.el(), 'eventName', myFunc);
myComponent.on(otherComponent, 'eventName', myFunc);
otherComponent.trigger('eventName');
// logs 'myFunc called' twice
myComponent.off(ootherComponent.el(), 'eventName', myFunc);
myComponent.off(otherComponent, 'eventName', myFunc);
otherComponent.trigger('eventName');
// does nothing
```
### Using `one`
```js
var player = videojs('some-player-id');
var Component = videojs.getComponent('Component');
var myComponent = new Component(player);
var myFunc = function() {
var myComponent = this;
console.log('myFunc called');
};
myComponent.one('eventName', myFunc);
myComponent.trigger('eventName');
// logs 'myFunc called'
myComponent.trigger('eventName');
// does nothing
```
You can also add a listener to another element or component that will get
triggered only once.
```js
var otherComponent = new Component(player);
// myComponent/myFunc is from the above example
myComponent.one(otherComponent.el(), 'eventName', myFunc);
myComponent.one(otherComponent, 'eventName', myFunc);
otherComponent.trigger('eventName');
// logs 'myFunc called' twice
otherComponent.trigger('eventName');
// does nothing
```
### Using `trigger`
```js
var player = videojs('some-player-id');
var Component = videojs.getComponent('Component');
var myComponent = new Component(player);
var myFunc = function(data) {
var myComponent = this;
console.log('myFunc called');
console.log(data);
};
myComponent.one('eventName', myFunc);
myComponent.trigger('eventName');
// logs 'myFunc called' and 'undefined'
myComponent.trigger({'type':'eventName'});
// logs 'myFunc called' and 'undefined'
myComponent.trigger('eventName', {data: 'some data'});
// logs 'myFunc called' and "{data: 'some data'}"
myComponent.trigger({'type':'eventName'}, {data: 'some data'});
// logs 'myFunc called' and "{data: 'some data'}"
```
## Default Component Tree
The default component structure of the Video.js player looks something like this:
```tree
Player
├── MediaLoader (has no DOM element)
├── PosterImage
├── TextTrackDisplay
├── LoadingSpinner
├── BigPlayButton
├─┬ ControlBar
│ ├── PlayToggle
│ ├── VolumePanel
│ ├── CurrentTimeDisplay (hidden by default)
│ ├── TimeDivider (hidden by default)
│ ├── DurationDisplay (hidden by default)
│ ├─┬ ProgressControl (hidden during live playback)
│ │ └─┬ SeekBar
│ │ ├── LoadProgressBar
│ │ ├── MouseTimeDisplay
│ │ └── PlayProgressBar
│ ├── LiveDisplay (hidden during VOD playback)
│ ├── RemainingTimeDisplay
│ ├── CustomControlSpacer (has no UI)
│ ├── PlaybackRateMenuButton (hidden, unless playback tech supports rate changes)
│ ├── ChaptersButton (hidden, unless there are relevant tracks)
│ ├── DescriptionsButton (hidden, unless there are relevant tracks)
│ ├── SubtitlesButton (hidden, unless there are relevant tracks)
│ ├── CaptionsButton (hidden, unless there are relevant tracks)
│ ├── AudioTrackButton (hidden, unless there are relevant tracks)
│ └── FullscreenToggle
├── ErrorDisplay (hidden, until there is an error)
└── TextTrackSettings
```
## Specific Component Details
### Volume Panel
The `VolumePanel` includes the `MuteToggle` and the `VolumeControl` Components, which will be hidden if volume changes are not supported. There is one important option for the `VolumePanel` which can make your `VolumeControl` appear vertically over the `MuteToggle`. This can be set by passing `VolumePanel` `{inline: false}` as the default behavior is a horizontal `VolumeControl` with `{inline: true}`.
Example of a vertical `VolumeControl`
```js
let player = videojs('myplayer', {
controlBar: {
volumePanel: {
inline: false
}
}
});
```
### Text Track Settings
The text track settings component is only available when using emulated text tracks.
[api]: http://docs.videojs.com/Component.html
+112
Ver Arquivo
@@ -0,0 +1,112 @@
# Debugging
## Table of Contents
* [Logging](#logging)
* [API Overview](#api-overview)
* [Log Safely](#log-safely)
* [Log Objects Usefully](#log-objects-usefully)
* [Log Levels](#log-levels)
* [Available Log Levels](#available-log-levels)
* [History](#history)
## Logging
Video.js includes `videojs.log`, a lightweight wrapper around a subset of [the `console` API][console]. The available methods are `videojs.log`, `videojs.log.warn`, and `videojs.log.error`.
### API Overview
Most of these methods should be fairly self-explanatory, but for complete details, see [the API docs][api].
| Method | Alias Of | Matching Level(s) |
| ------------------------------- | --------------- | ----------------- |
| `videojs.log()` | `console.log` | all |
| `videojs.log.warn()` | `console.warn` | all, warn |
| `videojs.log.error()` | `console.error` | all, warn, error |
| `videojs.log.level()` | n/a | n/a |
| `videojs.log.history()` | n/a | n/a |
| `videojs.log.history.clear()` | n/a | n/a |
| `videojs.log.history.disable()` | n/a | n/a |
| `videojs.log.history.enable()` | n/a | n/a |
For descriptions of these features, please refer to the sections below.
### Log Safely
Unlike the `console`, it's safe to leave `videojs.log` calls in your code. They won't throw errors when the `console` doesn't exist.
### Log Objects Usefully
Similar to the `console`, any number of mixed-type values can be passed to `videojs.log` methods:
```js
videojs.log('this is a string', {butThis: 'is an object'});
```
However, certain browser consoles (namely, IE10 and lower) do not support non-string values. Video.js improves on this situation by passing objects through `JSON.stringify` before logging them in IE10 and below. In other words, instead of the above producing this:
```txt
VIDEOJS: this is a string [object Object]
```
it will produce this:
```txt
VIDEOJS: this is a string {"butThis": "is an object"}
```
### Log Levels
Unlike the `console`, `videojs.log` includes the concept of logging levels. These levels toggle logging methods on or off.
Levels are exposed through the `videojs.log.level` method. This method acts as both a getter and setter for the current logging level. With no arguments, it returns the current logging level:
```js
videojs.log.level(); // "all"
```
By passing a string, the logging level can be changed to one of the available logging levels:
```js
videojs.log.level('error'); // show only error messages and suppress others
videojs.log('foo'); // does nothing
videojs.log.warn('foo'); // does nothing
videojs.log.error('foo'); // logs "foo" as an error
```
### Available Log Levels
* **all** (default): enables all logging methods
* **error**: only show `log.error` messages
* **off**: disable all logging methods
* **warn**: only show `log.warn` _and_ `log.error` messages
### History
> **Note:** In Video.js 5, `videojs.log.history` was an array. As of Video.js 6, it is a function which returns an array. This change was made to provide a richer, safer logging history API.
By default, the `videojs.log` module tracks a history of _everything_ passed to it regardless of logging level:
```js
videojs.log.history(); // an array of everything that's been logged up to now
```
This will work even when logging is set to **off**.
This can be useful, but it can also be a source of memory leaks. For example, logged objects will be retained in history even if references are removed everywhere else!
To avoid this problem, history can be disabled or enabled via method calls (using the `disable` and `enable` methods respectively). Disabling history is as easy as:
```js
videojs.log.history.disable();
```
Finally, the history (if enabled) can be cleared at any time via:
```js
videojs.log.history.clear();
```
[api]: http://docs.videojs.com/
[console]: https://developer.mozilla.org/en-US/docs/Web/API/Console
+118
Ver Arquivo
@@ -0,0 +1,118 @@
# Event Target
## Table of Contents
* [Overview](#overview)
* [on() and addEventListener()](#on-and-addeventlistener)
* [off() and removeEventListener()](#off-and-removeeventlistener)
* [one()](#one)
* [trigger() and dispatchEvent()](#trigger-and-dispatchevent)
## Overview
Events in Video.js are setup so that they mimic the DOM API that is used on object, but also have helpful shorthand functions with the same functionality.
## `on()` and `addEventListener()`
This function is used to add an event listener to an EventTarget.
```js
var foo = new EventTarget();
var handleBar = function() {
console.log('bar was triggered');
};
foo.on('bar', handleBar);
// This causes any `event listeners` for the `bar` event to get called
// see {@link EventTarget#trigger} for more information
foo.trigger('bar');
// logs 'bar was triggered'
```
## `off()` and `removeEventListener()`
This function is used to remove an listener function from an EventTarget.
```js
var foo = new EventTarget();
var handleBar = function() {
console.log('bar was triggered');
};
// adds an `event listener` for the `bar` event
// see {@link EventTarget#on} for more info
foo.on('bar', handleBar);
// runs all `event listeners` for the `bar` event
// see {@link EventTarget#trigger} for more info
foo.trigger('bar');
// logs 'bar was triggered'
foo.off('bar', handleBar);
foo.trigger('bar');
// does nothing
```
## `one()`
This function is used to only have an event listener called once and never again.
Using `on()` and `off()` to mimic `one()` (not recommended)
```js
var foo = new EventTarget();
var handleBar = function() {
console.log('bar was triggered');
// after the first trigger remove this handler
foo.off('bar', handleBar);
};
foo.on('bar', handleBar);
foo.trigger('bar');
// logs 'bar was triggered'
foo.trigger('bar');
// does nothing
```
Using `one()`
```js
var foo = new EventTarget();
var handleBar = function() {
console.log('bar was triggered');
};
// removed after the first trigger
foo.one('bar', handleBar);
foo.trigger('bar');
// logs 'bar was triggered'
foo.trigger('bar');
// does nothing
```
## `trigger()` and `dispatchEvent()`
This function is used to trigger an event on an EventTarget which will cause all listeners to run.
> Note: if 'click' is in `EventTarget.allowedEvents_`, trigger will attempt to call the
> `onClick` function if it exists.
```js
var foo = new EventTarget();
var handleBar = function() {
console.log('bar was triggered');
};
foo.on('bar', handleBar);
foo.trigger('bar');
// logs 'bar was triggered'
foo.trigger('bar');
// logs 'bar was triggered'
foo.trigger('foo');
// does nothing
```
+364
Ver Arquivo
@@ -0,0 +1,364 @@
# FAQ
## Table of Contents
* [Q: What is Video.js?](#q-what-is-videojs)
* [Q: How do I install Video.js?](#q-how-do-i-install-videojs)
* [Q: Is Video.js on bower?](#q-is-videojs-on-bower)
* [Q: What do Video.js version numbers mean?](#q-what-do-videojs-version-numbers-mean)
* [Q: How can I troubleshoot playback issues?](#q-how-can-i-troubleshoot-playback-issues)
* [Q: A video does not play in a specific browser. Why?](#q-a-video-does-not-play-in-a-specific-browser-why)
* [Q: Why does the entire video download before playback? Why does the video load for a long time?](#q-why-does-the-entire-video-download-before-playback-why-does-the-video-load-for-a-long-time)
* [Q: I see an error thrown that mentions vdata12345. What is that?](#q-i-see-an-error-thrown-that-mentions-vdata12345-what-is-that)
* [Q: I think I found a bug with Video.js or I want to add a feature. What should I do?](#q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do)
* [if you think that you can fix the issue or add the feature](#if-you-think-that-you-can-fix-the-issue-or-add-the-feature)
* [If you don't think you can fix the issue or add the feature](#if-you-dont-think-you-can-fix-the-issue-or-add-the-feature)
* [Q: What is a reduced test case?](#q-what-is-a-reduced-test-case)
* [Q: What media formats does Video.js support?](#q-what-media-formats-does-videojs-support)
* [Q: How does Video.js choose which source to use?](#q-how-does-videojs-choose-which-source-to-use)
* [Q: How to I autoplay the video?](#q-how-to-i-autoplay-the-video)
* [Q: How can I autoplay a video on a mobile device?](#q-how-can-i-autoplay-a-video-on-a-mobile-device)
* [Q: How can I play RTMP video in Video.js?](#q-how-can-i-play-rtmp-video-in-videojs)
* [Q: How can I hide the links to my video/subtitles/audio/tracks?](#q-how-can-i-hide-the-links-to-my-videosubtitlesaudiotracks)
* [Q: Can I turn off Video.js logging?](#q-can-i-turn-off-videojs-logging)
* [Q: What is a plugin?](#q-what-is-a-plugin)
* [Q: How do I make a plugin for Video.js?](#q-how-do-i-make-a-plugin-for-videojs)
* [Q: Where can I find a list of Video.js plugins?](#q-where-can-i-find-a-list-of-videojs-plugins)
* [Q: How can I get my plugin listed on the website?](#q-how-can-i-get-my-plugin-listed-on-the-website)
* [Q: Where can I find a list of Video.js skins?](#q-where-can-i-find-a-list-of-videojs-skins)
* [Q: Does Video.js work as an audio only player?](#q-does-videojs-work-as-an-audio-only-player)
* [Q: Does Video.js support audio tracks?](#q-does-videojs-support-audio-tracks)
* [Q: Does Video.js support video tracks?](#q-does-videojs-support-video-tracks)
* [Q: Does Video.js support text tracks (captions, subtitles, etc)?](#q-does-videojs-support-text-tracks-captions-subtitles-etc)
* [Q: Does Video.js support HLS (HTTP Live streaming) video?](#q-does-videojs-support-hls-http-live-streaming-video)
* [Q: Does Video.js support MPEG Dash video?](#q-does-videojs-support-mpeg-dash-video)
* [Q: Does Video.js support live video?](#q-does-videojs-support-live-video)
* [Q: Can Video.js wrap around YouTube videos?](#q-can-videojs-wrap-around-youtube-videos)
* [Q: Can Video.js wrap around Vimeo videos?](#q-can-videojs-wrap-around-vimeo-videos)
* [Q: Does Video.js support DRM video?](#q-does-videojs-support-drm-video)
* [Q: Does Video.js have any support for advertisement integrations?](#q-does-videojs-have-any-support-for-advertisement-integrations)
* [Q: Can Video.js be required in node.js?](#q-can-videojs-be-required-in-nodejs)
* [Q: Does Video.js work with webpack?](#q-does-videojs-work-with-webpack)
* [Q: Does Video.js work with react?](#q-does-videojs-work-with-react)
## Q: What is Video.js?
Video.js is an extendable framework/library around the native video element. It does the following:
* Offers a plugin API so that different types of video can be handed to the native
video element (e.g. [HLS][hls], [Flash][flash], HTML5 video, etc).
* Unifies the native video API across browsers (polyfilling support for features
if necessary)
* Offers an extendable and themable UI
* Ensures accessibility for keyboard and screen reader users
* Has a set of core plugins that offer support for additional video formats:
* [videojs-contrib-hls][hls]
* [videojs-contrib-dash][dash]
* Supports DRM video via a core plugin:
* [videojs-contrib-eme][eme]
* Is extensible with lots of plugins offering support for all kinds of features. See the [plugin list on videojs.com][plugin-list]
## Q: How do I install Video.js?
Currently Video.js can be installed using npm, serving a release file from
a GitHub tag, or even using a CDN hosted version. For information on doing any of those
see the [setup guide][install-guide].
## Q: Is Video.js on bower?
Versions prior to Video.js 6 support bower, however, as of Video.js 6, bower is no
longer officially supported. Please see https://github.com/videojs/video.js/issues/4012
for more information.
## Q: What do Video.js version numbers mean?
Video.js follows [semver][semver] which means that the API should not change
out from under a user unless there is a major version increase.
## Q: How can I troubleshoot playback issues?
See the [troubleshooting guide][troubleshooting]. If troubleshooting does not
solve your issue, please ask in [Slack][slack] or submit an [issue][pr-issue-question].
When seeking help about a playback issue the problem is often specific to the video file used, the way the video is hosted or the browser, so make sure to include all of that information and a [reduced test case](#q-what-is-a-reduced-test-case).
## Q: A video does not play in a specific browser. Why?
See the [troubleshooting guide][troubleshooting]. If troubleshooting does not
solve your issue, please ask in [Slack][slack] or submit an [issue][pr-issue-question].
## Q: Why does the entire video download before playback? Why does the video load for a long time?
See the [troubleshooting guide][troubleshooting]. If troubleshooting does not
solve your issue, please ask in [Slack][slack] or submit an [issue][pr-issue-question].
## Q: I see an error thrown that mentions `vdata12345`. What is that?
See the [troubleshooting guide][troubleshooting]. If troubleshooting does not
solve your issue, please ask in [Slack][slack] or submit an [issue][pr-issue-question].
## Q: I think I found a bug with Video.js or I want to add a feature. What should I do?
### If you think that you can fix the issue or add the feature
A pull request would be very welcome in the [Video.js repo][vjs-prs].
Make sure to follow the [contributing guide][contributing-prs] and
the [pull request template][pr-template].
### If you don't think you can fix the issue or add the feature
Open an [issue on the Video.js repo][vjs-issues]. Make
sure that you follow the [issue template][issue-template] and the
[contributing guide][contributing-issues] so that we can better assist you
with your issue.
## Q: What is a reduced test case?
A reduced test case is an example of the problem that you are facing in isolation.
Think of it as example page that reproduces the issue in the least amount of possible code.
It's important to add a reduced case. Even if the problem seems obvious it may not be to
others. Having a example to refer to also makes the difference between somebody being able
to take a look and immediately see what's wrong, and needing to take time to recreate what
they think you are describing.
We have a [starter example][starter-example] for reduced test cases. To learn more
about reduced test cases visit [css-tricks][reduced-test-case]
## Q: What media formats does Video.js support?
This depends on the formats supported by the browser's HTML5 video element, and the playback
techs/plugins made available to Video.js. For more information on media formats see the [troubleshooting guide][troubleshooting].
## Q: How does Video.js choose which source to use?
When an array of sources is available, Video.js test each source in the order given. For each source, each tech in the [`techOrder`][techorder] will be checked to see if it can play it whether directly or via source handler (such as videojs-contrib-hls). The first match will be chosen.
## Q: How to I autoplay the video?
Video.js supports the standard html5 `autoplay` attribute on the video element.
It also supports it as an option to Video.js or as a method invocation on the player.
```html
<video autoplay controls class="video-js">
```
```js
var player = videojs('my-video', {
autoplay: true
});
// or
player.autoplay(true);
```
### Q: How can I autoplay a video on a mobile device?
Most mobile devices have blocked autoplaying videos until recently.
For mobile devices that don't support autoplaying, autoplay isn't supported by Video.js.
For those devices that support autoplaying, like iOS10 and Chrome for Android 53+,
you must mute the video or have a video without audio tracks to be able to play it.
For example:
```html
<video muted autoplay playsinline>
```
Will make an inline, muted, autoplaying video on an iPhone with iOS10.
## Q: How can I play RTMP video in Video.js?
RTMP requires Flash to play back. You'll need both a browser that supports Flash and the Flash tech.
In Video.js version 6, the Flash tech is not included by default and is available as a separate [videojs-flash package][flash]. In previous versions it was builtin to Video.js.
The RTMP source should be set with an appropriate type -- `rtmp/mp4` or `rtmp/flv`.
Be aware of that Video.js splits the connection url and stream name with the `&` character, for example: `rtmp://example.com/live&foo` or `rtmp://example.com/fms&mp4:path/to/file.mp4`.
If the server requires query parameters for authentication, these should be added to the connection part URL, for example `rtmp://example.com/live?token=1234&foo`.
Bear in mind that mobile browsers do not support Flash, and modern desktop browsers make it increasingly difficult to use Flash or disable it by default for your end users. Consider moving to a modern format such as HLS or DASH.
## Q: How can I hide the links to my video/subtitles/audio/tracks?
It's impossible to hide the network requests a browser makes and difficult to
sufficiently obfuscate URLs in the source. Techniques such as token authentication may
help but are outside of the scope of Video.js.
For content that must be highly secure [videojs-contrib-eme][eme] adds DRM support.
## Q: Can I turn off Video.js logging?
Yes! This can be achieved by adding the following code _after_ including Video.js, but _before_ creating any player(s):
```js
videojs.log.level('off');
```
For more information, including which logging levels are available, check out the [debugging guide][debug-guide].
## Q: What is a plugin?
A plugin is a group of reusable functionality that can be re-used by others. For instance a plugin could add
a button to Video.js that makes the video replay 10 times in a row before it stops playback for good. If such
a plugin existed and was published users could include it on their page to share that functionality.
## Q: How do I make a plugin for Video.js?
See the [plugin guide][plugin-guide] for information on making a plugin for Video.js.
## Q: How do I add a button to Video.js?
See the [components guide][components-guide] for an example of adding a button to Video.js.
## Q: Where can I find a list of Video.js plugins?
A list of plugins published to npm with the `videojs-plugin` keyword is maintained [on videojs.com][plugin-list].
## Q: How can I get my plugin listed on the website?
Add the 'videojs-plugin' [keyword to your array in package.json][npm-keywords]
and publish your package to npm. If you use the [plugin generator][generator] this will be done automatically for you. See
the [plugins guide][plugin-guide] for more information.
## Q: Where can I find a list of Video.js skins?
See the [Video.js GitHub wiki][skins-list].
## Q: Does Video.js work as an audio only player?
Yes! It can be used to play audio only files in a `<video>` or `<audio>` tag.
Note that audio-only sources do not work with the Flash playback tech.
## Q: Does Video.js support audio tracks?
Yes! See the [audio tracks guide][audio-tracks] for information on using audio tracks.
## Q: Does Video.js support video tracks?
Alternate video tracks support is in development. See [video tracks guide][video-tracks]
for more information on using video tracks.
## Q: Does Video.js support text tracks (captions, subtitles, etc)?
Yes! See the [text tracks guide][text-tracks] for information on using text tracks.
## Q: Does Video.js support HLS (HTTP Live streaming) video?
Video.js supports HLS video if the native HTML5 element supports HLS (e.g. Safari, Edge,
Chrome for Android, and iOS). For browsers without native support the [videojs-contrib-hls][hls]
project which adds support.
Note that for non-native playback of HLS it is essential that the server hosting the video sets [CORS headers][cors].
## Q: Does Video.js support MPEG DASH video?
MPEG DASH support is provided byt the [videojs-contrib-dash][dash]
package.
Like HLS, DASH streams require [CORS headers][cors].
## Q: Does Video.js support live video?
Yes! Common formats for live are HLS or historically RTMP.
HLS is supported via [videojs-contrib-hls][hls]. and RTMP via [videojs-flash][flash].
## Q: Can Video.js play YouTube videos?
There is an official plugin that adds support, [videojs-youtube][youtube].
## Q: Can Video.js play Vimeo videos?
There is an official plugin that adds support, [videojs-vimeo][vimeo].
## Q: Does Video.js support DRM video?
There is an official plugin that adds support, [videojs-contrib-eme][eme].
## Q: Does Video.js have any support for advertisement integrations?
There is an official plugin that adds core advertising support, [videojs-contrib-ads][ads]. Further plugins build on this which handle the communication with the ad server and display of the ad, for instance [Google's IMA plugin][google-ima].
## Q: Can Video.js be required in node.js?
Yes! Video.js is [published on NPM][node].
## Q: Does Video.js work with webpack?
Yes! See the [Webpack and Video.js configuration guide][webpack-guide].
## Q: Does Video.js work with react?
Yes! See [ReactJS integration example][react-guide].
[ads]: https://github.com/videojs/videojs-contrib-ads
[audio-tracks]: /docs/guides/audio-tracks.md
[contributing-issues]: http://github.com/videojs/video.js/blob/master/CONTRIBUTING.md#filing-issues
[contributing-prs]: http://github.com/videojs/video.js/blob/master/CONTRIBUTING.md#contributing-code
[components-guide]: /docs/guides/components.md
[cors]: https://enable-cors.org
[dash]: http://github.com/videojs/videojs-contrib-dash
[debug-guide]: /docs/guides/debugging.md
[eme]: https://github.com/videojs/videojs-contrib-eme
[flash]: https://github.com/videojs/videojs-flash
[generator]: https://github.com/videojs/generator-videojs-plugin
[google-ima]: https://github.com/googleads/videojs-ima
[hls]: http://github.com/videojs/videojs-contrib-hls
[install-guide]: http://videojs.com/getting-started/
[issue-template]: http://github.com/videojs/video.js/blob/master/.github/ISSUE_TEMPLATE.md
[node]: https://www.npmjs.com/package/video.js
[npm-keywords]: https://docs.npmjs.com/files/package.json#keywords
[plugin-guide]: /docs/guides/plugins.md
[plugin-list]: http://videojs.com/plugins
[pr-issue-question]: #q-i-think-i-found-a-bug-with-videojs-or-i-want-to-add-a-feature-what-should-i-do
[pr-template]: http://github.com/videojs/video.js/blob/master/.github/PULL_REQUEST_TEMPLATE.md
[react-guide]: /docs/guides/react.md
[reduced-test-case]: https://css-tricks.com/reduced-test-cases/
[semver]: http://semver.org/
[skins-list]: https://github.com/videojs/video.js/wiki/Skins
[slack]: https://videojs.slack.com
[starter-example]: http://jsbin.com/axedog/edit?html,output
[techorder]: [cors]: /docs/guides/options.md#techorder
[text-tracks]: /docs/guides/text-tracks.md
[troubleshooting]: /docs/guides/troubleshooting.md
[video-tracks]: /docs/guides/video-tracks.md
[vimeo]: https://github.com/videojs/videojs-vimeo
[vjs-issues]: https://github.com/videojs/video.js/issues
[vjs-prs]: https://github.com/videojs/video.js/pulls
[webpack-guide]: /docs/guides/webpack.md
[youtube]: https://github.com/videojs/videojs-youtube
+146
Ver Arquivo
@@ -0,0 +1,146 @@
# Hooks
Hooks exist so that users can "hook" on to certain Video.js player lifecycle
## Table of Contents
* [Current Hooks](#current-hooks)
* [beforesetup](#beforesetup)
* [setup](#setup)
* [Usage](#usage)
* [Adding](#adding)
* [Getting](#getting)
* [Removing](#removing)
## Current Hooks
Currently, the following hooks are available:
### beforesetup
`beforesetup` is called just before the player is created. This allows:
* modification of the options passed to the Video.js function (`videojs('some-id, options)`)
* modification of the dom video element that will be used for the player
`beforesetup` hook functions should:
* take two arguments
1. videoEl: dom video element that Video.js is going to use to create a player
1. options: options that Video.js was intialized with and will later pass to the player during creation
* return options that will merge and override options that Video.js with intialized with
Example: adding beforesetup hook
```js
var beforeSetup = function(videoEl, options) {
// videoEl.id will be some-id here, since that is what Video.js
// was created with
videoEl.className += ' some-super-class';
// autoplay will be true here, since we passed in as such
(options.autoplay) {
options.autoplay = false
}
// options that are returned here will be merged with old options
// in this example options will now be
// {autoplay: false, controls: true}
return options;
};
videojs.hook('beforesetup', beforeSetup);
videojs('some-id', {autoplay: true, controls: true});
```
### setup
`setup` is called just after the player is created. This allows:
* plugin or custom functionality to intialize on the player
* changes to the player object itself
`setup` hook functions:
* Take one argument
* player: the player that Video.js created
* Don't have to return anything
Example: adding a setup hook
```js
var setup = function(player) {
// initialize the foo plugin
player.foo();
};
var foo = function() {};
videojs.registerPlugin('foo', foo);
videojs.hook('setup', setup);
var player = videojs('some-id', {autoplay: true, controls: true});
```
## Usage
### Adding
In order to use hooks you must first include Video.js in the page or script that you are using. Then you add hooks using `videojs.hook(<name>, function)` before running the `videojs()` function.
Example: adding hooks
```js
videojs.hook('beforesetup', function(videoEl, options) {
// videoEl will be the element with id=vid1
// options will contain {autoplay: false}
});
videojs.hook('setup', function(player) {
// player will be the same player that is defined below
// as `var player`
});
var player = videojs('vid1', {autoplay: false});
```
After adding your hooks they will automatically be run at the correct time in the Video.js lifecycle.
### Getting
To access the array of hooks that currently exists and will be run on the Video.js object you can use the `videojs.hooks` function.
Example: getting all hooks attached to Video.js
```js
var beforeSetupHooks = videojs.hooks('beforesetup');
var setupHooks = videojs.hooks('setup');
```
### Removing
To stop hooks from being executed during the Video.js lifecycle you will remove them using `videojs.removeHook`.
Example: remove a hook that was defined by you
```js
var beforeSetup = function(videoEl, options) {};
// add the hook
videojs.hook('beforesetup', beforeSetup);
// remove that same hook
videojs.removeHook('beforesetup', beforeSetup);
```
You can also use `videojs.hooks` in conjunction with `videojs.removeHook` but it may have unexpected results if used during an asynchronous callbacks as other plugins/functionality may have added hooks.
Example: using `videojs.hooks` and `videojs.removeHook` to remove a hook
```js
// add the hook
videojs.hook('setup', function(videoEl, options) {});
var setupHooks = videojs.hooks('setup');
// remove the hook you just added
videojs.removeHook('setup', setupHooks[setupHooks.length - 1]);
```
+158
Ver Arquivo
@@ -0,0 +1,158 @@
# Languages
Video.js includes localization support to present text in a language other than the default English where appropriate.
For an up-to-date list of the languages Video.js supports, see the [languages folder (`lang`)][lang-supported].
Some translations may be less complete than others - see the [translations needed doc][translations-needed] for a table of strings that are missing from the translations available. Contributions are welcome to update those that are incomplete.
## Table of Contents
* [Using Video.js Languages](#using-videojs-languages)
* [Contributing to Video.js Translations](#contributing-to-videojs-translations)
* [JSON Format](#json-format)
* [File Naming](#file-naming)
* [Updating an Existing Translation](#updating-an-existing-translation)
* [Writing a New Translation](#writing-a-new-translation)
* [Advanced Language Usage](#advanced-language-usage)
* [Adding Languages via the API](#adding-languages-via-the-api)
* [Per-Player Languages](#per-player-languages)
* [Setting Default Player Language](#setting-default-player-language)
* [Determining Player Language](#determining-player-language)
* [Internal Language Selection](#internal-language-selection)
* [References](#references)
## Using Video.js Languages
Video.js ships with multiple translations (in `dist/lang/`) in JavaScript files.
Add the lang script for each language you need to support.
Each of these files can be included in a web page to provide support for that language in _all_ Video.js players:
```html
<script src="//example.com/path/to/video.min.js"></script>
<script src="//example.com/path/to/lang/es.js"></script>
```
## Contributing to Video.js Translations
We welcome new translations and improvements to existing ones! Please see the [contributing document](../../CONTRIBUTING.md) to get started contributing to Video.js and continue reading for specifics on how to contribute to translations of Video.js.
### JSON Format
Video.js uses a JSON object to describe a language, where the keys are English and the values are the target language. For example, a Spanish translation might look like this:
```JSON
{
"Play": "Reproducción",
"Pause": "Pausa",
"Current Time": "Tiempo reproducido",
"Duration Time": "Duración total",
"Remaining Time": "Tiempo restante",
...
}
```
### File Naming
Translations are found in the `lang/` directory.
Each file's name should be the [standard language code][lang-codes] that is most appropriate, with a `.json` extension. For example, "es.json" for Spanish or "zh-CN.json" for simplified Chinese.
### Updating an Existing Translation
If there is a [missing translation](/docs/translations-needed.md), mistake, or room for improvement in an existing translation, don't hesitate to open a pull request!
1. Edit the relevant JSON file and make the necessary changes.
1. Verify the language compiles by running `grunt dist`.
1. Verify the translation appears properly in the player UI.
1. Run `grunt check-translations` to update the [missing translation document](/docs/translations-needed.md).
1. Commit and open a pull request on GitHub.
### Writing a New Translation
The process for writing an entirely new translation is virtually identical to the process for [updating an existing translation](#updating-an-existing-translation) except that the new translation JSON file needs to be created.
The template for new language files is the English file ([lang/en.json][lang-en]). This file is always up-to-date with strings that need translations.
The first step to writing a new translation is to copy the English file:
```sh
cp lang/en.json lang/${NEW_LANG_CODE}.json
```
Otherwise, the process is the same as [updating an existing translation](#updating-an-existing-translation).
### Adding Languages via the API
In addition to the stand-alone scripts provided by Video.js, the API supports manual definition of new languages via the `addLanguage` method. It takes two arguments: the [standard language code][lang-codes] and a [language definition object](#json-format).
```js
videojs.addLanguage('es', {
Play: 'Reproducción',
Pause: 'Pausa',
'Current Time': 'Tiempo reproducido',
'Duration Time': 'Duración total',
'Remaining Time': 'Tiempo restante',
...
});
```
`addLanguage()` will overwrite existing translations if the object includes strings previously translated. However text that has already been localised will not be updated after generation.
### Per-Player Translations
In addition to providing languages to Video.js itself, individual `Player` instances can be provided custom language support via [the `languages` option](/docs/guides/options.md#languages):
```js
// Provide a custom definition of Spanish to this player.
videojs('my-player', {
languages: {
es: {
Play: 'Reproducir'
}
}
});
```
### Setting Player Language
The language used by a player instance may be set via [the `language` option](/docs/guides/options.md#language):
```js
// Set the language to Spanish for this player.
videojs('my-player', {
language: 'es'
});
```
The `language` method of the player _can_ be used to set the language after instantiation with `language('es')`. However, this is generally not useful as it does not update text that is already in place.
### Determining Player Language
The player language is set to one of the following in descending priority:
* The language [specified in options](#setting-default-player-language)
* The language specified by a `lang` attribute on the player element.
* The language specified by the closest parent element with a `lang` attribute, up to and including the `<html>` element.
* The browser language preference; the first language if more than one is configured
* English
#### Internal Language Selection
* Language codes are considered case-insensitively (e.g. `en-US` == `en-us`).
* If there is no match for a language code with a subcode (e.g. `en-us`), a match for the primary code (e.g. `en`) is used if available.
## References
For information on translation/localization in plugins, see [the plugins guide](/docs/guides/plugins.md).
Standard languages codes [are defined by the IANA][lang-codes].
For all existing/supported languages, please see the [languages folder (`lang/`)][lang-supported] folder located in the project root.
[lang-en]: /lang/en.json
[lang-supported]: /lang
[lang-codes]: http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
[translations-needed]: https://github.com/videojs/video.js/blob/master/docs/translations-needed.md
+78
Ver Arquivo
@@ -0,0 +1,78 @@
# Using the Modal Dialog Component
The `ModalDialog` component is part of Video.js core and provides a baked-in UI for full-player overlays.
## Table of Contents
* [Creating a ModalDialog](#creating-a-modaldialog)
* [Example Using createModal()](#example-using-createmodal)
* [Example Using the ModalDialog Constructor](#example-using-the-modaldialog-constructor)
* [Styling Modals Independently](#styling-modals-independently)
## Creating a ModalDialog
Aside from the [built-in Video.js component-creation methods][creating-component], the player includes a `createModal()` helper method.
We'll demonstrate both approaches in this document by creating a modal that opens when the player becomes paused and resumes playback when it is closed.
### Example Using `createModal()`
The `createModal()` method is intended for creating one-off modals that need to open for some temporary purpose. Therefore, they open themselves immediately upon creation and, by default, dispose themselves immediately upon closing.
```js
var player = videojs('my-player');
player.on('pause', function() {
// Modals are temporary by default. They dispose themselves when they are
// closed; so, we can create a new one each time the player is paused and
// not worry about leaving extra nodes hanging around.
var modal = player.createModal('This is a modal!');
// When the modal closes, resume playback.
modal.on('modalclose', function() {
player.play();
});
});
```
The `createModal()` method also takes a second argument - an object containing options for the modal. Refer to [the API documentation][api-doc] for a full set of options.
### Example Using the `ModalDialog` Constructor
Unlike when using `createModal()`, a modal created with any of the [common component creation methods][creating-component] _does not_ open by default. This makes this approach better suited to modals that are expected to live in the DOM indefinitely.
```js
var player = videojs('my-player');
var ModalDialog = videojs.getComponent('ModalDialog');
var modal = new ModalDialog(player, {
// We don't want this modal to go away when it closes.
temporary: false
});
player.addChild(modal);
player.on('pause', function() {
modal.open();
});
player.on('play', function() {
modal.close();
});
```
Both of these examples are equivalent when it comes to the user's experience. Implementors should use whichever better suits their use-case.
## Styling Modals Independently
A common need for modals is to style them independently from one another. The recommended approach for this is to add a custom class to your modal and target that using CSS:
```js
modal.addClass('vjs-my-fancy-modal');
```
[api-doc]: http://docs.videojs.com/ModalDialog.html
[creating-component]: /docs/guides/components.md#creating-a-component
+386
Ver Arquivo
@@ -0,0 +1,386 @@
# Video.js Options Reference
> **Note:** This document is only a reference for available options. To learn about passing options to Video.js, see [the setup guide](/docs/guides/setup.md#options).
## Table of Contents
* [Standard &lt;video> Element Options](#standard-video-element-options)
* [autoplay](#autoplay)
* [controls](#controls)
* [height](#height)
* [loop](#loop)
* [muted](#muted)
* [poster](#poster)
* [preload](#preload)
* ['auto'](#auto)
* ['metadata'](#metadata)
* ['none'](#none)
* [src](#src)
* [width](#width)
* [Video.js-specific Options](#videojs-specific-options)
* [aspectRatio](#aspectratio)
* [children](#children)
* [fluid](#fluid)
* [inactivityTimeout](#inactivitytimeout)
* [language](#language)
* [languages](#languages)
* [nativeControlsForTouch](#nativecontrolsfortouch)
* [notSupportedMessage](#notsupportedmessage)
* [playbackRates](#playbackrates)
* [plugins](#plugins)
* [sourceOrder](#sourceorder)
* [sources](#sources)
* [techOrder](#techorder)
* [vtt.js](#vttjs)
* [Component Options](#component-options)
* [children](#children-1)
* [${componentName}](#componentname)
* [Tech Options](#tech-options)
* [${techName}](#techname)
* [flash](#flash)
* [swf](#swf)
* [html5](#html5)
* [nativeControlsForTouch](#nativecontrolsfortouch-1)
* [nativeAudioTracks](#nativeaudiotracks)
* [nativeTextTracks](#nativetexttracks)
* [nativeVideoTracks](#nativevideotracks)
## Standard `<video>` Element Options
Each of these options is also available as a [standard `<video>` element attribute][video-attrs]; so, they can be defined in all three manners [outlined in the setup guide](/docs/guides/setup.md#options). Typically, defaults are not listed as this is left to browser vendors.
### `autoplay`
> Type: `boolean`
If `true`/present as an attribute, begins playback when the player is ready.
> **Note:** As of iOS 10, Apple offers `autoplay` support in Safari. For details, refer to ["New <video> Policies for iOS"][ios-10-updates].
### `controls`
> Type: `boolean`
Determines whether or not the player has controls that the user can interact with. Without controls the only way to start the video playing is with the `autoplay` attribute or through the Player API.
### `height`
> Type: `string|number`
Sets the display height of the video player in pixels.
### `loop`
> Type: `boolean`
Causes the video to start over as soon as it ends.
### `muted`
> Type: `boolean`
Will silence any audio by default.
### `poster`
> Type: `string`
A URL to an image that displays before the video begins playing. This is often a frame of the video or a custom title screen. As soon as the user hits "play" the image will go away.
### `preload`
> Type: `string`
Suggests to the browser whether or not the video data should begin downloading as soon as the `<video>` element is loaded. Supported values are:
#### `'auto'`
Start loading the video immediately (if the browser supports it). Some mobile devices will not preload the video in order to protect their users' bandwidth/data usage. This is why the value is called 'auto' and not something more conclusive like `'true'`.
_This tends to be the most common and recommended value as it allows the browser to choose the best behavior._
#### `'metadata'`
Load only the meta data of the video, which includes information like the duration and dimensions of the video. Sometimes, the meta data will be loaded by downloading a few frames of video.
#### `'none'`
Don't preload any data. The browser will wait until the user hits "play" to begin downloading.
### `src`
> Type: `string`
The source URL to a video source to embed.
### `width`
> Type: `string|number`
Sets the display height of the video player in pixels.
## Video.js-specific Options
Each option is `undefined` by default unless otherwise specified.
### `aspectRatio`
> Type: `string`
Puts the player in [fluid](#fluid) mode and the value is used when calculating the dynamic size of the player. The value should represent a ratio - two numbers separated by a colon (e.g. `"16:9"` or `"4:3"`).
### `children`
> Type: `Array|Object`
This option is inherited from the [`Component` base class](#component-options).
### `fluid`
> Type: `boolean`
When `true`, the Video.js player will have a fluid size. In other words, it will scale to fit its container.
Also, if the `<video>` element has the `"vjs-fluid"`, this option is automatically set to `true`.
### `inactivityTimeout`
> Type: `number`
Video.js indicates that the user is interacting with the player by way of the `"vjs-user-active"` and `"vjs-user-inactive"` classes and the `"useractive"` event.
The `inactivityTimeout` determines how many milliseconds of inactivity is required before declaring the user inactive. A value of `0` indicates that there is no `inactivityTimeout` and the user will never be considered inactive.
### `language`
> Type: `string`, Default: browser default or `'en'`
A [language code][lang-codes] matching one of the available languages in the player. This sets the initial language for a player, but it can always be changed.
Learn more about [languages in Video.js][languages].
### `languages`
> Type: `Object`
Customize which languages are available in a player. The keys of this object will be [language codes][lang-codes] and the values will be objects with English keys and translated values.
Learn more about [languages in Video.js][languages]
> **Note**: Generally, this option is not needed and it would be better to pass your custom languages to `videojs.addLanguage()`, so they are available in all players!
### `nativeControlsForTouch`
> Type: `boolean`
Explicitly set a default value for [the associated tech option](#nativecontrolsfortouch).
### `notSupportedMessage`
> Type: `string`
Allows overriding the default message that is displayed when Video.js cannot play back a media source.
### `playbackRates`
> Type: `Array`
An array of numbers strictly greater than 0, where 1 means regular speed
(100%), 0.5 means half-speed (50%), 2 means double-speed (200%), etc.
If specified, Video.js displays a control (of class `vjs-playback-rate`)
allowing the user to choose playback speed from among the array of choices.
The choices are presented in the specified order from bottom to top.
For example:
```js
videojs('my-player', {
playbackRates: [0.5, 1, 1.5, 2]
});
```
### `plugins`
> Type: `Object`
This supports having plugins be initialized automatically with custom options when the player is initialized - rather than requiring you to initialize them manually.
```js
videojs('my-player', {
plugins: {
foo: {bar: true},
boo: {baz: false}
}
});
```
The above is roughly equivalent to:
```js
var player = videojs('my-player');
player.foo({bar: true});
player.boo({baz: false});
```
Although, since the `plugins` option is an object, the order of initialization is not guaranteed!
See [the plugins guide][plugins] for more information on Video.js plugins.
### `sources`
> Type: `Array`
An array of objects that mirror the native `<video>` element's capability to have a series of child `<source>` elements. This should be an array of objects with the `src` and `type` properties. For example:
```js
videojs('my-player', {
sources: [{
src: '//path/to/video.mp4',
type: 'video/mp4'
}, {
src: '//path/to/video.webm',
type: 'video/webm'
}]
});
```
Using `<source>` elements will have the same effect:
```html
<video ...>
<source src="//path/to/video.mp4" type="video/mp4">
<source src="//path/to/video.webm" type="video/webm">
</video>
```
### `techOrder`
> Type: `Array`, Default: `['html5']`
Defines the order in which Video.js techs are preferred. By default, this means that the `Html5` tech is preferred. Other regisetered techs will be added after this tech in the order in which they are registered.
### `vtt.js`
> Type: `string`
Allows overriding the default URL to vtt.js, which may be loaded asynchronously to polyfill support for `WebVTT`.
This option will be used in the "novtt" build of Video.js (i.e. `video.novtt.js`). Otherwise, vtt.js is bundled with Video.js.
## Component Options
The Video.js player is a component. Like all components, you can define what children it includes, what order they appear in, and what options are passed to them.
This is meant to be a quick reference; so, for more detailed information on components in Video.js, check out the [components guide](/docs/guides/components.md).
### `children`
> Type: `Array|Object`
If an `Array` - which is the default - this is used to determine which children (by component name) and in which order they are created on a player (or other component):
```js
// The following code creates a player with ONLY bigPlayButton and
// controlBar child components.
videojs('my-player', {
children: [
'bigPlayButton',
'controlBar'
]
});
```
The `children` options can also be passed as an `Object`. In this case, it is used to provide `options` for any/all children, including disabling them with `false`:
```js
// This player's ONLY child will be the controlBar. Clearly, this is not the
// ideal method for disabling a grandchild!
videojs('my-player', {
children: {
controlBar: {
fullscreenToggle: false
}
}
});
```
### `${componentName}`
> Type: `Object`
Components can be given custom options via the _lower-camel-case variant of the component name_ (e.g. `controlBar` for `ControlBar`). These can be nested in a representation of grandchild relationships. For example, to disable the fullscreen control:
```js
videojs('my-player', {
controlBar: {
fullscreenToggle: false
}
});
```
## Tech Options
### `${techName}`
> Type: `Object`
Video.js playback technologies (i.e. "techs") can be given custom options as part of the options passed to the `videojs` function. They should be passed under the _lower-case variant of the tech name_ (e.g. `"flash"` or `"html5"`).
### `flash`
#### `swf`
Specifies where the Video.js SWF file is located for the `Flash` tech:
```js
videojs('my-player', {
flash: {
swf: '//path/to/videojs.swf'
}
});
```
However, changing the global defaults is generally more appropriate:
```js
videojs.options.flash.swf = '//path/to/videojs.swf'
```
### `html5`
#### `nativeControlsForTouch`
> Type: `boolean`
Only supported by the `Html5` tech, this option can be set to `true` to force native controls for touch devices.
#### `nativeAudioTracks`
> Type: `boolean`
Can be set to `false` to disable native audio track support. Most commonly used with [videojs-contrib-hls][videojs-contrib-hls].
#### `nativeTextTracks`
> Type: `boolean`
Can be set to `false` to force emulation of text tracks instead of native support. The `nativeCaptions` option also exists, but is simply an alias to `nativeTextTracks`.
#### `nativeVideoTracks`
> Type: `boolean`
Can be set to `false` to disable native video track support. Most commonly used with [videojs-contrib-hls][videojs-contrib-hls].
[plugins]: /docs/guides/plugins.md
[languages]: /docs/guides/languages.md
[ios-10-updates]: https://webkit.org/blog/6784/new-video-policies-for-ios/
[lang-codes]: http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry
[video-attrs]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#Attributes
[videojs-contrib-hls]: https://github.com/videojs/videojs-contrib-hls
+373
Ver Arquivo
@@ -0,0 +1,373 @@
# Player Workflows
This document outlines many considerations for using Video.js for advanced player workflows. Be sure to read [the setup guide](/docs/guides/setup.md) first!
## Table of Contents
* [Accessing a player that has already been created on a page](#accessing-a-player-that-has-already-been-created-on-a-page)
* [Removing Players](#removing-players)
* [dispose()](#dispose)
* [Signs of an Undisposed Player](#signs-of-an-undisposed-player)
* [Showing and Hiding a Player](#showing-and-hiding-a-player)
* [Changing the volume of a player](#changing-the-volume-of-a-player)
* [Making the player fullscreen](#making-the-player-fullscreen)
* [Using Playback information functions](#using-playback-information-functions)
* [Dealing with the source or the poster on the player](#dealing-with-the-source-or-the-poster-on-the-player)
* [Accesing the Tech on the player](#accesing-the-tech-on-the-player)
* [Using Video.js with...](#using-videojs-with)
* [jQuery](#jquery)
* [React](#react)
* [Ember](#ember)
* [Angular](#angular)
## Accessing a player that has already been created on a page
After an instance has been created it can be accessed globally in two ways:
1. By calling `videojs('example_video_id');`
1. By using it directly via `videojs.players.example_video_id;`
## Removing Players
No matter the term used for it, web applications are becoming common. Not everything is a static, load-once-and-done web page anymore! This means that developers need to be able to manage the full lifecycle of a video player - from creation to destruction. Video.js supports player removal through the `dispose()` method.
### [`dispose()`](http://docs.videojs.com/Player.html#dispose)
This method is available on all Video.js players and [components](http://docs.videojs.com/Component.html#dispose). It is _the only_ supported method of removing a Video.js player from both the DOM and memory. For example, the following code sets up a player and then disposes it when media playback is complete:
```js
var player = videojs('my-player');
player.on('ended', function() {
this.dispose();
});
```
Calling `dispose()` will have a few effects:
1. Trigger a `"dispose"` event on the player, allowing for any custom cleanup tasks that need to be run by your integration.
1. Remove all event listeners from the player.
1. Remove the player's DOM element(s).
Additionally, these actions are recursively applied to _all_ the player's child components.
> **Note**: Do _not_ remove players via standard DOM removal methods: this will leave listeners and other objects in memory that you might not be able to clean up!
### Signs of an Undisposed Player
Seeing an error such as:
```console
TypeError: this.el_.vjs_getProperty is not a function
```
or
```console
TypeError: Cannot read property 'vdata1234567890' of null
```
Suggests that a player or component was removed from the DOM without using `dispose()`. It usually means something tried to trigger an event on it or call a method on it.
## Showing and Hiding a Player
It is not recommended that you attempt to toggle the visibility or display of a Video.js player. Doing so can be particularly problematic when it comes to the Flash tech. Instead, players should be created and [disposed](#removing-players) as needed.
This is relevant to use cases such as displaying a player in a modal/overlay. Rather than keeping a hidden Video.js player in a DOM element, it's recommended that you create the player when the modal opens and dispose it when the modal closes.
This is particularly relevant where memory/resource usage is concerned (e.g. mobile devices).
Depending on the libraries/frameworks in use, an implementation might look something like this:
```js
modal.on('show', function() {
var videoEl = modal.findEl('video');
modal.player = videojs(videoEl);
});
modal.on('hide', function() {
modal.player.dispose();
});
```
## Changing the volume of a player
Volume for a player can be changed through the `volume` function on a player. The volume function accepts a number from 0-1. Calling it without an argument will return the current volume.
Example
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// get
var howLoudIsIt = myPlayer.volume();
// set
myPlayer.volume(0.5); // Set volume to half
});
```
Volume can also be muted (without actually changing the volume value) using the `muted` function. Calling it without an argument will return the current status of muted on the player.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// get, should be false
console.log(myPlayer.muted());
// set to true
myPlayer.muted(true);
// get should be true
console.log(myPlayer.muted());
});
```
## Making the player fullscreen
To check if the player is currently fullscreen call the `isFullscreen` function on a player like so.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// get, should be false
console.log(myPlayer.isFullscreen());
// set, tell the player it's in fullscreen
myPlayer.isFullscreen(true);
// get, should be true
console.log(myPlayer.isFullscreen());
});
```
To request that the player enter fullscreen call `requestFullscreen`.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
myPlayer.requestFullscreen();
});
```
To exit fullscreen call `exitFullscreen`
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
myPlayer.requestFullscreen();
myPlayer.exitFullscreen();
});
```
## Using Playback information functions
`play` can be used to start playback on a player that has a source.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
myPlayer.play();
});
```
`pause` can be used to pause playback on a player that is playing.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
myPlayer.play();
myPlayer.pause();
});
```
`paused` can be used to determine if a player is currently paused.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// true
console.log(myPlayer.paused());
// false
console.log(!myPlayer.paused());
myPlayer.play();
// false
console.log(myPlayer.paused());
// true
console.log(!myPlayer.paused());
myPlayer.pause();
// true
console.log(myPlayer.paused());
// false
console.log(!myPlayer.paused());
});
```
`currentTime` will give you the currentTime (in seconds) that playback is currently occuring at.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// set current time to 2 minutes into the video
myPlayer.currentTime(120);
// get the current time, should be 120 seconds
var whereYouAt = myPlayer.currentTime();
});
```
`duration` will give you the total duration of the video that is playing
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
var lengthOfVideo = myPlayer.duration();
});
```
`remainingTime` will give you the seconds that are remaing in the video.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
myPlayer.currentTime(10);
// should be 10 seconds less than duration
console.log(myPlayer.remainingTime());
});
```
`buffered` will give you a timeRange object representing the current ranges of time that are ready to be played at a future time.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
var bufferedTimeRange = myPlayer.buffered();
// number of different ranges of time have been buffered.
// Usually 1
var numberOfRanges = bufferedTimeRange.length,
// Time in seconds when the first range starts.
// Usually 0
var firstRangeStart = bufferedTimeRange.start(0),
// Time in seconds when the first range ends
var firstRangeEnd = bufferedTimeRange.end(0),
// Length in seconds of the first time range
var firstRangeLength = firstRangeEnd - firstRangeStart;
});
```
`bufferedPercent` will give you the the current percentage of the video that is buffered.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// example 0.11 aka 11%
var howMuchIsDownloaded = myPlayer.bufferedPercent();
});
```
## Dealing with the source or the poster on the player
Passing a source to the player via the API. (this can also be done using options)
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
```
**Source Object (or element):** A javascript object containing information
about the source file. Use this method if you want the player to determine if
it can support the file using the type information.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src({type: "video/mp4", src: "http://www.example.com/path/to/video.mp4"});
```
**Array of Source Objects:** To provide multiple versions of the source so
that it can be played using HTML5 across browsers you can use an array of
source objects. Video.js will detect which version is supported and load that
file.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src([
{type: "video/mp4", src: "http://www.example.com/path/to/video.mp4"},
{type: "video/webm", src: "http://www.example.com/path/to/video.webm"},
{type: "video/ogg", src: "http://www.example.com/path/to/video.ogv"}
]);
```
Changing or setting the poster via the API. (this can also be done with options)
```js
var myPlayer = videojs('example_video_1');
// set
myPlayer.poster('http://example.com/myImage.jpg');
// get
console.log(myPlayer.poster());
// 'http://example.com/myImage.jpg'
```
## Accesing the Tech on the player
The tech on the player can only be accesed by pasing `{IWillNotUseThisInPlugins: true}` into the `tech()`
function on the player.
```js
var myPlayer = videojs('some-player-id');
myPlayer.src('http://www.example.com/path/to/video.mp4');
myPlayer.ready(function() {
// tech() will error with no argument
var tech = myPlayer.tech({IWillNotUseThisInPlugins: true});
});
```
## Using Video.js with...
Coming soon...
### jQuery
### React
See [ReactJS integration example](/docs/guides/react.md)
### Ember
### Angular
+363
Ver Arquivo
@@ -0,0 +1,363 @@
# Video.js Plugins
One of the great strengths of Video.js is its ecosystem of plugins that allow authors from all over the world to share their video player customizations. This includes everything from the simplest UI tweaks to new [playback technologies and source handlers][tech]!
Because we view plugins as such an important part of Video.js, the organization is committed to maintaining a robust set of tools for plugin authorship:
* [generator-videojs-plugin][generator]
A [Yeoman][yeoman] generator for scaffolding a Video.js plugin project. Additionally, it offers a set of [conventions for plugin authorship][standards] that, if followed, make authorship, contribution, and usage consistent and predictable.
In short, the generator sets up plugin authors to focus on writing their plugin - not messing with tools.
## Writing a Basic Plugin
If you've written a Video.js plugin before, the basic plugin concept should be familiar. It's similar to a jQuery plugin in that the core idea is that you're adding a method to the player.
### Write a JavaScript Function
A basic plugin is a plain JavaScript function:
```js
function examplePlugin(options) {
if (options.customClass) {
this.addClass(options.customClass);
}
this.on('playing', function() {
videojs.log('playback began!');
});
}
```
By convention, plugins are passed an `options` object; however, you can realistically accept whatever arguments you want. This example plugin will add a custom class (whatever is passed in as `options.customClass`) and, whenever playback begins, it will log a message to the browser console.
> **Note:** The value of `this` in the plugin function is the player instance; so, you have access to [its complete API][api-player].
### Register a Basic Plugin
Now that we have a function that does something with a player, all that's left is to register the plugin with Video.js:
```js
videojs.registerPlugin('examplePlugin', examplePlugin);
```
After that, any player will automatically have an `examplePlugin` method on its prototype!
> **Note:** The only stipulation with the name of the plugin is that it cannot conflict with any existing plugin or player method.
## Writing an Advanced Plugin
Video.js 6 introduced advanced plugins: these are plugins that share a similar API with basic plugins, but are class-based and offer a range of extra features out of the box.
While reading the following sections, you may want to refer to the [Plugin API docs][api-plugin] for more detail.
### Write a JavaScript Class/Constructor
If you're familiar with creating [components][components], this process is similar. An advanced plugin starts with a JavaScript class (a.k.a. a constructor function).
If you're using ES6 already, you can use that syntax with your transpiler/language of choice (Babel, TypeScript, etc):
```js
const Plugin = videojs.getPlugin('plugin');
class ExamplePlugin extends Plugin {
constructor(player, options) {
super(player, options);
if (options.customClass) {
player.addClass(options.customClass);
}
player.on('playing', function() {
videojs.log('playback began!');
});
}
}
```
Or with ES5:
```js
var Plugin = videojs.getPlugin('plugin');
var ExamplePlugin = videojs.extend(Plugin, {
constructor: function(player, options) {
Plugin.call(this, player, options);
if (options.customClass) {
player.addClass(options.customClass);
}
player.on('playing', function() {
videojs.log('playback began!');
});
}
});
```
For now, this example advanced plugin does the exact same thing as the basic plugin described above - not to worry, we will make it more interesting as we continue!
### Register an Advanced Plugin
The registration process for advanced plugins is identical to [the process for basic plugins](#register-a-basic-plugin).
```js
videojs.registerPlugin('examplePlugin', ExamplePlugin);
```
> **Note:** Because ES6 classes are syntactic sugar on top of existing constructor function and prototype architecture in JavaScript, in all cases `registerPlugin`'s second argument is a function.
### Key Differences from Basic Plugins
Advanced plugins have two key differences from basic plugins that are important to understand before describing their advanced features.
#### The Value of `this`
With basic plugins, the value of `this` in the plugin function will be the _player_.
With advanced plugins, the value of `this` is the _instance of the plugin class_. The player is passed to the plugin constructor as its first argument (and is automatically applied to the plugin instance as the `player` property) and any further arguments are passed after that.
#### The Player Plugin Name Property
Both basic plugins and advanced plugins are set up by calling a method on a player with a name matching the plugin (e.g., `player.examplePlugin()`).
However, with advanced plugins, this method acts like a factory function and it is _replaced_ for the current player by a new function which returns the plugin instance:
```js
// `examplePlugin` has not been called, so it is a factory function.
player.examplePlugin();
// `examplePlugin` is now a function that returns the same instance of
// `ExamplePlugin` that was generated by the previous call.
player.examplePlugin().someMethodName();
```
With basic plugins, the method does not change - it is always the same function. It is up to the authors of basic plugins to deal with multiple calls to their plugin function.
### Features of Advanced Plugins
Up to this point, our example advanced plugin is functionally identical to our example basic plugin. However, advanced plugins bring with them a great deal of benefit that is not built into basic plugins.
#### Events
Like components, advanced plugins offer an implementation of events. This includes:
* The ability to listen for events on the plugin instance using `on` or `one`:
```js
player.examplePlugin().on('example-event', function() {
videojs.log('example plugin received an example-event');
});
```
* The ability to `trigger` custom events on a plugin instance:
```js
player.examplePlugin().trigger('example-event');
```
* The ability to stop listening to custom events on a plugin instance using `off`:
```js
player.examplePlugin().off('example-event');
```
By offering a built-in events system, advanced plugins offer a wider range of options for code structure with a pattern familiar to most web developers.
##### Extra Event Data
All events triggered by plugins include an additional data object as a second argument. This object has three properties:
- `name`: The name of the plugin (e.g. `"examplePlugin"`) as a string.
- `plugin`: The plugin constructor (e.g. `ExamplePlugin`).
- `instance`: The plugin constructor instance.
#### Statefulness
A new concept introduced for advanced plugins is _statefulness_. This is similar to React components' `state` property and `setState` method.
Advanced plugin instances each have a `state` property, which is a plain JavaScript object - it can contain any keys and values the plugin author wants.
A default `state` can be provided by adding a static property to a plugin constructor:
```js
ExamplePlugin.defaultState = {
customClass: 'default-custom-class'
};
```
When the `state` is updated via the `setState` method, the plugin instance fires a `"statechanged"` event, but _only if something changed!_ This event can be used as a signal to update the DOM or perform some other action. The event object passed to listeners for this event includes, an object describing the changes that occurred on the `state` property:
```js
player.examplePlugin().on('statechanged', function(e) {
if (e.changes && e.changes.customClass) {
this.player
.removeClass(e.changes.customClass.from)
.addClass(e.changes.customClass.to);
}
});
player.examplePlugin().setState({customClass: 'another-custom-class'});
```
#### Lifecycle
Like components, advanced plugins have a lifecycle. They can be created with their factory function and they can be destroyed using their `dispose` method:
```js
// set up a example plugin instance
player.examplePlugin();
// dispose of it anytime thereafter
player.examplePlugin().dispose();
```
The `dispose` method has several effects:
* Triggers a `"dispose"` event on the plugin instance.
* Cleans up all event listeners on the plugin instance, which helps avoid errors caused by events being triggered after an object is cleaned up.
* Removes plugin state and references to the player to avoid memory leaks.
* Reverts the player's named property (e.g. `player.examplePlugin`) _back_ to the original factory function, so the plugin can be set up again.
In addition, if the player is disposed, the disposal of all its advanced plugin instances will be triggered as well.
#### Version
Adding a version number to a plugin is done by defining a `VERSION` property on the plugin before registering it:
```js
ExamplePlugin.VERSION = '1.0.1';
videojs.registerPlugin('examplePlugin', ExamplePlugin);
```
Retrieve it using `videojs.getPluginVersion`:
```js
var version = videojs.getPluginVersion('examplePlugin');
console.log(version); // 1.0.1
```
Note that the [plugin generator](https://github.com/videojs/generator-videojs-plugin) already takes care of adding a version number for you.
### Advanced Example Advanced Plugin
What follows is a complete ES6 advanced plugin that logs a custom message when the player's state changes between playing and paused. It uses all the described advanced features:
```js
import videojs from 'video.js';
const Plugin = videojs.getPlugin('plugin');
class Advanced extends Plugin {
constructor(player, options) {
super(player, options);
// Whenever the player emits a playing or paused event, we update the
// state if necessary.
this.on(player, ['playing', 'paused'], this.updateState);
this.on('statechanged', this.logState);
}
dispose() {
super.dispose();
videojs.log('the advanced plugin is being disposed');
}
updateState() {
this.setState({playing: !this.player.paused()});
}
logState(changed) {
videojs.log(`the player is now ${this.state.playing ? 'playing' : 'paused'}`);
}
}
videojs.registerPlugin('advanced', Advanced);
const player = videojs('example-player');
player.advanced();
// This will begin playback, which will trigger a "playing" event, which will
// update the state of the plugin, which will cause a message to be logged.
player.play();
// This will pause playback, which will trigger a "paused" event, which will
// update the state of the plugin, which will cause a message to be logged.
player.pause();
player.advanced().dispose();
// This will begin playback, but the plugin has been disposed, so it will not
// log any messages.
player.play();
```
This example may be a bit pointless in reality, but it demonstrates the sort of flexibility offered by advanced plugins over basic plugins.
## Setting up a Plugin
There are two ways to set up (or initialize) a plugin on a player. Both ways work identically for both basic and advanced plugins.
The first way is during creation of the player. Using the `plugins` option, a plugin can be automatically set up on a player:
```js
videojs('example-player', {
plugins: {
examplePlugin: {
customClass: 'example-class'
}
}
});
```
Otherwise, a plugin can be manually set up:
```js
var player = videojs('example-player');
player.examplePlugin({customClass: 'example-class'});
```
These two methods are functionally identical - use whichever you prefer!
### Plugin Setup Events
Occasionally, a use-case arises where some code needs to wait for a plugin to be initialized. As of Video.js 6, this can be achieved by listening for `pluginsetup` events on the player.
For any given plugin initialization, there are four events to be aware of:
- `beforepluginsetup`: Triggered immediately before any plugin is initialized.
- `beforepluginsetup:examplePlugin` Triggered immediately before the `examplePlugin` is initialized.
- `pluginsetup`: Triggered after any plugin is initialized.
- `pluginsetup:examplePlugin`: Triggered after he `examplePlugin` is initialized.
These events work for both basic and advanced plugins. They are triggered on the player and each includes an object of [extra event data](#extra-event-data) as a second argument to its listeners.
## References
* [Player API][api-player]
* [Plugin API][api-plugin]
* [Plugin Generator][generator]
* [Plugin Conventions][standards]
[components]: /docs/guides/components.md
[tech]: /docs/guides/tech.md
[api-player]: http://docs.videojs.com/Player.html
[api-plugin]: http://docs.videojs.com/Plugin.html
[generator]: https://github.com/videojs/generator-videojs-plugin
[spellbook]: https://github.com/videojs/spellbook
[standards]: https://github.com/videojs/generator-videojs-plugin/blob/master/docs/standards.md
[yeoman]: http://yeoman.io
+147
Ver Arquivo
@@ -0,0 +1,147 @@
# Video.js and ReactJS integration
Here's a basic ReactJS player implementation.
It just instantiates the Video.js player on `componentDidMount` and destroys it on `componentWillUnmount`.
```jsx
import React from 'react';
import videojs from 'video.js'
export default class VideoPlayer extends React.Component {
componentDidMount() {
// instantiate Video.js
this.player = videojs(this.videoNode, this.props, function onPlayerReady() {
console.log('onPlayerReady', this)
});
}
// destroy player on unmount
componentWillUnmount() {
if (this.player) {
this.player.dispose()
}
}
// wrap the player in a div with a `data-vjs-player` attribute
// so videojs won't create additional wrapper in the DOM
// see https://github.com/videojs/video.js/pull/3856
render() {
return (
<div data-vjs-player>
<video ref={ node => this.videoNode = node } className="video-js"></video>
</div>
)
}
}
```
You can then use it like this: (see [options guide][options] for option information)
```jsx
const videoJsOptions = {
autoplay: true,
controls: true,
sources: [{
src: '/path/to/video.mp4',
type: 'video/mp4'
}]
}
return <VideoPlayer { ...videoJsOptions } />
```
Don't forget to include the Video.js CSS, located at `video.js/dist/video-js.css`.
[options]: /docs/guides/options.md
## Using a React Component as a Video JS Component
```jsx
/**
* EpisodeList.js
*
* This is just a plain ol' React component.
* the vjsComponent methods, player methods etc. are available via
* the vjsComponent prop (`this.props.vjsComponent`)
*/
import React, { Component, PropTypes } from 'react';
class EpisodeList extends Component {
render() {
return (
<div>
<h1>{this.props.body}</h1>
</div>
);
}
}
/**
* vjsEpisodeList.js
*
* Here is where we register a Video JS Component and
* mount the React component to it when the player is ready.
*/
import EpisodeList from './EpisodeList';
import ReactDOM from 'react-dom';
import videojs from 'video.js';
const vjsComponent = videojs.getComponent('Component');
class vjsEpisodeList extends vjsComponent {
constructor(player, options) {
super(player, options);
/* Bind the current class context to the mount method */
this.mount = this.mount.bind(this);
/* When player is ready, call method to mount React component */
player.ready(() => {
this.mount();
});
}
/**
* We will render out the React EpisodeList component into the DOM element
* generated automatically by the VideoJS createEl() method.
*
* We fetch that generated element using `this.el()`, a method provided by the
* vjsComponent class that this class is extending.
*/
mount() {
ReactDOM.render(<EpisodeList vjsComponent={this} body="Episodes" />, this.el() );
}
}
/**
* Make sure to register the vjsComponent so Video JS knows it exists
*/
vjsComponent.registerComponent('vjsEpisodeList', vjsEpisodeList);
export default vjsEpisodeList;
/**
* VideoPlayer.js
* Check the above example for how to integrate the rest of this class.
*/
// ...
componentDidMount() {
// instantiate Video.js
this.player = videojs(this.videoNode, this.props, function onPlayerReady() {
console.log('onPlayerReady', this)
});
/**
* Fetch the controlBar component and add the new vjsEpisodeList component as a child
* You can pass options here if desired in the second object.
*/
this.player.getChild('controlBar').addChild('vjsEpisodeList', {});
}
// ...
```
+200
Ver Arquivo
@@ -0,0 +1,200 @@
# Video.js Setup
## Table of Contents
* [Getting Video.js](#getting-videojs)
* [Creating a Player](#creating-a-player)
* [Automatic Setup](#automatic-setup)
* [Manual Setup](#manual-setup)
* [Options](#options)
* [Global Defaults](#global-defaults)
* [A Note on &lt;video> Tag Attributes](#a-note-on-video-tag-attributes)
* [Player Readiness](#player-readiness)
* [Advanced Player Workflows](#advanced-player-workflows)
## Getting Video.js
Video.js is officially available via CDN and npm.
Video.js works out of the box with not only HTML `<script>` and `<link>` tags, but also all major bundlers/packagers/builders, such as Browserify, Node, WebPack, etc.
Please refer to the [Getting Started][getting-started] document for details.
## Creating a Player
> **Note:** Video.js works with `<video>` _and_ `<audio>` elements, but for simplicity we'll refer only to `<video>` elements going forward.
Once you have Video.js [loaded on your page][getting-started], you're ready to create a player!
The core strength of Video.js is that it decorates a [standard `<video>` element][w3c-video] and emulates its associated [events and APIs][w3c-media-events], while providing a customizable DOM-based UI.
Video.js supports all attributes of the `<video>` element (such as `controls`, `preload`, etc), but it also supports [its own options](#options). There are two ways to create a Video.js player and pass it options, but they both start with a standard `<video>` element with the attribute `class="video-js"`:
```html
<video class="video-js">
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>
```
### Automatic Setup
By default, when your web page finishes loading, Video.js will scan for media elements that have the `data-setup` attribute. The `data-setup` attribute is used to pass options to Video.js. A minimal example looks like this:
```html
<video class="video-js" data-setup='{}'>
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>
```
> **Note:** You _must_ use single-quotes with `data-setup` as it is expected to contain JSON.
### Manual Setup
On the modern web, a `<video>` element often does not exist when the page finishes loading. In these cases, automatic setup is not possible, but manual setup is available via [the `videojs` function][videojs].
One way to call this function is by providing it a string matching a `<video>` element's `id` attribute:
```html
<video id="my-player" class="video-js">
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>
```
```js
videojs('my-player');
```
However, using an `id` attribute isn't always practical; so, the `videojs` function accepts a DOM element instead:
```html
<video class="video-js">
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
</video>
```
```js
videojs(document.querySelector('.video-js'));
```
## Options
> **Note:** This guide only covers how to pass options during player setup. For a complete reference on _all_ available options, see the [options guide](/docs/guides/options.md).
There are three ways to pass options to Video.js. Because Video.js decorates an HTML5 `<video>` element, many of the options available are also available as [standard `<video>` tag attributes][video-attrs]:
```html
<video controls autoplay preload="auto" ...>
```
Alternatively, you can use the `data-setup` attribute to pass options as [JSON][json]. This is also how you would set options that aren't standard to the `<video>` element:
```html
<video data-setup='{"controls": true, "autoplay": false, "preload": "auto"}'...>
```
> **Note:** You _must_ use single-quotes around the value of `data-setup` as it contains a JSON string which must use double quotes.
Finally, if you're not using the `data-setup` attribute to trigger the player setup, you can pass in an object of player options as the second argument to the `videojs` function:
```js
videojs('my-player', {
controls: true,
autoplay: false,
preload: 'auto'
});
```
> **Note:** Do not use both `data-setup` and an options object.
### Global Defaults
Default options for all players can be found at `videojs.options` and can be changed directly. For example, to set `{autoplay: true}` for all future players:
```js
videojs.options.autoplay = true;
```
### A Note on `<video>` Tag Attributes
Many attributes are so-called [boolean attributes][boolean-attrs]. This means they are either on or off. In these cases, the attribute _should have no value_ (or should have its name as its value) - its presence implies a true value and its absence implies a false value.
_These are incorrect:_
```html
<video controls="true" ...>
<video loop="true" ...>
<video controls="false" ...>
```
> **Note:** The example with `controls="false"` can be a point of confusion for new developers - it will actually turn controls _on_!
These are correct:
```html
<video controls ...>
<video loop="loop" ...>
<video ...>
```
## Player Readiness
Because Video.js techs have the potential to be loaded asynchronously, it isn't always safe to interact with a player immediately upon setup. For this reason, Video.js players have a concept of "readiness" which will be familiar to anyone who has used jQuery before.
Essentially, any number of ready callbacks can be defined for a Video.js player. There are three ways to pass these callbacks. In each example, we'll add an identical class to the player:
Pass a callback to the `videojs()` function as a third argument:
```js
// Passing `null` for the options argument.
videojs('my-player', null, function() {
this.addClass('my-example');
});
```
Pass a callback to a player's `ready()` method:
```js
var player = videojs('my-player');
player.ready(function() {
this.addClass('my-example');
});
```
Listen for the player's `"ready"` event:
```js
var player = videojs('my-player');
player.on('ready', function() {
this.addClass('my-example');
});
```
In each case, the callback is called asynchronously.
An important distinction between the above methods is that adding an listener for `ready` with `on()` _must_ be done before the player is ready. With `player.ready()`, the function is called immediately if the player is already ready.
## Advanced Player Workflows
For a discussion of more advanced player workflows, see the [player workflows guide][player-workflows].
[player-workflows]: /docs/guides/player-workflows.md
[boolean-attrs]: https://www.w3.org/TR/2011/WD-html5-20110525/common-microsyntaxes.html#boolean-attributes
[getting-started]: http://videojs.com/getting-started/
[json]: http://json.org/example.html
[video-attrs]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#Attributes
[videojs]: http://docs.videojs.com/module-videojs.html
[w3c-media-events]: https://www.w3.org/2010/05/video/mediaevents.html
[w3c-video]: http://www.w3.org/TR/html5/embedded-content-0.html#the-video-element
+97
Ver Arquivo
@@ -0,0 +1,97 @@
# Skins
## Table of Contents
* [Default Skin](#default-skin)
* [Additional &lt;style> Elements](#additional-style-elements)
* [Disabling Additional &lt;style> Elements](#disabling-additional-style-elements)
* [Effect on Player#width() and Player#height()](#effect-on-playerwidth-and-playerheight)
* [Icons](#icons)
* [Creating a Skin](#creating-a-skin)
* [Add a Custom Class to the Player](#add-a-custom-class-to-the-player)
* [Customize Styles](#customize-styles)
## Default Skin
When you include the Video.js CSS file (`video-js.min.css`), the default Video.js skin is applied. That means that customizing the look of a Video.js player is a matter of taking advantage of the cascading aspect of CSS to override styles.
## Additional `<style>` Elements
In addition to the Video.js CSS file, there are some styles generated automatically by JavaScript and included in the `<head>` as `<style>` elements.
* The `"vjs-styles-defaults"` element sets default dimensions for all Video.js players on the page.
* A `"vjs-styles-dimensions"` element is created for _each_ player on the page and is used to adjust its size. This styling is handled in this manner to allow you to override it with custom CSS without relying on scripting or `!important` to overcome inline styles.
### Disabling Additional `<style>` Elements
In some cases, particularly with web applications using frameworks that may manage the `<head>` element (e.g. React, Ember, Angular, etc), these `<style>` elements are not desirable. They can be suppressed by setting `window.VIDEOJS_NO_DYNAMIC_STYLE = true` before including Video.js.
_This disables all CSS-based player sizing. Players will have no `height` or `width` by default!_ Even dimensional attributes, such as `width="600" height="300"` will be _ignored_. When using this global, you will need to set their own dimensions in a way that makes sense for their website or web app.
#### Effect on `Player#width()` and `Player#height()`
When `VIDEOJS_NO_DYNAMIC_STYLE` is set, `Player#width()` and `Player#height()` will apply any width and height that is set directly to the `<video>` element (or whichever element the current tech uses).
## Icons
Video.js ships with a number of icons built into the skin via an icon font.
You can view all of the icons available in the default skin by renaming [`sandbox/icons.html.example`](https://github.com/videojs/video.js/blob/master/sandbox/icons.html.example) to `sandbox/icons.html`, building Video.js with `npm run build`, and opening `sandbox/icons.html` in your browser of choice.
## Creating a Skin
The recommended process for creating a skin is to override the styles provided by the default skin. In this way, you don't need to start from scratch.
### Add a Custom Class to the Player
The most convenient way to create a hook in the player for your skin is to add a class to it. You can do this by adding a class to the initial `<video>` element:
```html
<video class="vjs-matrix video-js">...</video>
```
Or via JavaScript:
```js
var player = videojs('my-player');
player.addClass('vjs-matrix');
```
> **Note:** The `vjs-` prefix is a convention for all classes that are contained in a Video.js player.
### Customize Styles
The first step in overriding default styles with custom ones is to determine which selectors and properties need overriding. As an example, let's say we don't like the default color of controls (white) and we want to change them to a bright green (say, `#00ff00`).
To do this, we'll use your browser's developer tools to inspect the player and figure out which selectors we need to use to adjust those styles - and we'll add our custom `.vjs-matrix` selector to ensure our final selectors are specific enough to override the default skin.
In this case, we'll need the following:
```css
/* Change all text and icon colors in the player. */
.vjs-matrix.video-js {
color: #00ff00;
}
/* Change the border of the big play button. */
.vjs-matrix .vjs-big-play-button {
border-color: #00ff00;
}
/* Change the color of various "bars". */
.vjs-matrix .vjs-volume-level,
.vjs-matrix .vjs-play-progress,
.vjs-matrix .vjs-slider-bar {
background: #00ff00;
}
```
Finally, we can save that as a `videojs-matrix.css` file and include it _after_ the Video.js CSS:
```html
<link rel="stylesheet" type="text/css" href="path/to/video-js.min.css">
<link rel="stylesheet" type="text/css" href="path/to/videojs-matrix.css">
```
If you create a skin you're particularly proud of, you can share it by adding a link on the [Skins wiki page](https://github.com/videojs/video.js/wiki/Skins). One way to create shareable skins is by forking [this example on CodePen](http://codepen.io/heff/pen/EarCt).
+143
Ver Arquivo
@@ -0,0 +1,143 @@
# Playback Technology ("Tech")
Playback Technology refers to the specific browser or plugin technology used to play the video or audio. When using HTML5, the playback technology is the video or audio element. When using Flash from [videojs-flash][flash], the playback technology is the video-js.swf Flash object. When using the [videojs-youtube][youtube] tech, the playback technology is the You Tube player. The tech also includes an API wrapper to translate between the Video.js controls and API to the specific playback technology used.
Essentially we're using html5 and plugins only as video decoders, and using HTML and JavaScript to create a consistent API and skinning experience across all of them.
In addition to techs there are source handlers. Source handlers add the capability to play additional source types to techs. For example, the [videojs-contrib-hls][hls] source handler enables the HTML5 and Flash techs to play HLS.
## Building an API Wrapper
We'll write a more complete guide on writing a wrapper soon, but for now the best resource is the [Video.js](https://github.com/videojs/video.js/tree/master/src/js/tech) source where you can see how the HTML5 API wrapper is created.
## Required Methods
canPlayType
play
pause
currentTime
volume
duration
buffered
supportsFullScreen
## Required Events
loadstart
play
pause
playing
ended
volumechange
durationchange
error
## Optional Events (include if supported)
timeupdate
progress
enterFullScreen
exitFullScreen
## Adding Playback Technology
When additional techs are added they are automatically added to the `techOrder`. You can modify the `techOrder` to change the priority of each tech.
### Tag Method:
```html
<video data-setup='{"techOrder": ["html5", "flash", "other supported tech"]}'>
```
### Object Method:
```js
videojs("videoID", {
techOrder: ["html5", "flash", "other supported tech"]
});
```
## Technology Ordering
When Video.js is given an array of sources, which to use is determined by finding the first supported source / tech combination. Each tech will be queried in the order specified in `techOrder` whether it can play the first source. The first match wins. If no tech can play the first source, then the next will be tested. It's important to set the `type` of each source correctly for this test to be accurate.
For example, given the following video element, assuming the [videojs-flash][flash] tech and [videojs-contrib-hls][hls] source handler are available:
```html
<!-- "techOrder": ["html5", "flash"] -->
<video
<source src="http://your.static.provider.net/path/to/video.m3u8" type="application/x-mpegURL">
<source src="http://your.static.provider.net/path/to/video.mp4" type="video/mp4">
</video>
```
The HLS source will be tested first. The first tech is html5.
* Safari can play HLS in a standard HTML5 video element, so HLS will be played using the html5 tech
* Chrome can't play HLS in the standard HTML5 video element on its own, but the videojs-contrib-hls source handler _can_ play HLS via [Media Source Extensions][mse] in HTML5. So HLS will be played in the html5 tech
* IE 10 can't play HLS natively, and doesn't support Media Source Extensions. As the source cannot be played in HTML5, the Flash tech can be tested. The videojs-contrib-hls source handler can play HLS in the Flash tech, so HLS will be played in the Flash tech.
Now take the same sources again with videojs-contrib-hls but without videojs-flash:
```html
<!-- "techOrder": ["html5"] -->
<video
<source src="http://your.static.provider.net/path/to/video.m3u8" type="application/x-mpegURL">
<source src="http://your.static.provider.net/path/to/video.mp4" type="video/mp4">
</video>
```
* Safari will play HLS in the html5 tech
* Chrome will play HLS in the html5 tech by means of videojs-contrib-hls
* IE 10 can't play HLS in either the html5 or Flash tech. Next the MP4 source will be tested. MP4 can be played by HTML5, so that source-tech pair will be used.
This time, we have videojs-flash but not videojs-contrib-hls:
```html
<!-- "techOrder": ["html5", "flash"] -->
<video
<source src="http://your.static.provider.net/path/to/video.m3u8" type="application/x-mpegURL">
<source src="http://your.static.provider.net/path/to/video.mp4" type="video/mp4">
</video>
```
* Safari will play HLS in the html5 tech
* Chrome can't play HLS in the html5 or flash tech, so will play MP4 in the html5 tech.
* IE 10 also can't play HLS in either the html5 or Flash tech and will also play MP4 in the html5 tech.
## Flash Technology
The Flash playback tech was previously included in Video.js core and was included in the default `techOrder`. As of version 6, the Flash tech was moved to a separate [videojs-flash plugin][flash] which you would need to include if you still need to use Flash.
It's increasingly likely that end users don't have Flash or their browser has either disabled it or puts a click-to-play or other barrier to using it, so it's strongly recommended to use an alternative such as HLS.
### Enabling RTMP Streaming Playback
In order to force the Flash tech to choose streaming playback, you need to provide a valid streaming source **before other valid Flash video sources**. This is necessary because of the source selection algorithm, where playback tech chooses the first possible source object with a valid type. Valid streaming `type` values include `rtmp/mp4` and `rtmp/flv`. The streaming `src` value requires valid connection and stream strings, separated by an `&`. An example of supplying a streaming source through your HTML markup might look like:
```html
<source src="rtmp://your.streaming.provider.net/cfx/st/&mp4:path/to/video.mp4" type="rtmp/mp4">
<source src="http://your.static.provider.net/path/to/video.mp4" type="video/mp4">
<source src="http://your.static.provider.net/path/to/video.webm" type="video/webm">
```
You may optionally use the last `/` as the separator between connection and stream strings, for example:
```html
<source src="rtmp://your.streaming.provider.net/cfx/st/mp4:video.mp4" type="rtmp/mp4">
```
All four RTMP protocols are valid in the `src` (RTMP, RTMPT, RTMPE, and RTMPS).
#### A note on sandboxing and security
In some environments, such as Electron and NW.js apps, stricter policies are enforced, and `.swf` files wont be able to communicate with the outside world out of the box. To stream media, you have to add them to a special manifest of trusted files. [nw-flash-trust](https://github.com/szwacz/nw-flash-trust) makes this job easy.
Browsers also prevent the Flash tech from working when you load a page from the filesystem (with the `file:` protocol) and also in sandboxed iframes.
[flash]: https://github.com/videojs/videojs-flash
[hls]: https://github.com/videojs/videojs-contrib-hls
[mse]: https://en.wikipedia.org/wiki/Media_Source_Extensions
[youtube]: https://github.com/videojs/videojs-youtube
+243
Ver Arquivo
@@ -0,0 +1,243 @@
# Text Tracks
Text tracks are a feature of HTML5 video for displaying time-triggered text to the viewer. Video.js offers a cross-browser implementation of text tracks.
## Table of Contents
* [A Note on "Remote" Text Tracks](#a-note-on-remote-text-tracks)
* [Creating the Text File](#creating-the-text-file)
* [Adding Text Tracks to Video.js](#adding-text-tracks-to-videojs)
* [track Attributes](#track-attributes)
* [kind](#kind)
* [label](#label)
* [default](#default)
* [srclang](#srclang)
* [Text Tracks from Another Domain](#text-tracks-from-another-domain)
* [Working with Text Tracks](#working-with-text-tracks)
* [Showing Tracks Programmatically](#showing-tracks-programmatically)
* [Listen for a Cue Becoming Active](#listen-for-a-cue-becoming-active)
* [Emulated Text Tracks](#emulated-text-tracks)
* [Text Track Settings](#text-track-settings)
* [Text Track Precedence](#text-track-precedence)
* [API](#api)
* [Remote Text Tracks](#remote-text-tracks)
* [Text Tracks](#text-tracks-1)
## A Note on "Remote" Text Tracks
Video.js refers to so-called "remote" text tracks. This is a convenient term for tracks that have an associated `<track>` element rather than those that do not.
Either can be created programmatically, but _only remote text tracks can be removed from a player._ For that reason, we recommend _only_ using remote text tracks.
## Creating the Text File
Timed text requires a text file in [WebVTT](http://dev.w3.org/html5/webvtt/) format. This format defines a list of "cues" that have a start time, an end time, and text to display. [Microsoft has a builder](https://dev.modern.ie/testdrive/demos/captionmaker/) that can help you get started on the file.
> **Note:** When creating captions, there are additional [caption formatting techniques](http://www.theneitherworld.com/mcpoodle/SCC_TOOLS/DOCS/SCC_FORMAT.HTML#style) to make captions more meaningful, like brackets around sound effects (e.g. `[ birds chirping ]`).
>
> For a more in depth style guide for captioning, see the [Captioning Key](http://www.dcmp.org/captioningkey/), but keep in mind not all features are supported by WebVTT or (more likely) the Video.js WebVTT implementation.
## Adding Text Tracks to Video.js
Once you have your WebVTT files created, you can add them to your `video` element using the `track` tag. Similar to `source` elements, `track` elements should be added as children of the `video` element:
```html
<video
class="video-js"
controls
preload="auto"
width="640"
height="264"
data-setup='{}'>
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
<track kind="captions" src="//example.com/path/to/captions.vtt" srclang="en" label="English" default>
</video>
```
Video.js will automatically read `track` elements from the `video` element. Tracks (remote and non-remote) can also be added programmatically.
### `track` Attributes
#### `kind`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#text-track-kind)
One of the track types supported by Video.js:
* `"subtitles"` (default): Translations of the dialogue in the video for when audio is available but not understood. Subtitles are shown over the video.
* `"captions"`: Transcription of the dialogue, sound effects, musical cues, and other audio information for viewer who are deaf/hard of hearing, or the video is muted. Captions are also shown over the video.
* `"chapters"`: Chapter titles that are used to create navigation within the video. Typically, these are in the form of a list of chapters that the viewer can use to navigate the video.
* `"descriptions"`: Text descriptions of the action in the content for when the video portion isn't available or because the viewer is blind or not using a screen. Descriptions are read by a screen reader or turned into a separate audio track.
* `"metadata"`: Tracks that have data meant for JavaScript to parse and do something with. These aren't shown to the user.
#### `label`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#text-track-label)
Short descriptive text for the track that will used in the user interface. For example, in a menu for selecting a captions language.
#### `default`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-track-default)
The boolean `default` attribute can be used to indicate that a track's mode should start as `"showing"`. Otherwise, the viewer would need to select their language from a captions or subtitles menu.
> **Note:** For chapters, `default` is required if you want the chapters menu to show.
#### `srclang`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-track-srclang)
The valid [BCP 47](https://tools.ietf.org/html/bcp47) code for the language of the text track, e.g. `"en"` for English or `"es"` for Spanish.
For supported language translations, please see the [languages folder (/lang)](https://github.com/videojs/video.js/tree/master/lang) folder located in the Video.js root and refer to the [languages guide](/docs/guides/languages.md) for more information on languages in Video.js.
### Text Tracks from Another Domain
Because Video.js loads the text track file via JavaScript, the [same-origin policy](http://en.wikipedia.org/wiki/Same_origin_policy) applies. If you'd like to have a player served from one domain, but the text track served from another, you'll need to [enable CORS](http://enable-cors.org/) on the server that is serving your text tracks.
In addition to enabling CORS, you will need to add the [`crossorigin` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) to the video element itself. This attribute has two possible values `"anonymous"` and `"use-credentials"`. Most users will want to use `"anonymous"` with cross-origin tracks:
```html
<video class="video-js" crossorigin="anonymous">
<source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
<track src="//example.com/oceans.vtt" kind="captions" srclang="en" label="English">
</video>
```
One thing to be aware of is that the video files themselves will _also_ need CORS headers. This is because some browsers apply the `crossorigin` attribute to the video source itself and not just the tracks. This is considered a [security concern by the spec](https://html.spec.whatwg.org/multipage/embedded-content.html#security-and-privacy-considerations).
## Working with Text Tracks
### Showing Tracks Programmatically
Certain use cases call for turning captions on and off programmatically rather than forcing the user to do so themselves. This can be easily achieved by modifying the `mode` property of the text tracks.
The `mode` can be one of three values `"disabled"`, `"hidden"`, and `"showing"`. When a text track's `mode` is `"disabled"`, the track does not show on screen as the video is playing.
When the `mode` is set to `"showing"`, the track is visible to the viewer and updates while the video is playing.
```js
// Get all text tracks for the current player.
var tracks = player.textTracks();
for (var i = 0; i < tracks.length; i++) {
var track = tracks[i];
// Find the English captions track and mark it as "showing".
if (track.kind === 'captions' && track.language === 'en') {
track.mode = 'showing';
}
}
```
### Listen for a Cue Becoming Active
One of the supported values for `mode` is `"hidden"`. This `mode` means that the track will update as the video is playing, but it won't be visible to the viewer. This is most useful for tracks where `kind="metadata"`.
A common use case for metadata text tracks is to use them to trigger behaviors when their cues become active. For this purpose, tracks emit a `"cuechange"` event.
```js
// Get all text tracks for the current player.
var tracks = player.textTracks();
var metadataTrack;
for (var i = 0; i < tracks.length; i++) {
var track = tracks[i];
// Find the metadata track that's labeled "ads".
if (track.kind === 'metadata' && track.label === 'ads') {
track.mode = 'hidden';
// Store it for usage outside of the loop.
metadataTrack = track;
}
}
// Add a listener for the "cuechange" event and start ad playback.
metadataTrack.addEventListener('cuechange', function() {
player.ads.startLinearAdMode();
});
```
## Emulated Text Tracks
By default, Video.js will use native text tracks and fall back to emulated text tracks if the native functionality is broken, incomplete, or non-existent. The Flash tech will always use the emulated text track functionality.
The Video.js API and TextTrack objects were modeled after the W3C specification. Video.js uses [Mozilla's vtt.js](https://github.com/mozilla/vtt.js) library to parse and display emulated text tracks.
To disable native text track functionality and force Video.js to use emulated text tracks always, the `nativeTextTracks` option can be passed to a tech:
```js
// Create a player, passing `nativeTextTracks: false` to the HTML5 tech.
var player = videojs('myvideo', {
html5: {
nativeTextTracks: false
}
});
```
### Text Track Settings
When using emulated text tracks, captions will have an additional item in the menu called "Caption Settings". This allows the user to alter how captions are styled on screen.
This feature can be disabled by turning off the `TextTrackSettings` component and hiding the menu item.
```js
var player = videojs('myvideo', {
// Make the text track settings dialog not initialize.
textTrackSettings: false
});
```
```css
/* Hide the captions settings item from the captions menu. */
.vjs-texttrack-settings {
display: none;
}
```
## Text Track Precedence
In general, `"descriptions"` tracks are of lower precedence than `"captions"` and `"subtitles"`. What this mean for developers using Video.js?
* If you are using the `default` attribute, Video.js will choose the first track that is marked as `default` and turn it on. If there are multiple tracks marked `default`, it will turn on the first `"captions"` or `"subtitles"` track _before_ any `"descriptions"` tracks.
* This only applied to the emulated text track support, native text tracks behavior will change depending on the browser.
* If a track is selected from the menu, Video.js will turn off all the other tracks of the same kind. While this suggests Video.js supports both `"subtitles"` and `"captions"` being turned on simultaneously, this is currently not the case; Video.js only supports one track being displayed at a time.
* This means that for emulated text tracks, Video.js will display the first enabled `"subtitles"` or `"captions"` track.
* When native text tracks are supported, other tracks of the same kind will still be disabled, but it is possible that multiple text tracks are shown.
* If a `"descriptions"` track is selected and subsequently a `"subtitles"` or `"captions"` track is selected, the `"descriptions"` track is disabled and its menu button is also disabled.
* When enabling a track programmatically, Video.js performs minimal enforcement.
* For emulated text tracks, Video.js chooses the first track that's `"showing"` - again choosing `"subtitles"` or `"captions"` over `"descriptions"`.
* For native text tracks, this behavior depends on the browser. Some browsers will allow multiple text tracks, but others will disable all other tracks when a new one is selected.
## API
For more complete information, refer to the [Video.js API docs](http://docs.videojs.com/).
### Remote Text Tracks
As mentioned [above](#a-note-on-remote-text-tracks), remote text tracks represent the recommended API offered by Video.js as they can be removed.
* `Player#remoteTextTracks()`
* `Player#remoteTextTrackEls()`
* `Player#addRemoteTextTrack(Object options)`
Available options are the same as the [available `track` attributes](#track-attributes). And `language` is a supported option as an alias for the `srclang` attribute - either works here.
* `Player#removeRemoteTextTrack(HTMLTrackElement|TextTrack)`
### Text Tracks
It is generally recommended that you use _remote_ text tracks rather than these purely programmatic text tracks for the majority of use-cases.
* `Player#textTracks()`
* `Player#addTextTrack(String kind, [String label [, String language]])`
> **Note:** Non-remote text tracks are intended for _purely programmatic usage_ of tracks and have the important limitation that they _cannot be removed once created_.
>
> The standard `addTextTrack` does **not** have a corresponding `removeTextTrack` method; so, we actually discourage the use of this method!
* `TextTrackList()`
* `TextTrack()`
+21
Ver Arquivo
@@ -0,0 +1,21 @@
# Tracks
There are currently three types of tracks:
## Table of Contents
* [Audio Tracks](#audio-tracks)
* [Video Tracks](#video-tracks)
* [Text Tracks](#text-tracks)
## [Audio Tracks](/docs/guides/audio-tracks.md)
Audio tracks allow the selection of alternate audio for a video.
## [Video Tracks](/docs/guides/video-tracks.md)
Video tracks allow the selection of alternate video content.
## [Text Tracks](/docs/guides/text-tracks.md)
Text tracks are used to display subtitles and captions and add a menu for navigating between chapters in a video.
+106
Ver Arquivo
@@ -0,0 +1,106 @@
# Troubleshooting
## Table of Contents
* [Problems with media formats](#problems-with-media-formats)
* [Choosing a video format](#choosing-a-video-format)
* [I want to have a single source and don't care about live/adaptive streaming:](#i-want-to-have-a-single-source-and-dont-care-about-liveadaptive-streaming)
* [I need adaptive streaming or live streaming](#i-need-adaptive-streaming-or-live-streaming)
* [Make sure you are using formats that Video.js can play:](#make-sure-you-are-using-formats-that-videojs-can-play)
* [Make sure that the codec used in the file container is supported:](#make-sure-that-the-codec-used-in-the-file-container-is-supported)
* [If you are using Flash videos:](#if-you-are-using-flash-videos)
* [Problems when hosting media](#problems-when-hosting-media)
* [Problems with fullscreen](#problems-with-fullscreen)
* [Problems with playback](#problems-with-playback)
* [Video.js Errors](#videojs-errors)
* [vdata123456 errors](#vdata123456-errors)
## Problems with media formats
### Choosing a video format
#### I want to have a single source and don't care about live/adaptive streaming:
Most browsers now play MP4 with h264 video. If you want to have a single source, and neither live streaming
nor adaptive streaming is a consideration, MP4 with h264 video and acc audio is a good choice.
#### I need adaptive streaming or live streaming
Use HLS with [videojs-contrib-hls][hls] or
Use Dash with [videojs-contrib-dash][dash].
HLS is more convenient as mobile browsers have native support.
### Make sure you are using formats that Video.js can play:
* Does your browser/OS support the type of media that you are trying to play?
* Do you have a Video.js plugin that will add support for a media format to Video.js? For example:
* [videojs-youtube][youtube]
* [videojs-contrib-hls][hls]
* [videojs-contrib-dash][dash]
* Verify that you are using the correct [mime-type/content-type][media-types] for your videos.
This is used to determine if Video.js can play a certain type of media.
### Make sure that the codec used in the file container is supported:
* MP4 in browsers typically only supports h264 video and MP3 or AAC audio
* Some low end phones save video in 3GP format but give it an MP4 extension. These files will not play.
### If you are using Flash videos:
* Make sure that Flash is installed
* Make sure the Flash tech is included with Video.js (in `video.js >= v6.0.0` it won't be by default, see [videojs-flash][flash])
* Flash media include RTMP streams and FLV format media.
* SWF is not a media format
## Problems when hosting media
* Your server must support byte-range requests as Chrome and Safari rely on them:
* Most servers support this by default.
* If you are proxying the media files via a server side script (PHP), this script must implement ranges. PHP does not do this by default.
* The impact of not doing this ranges from seeking being broken to no playback at all (on iOS).
* Your server must return the correct [mime-type/content-type][media-types] for the media being sent.
* Your server must implement [CORS (cross-origin resource)][cors] headers if:
* You are using [videojs-contrib-hls][hls], [videojs-contrib-dash][dash] and your media is served from a different domain than your page.
* You are using [text tracks][text-tracks] (captions, subtitles, etc.) and they are being served from a different domain than your page.
## Problems with fullscreen
* If your player is in an iframe, the parent iframes must have the following attributes for fullscreen to be allowed:
* `allowfullscreen`
* `webkitallowfullscreen`
* `mozallowfullscreen`
## Problems with playback
* Make sure that the media host supports byte-range requests, this could be breaking playback. See [Problems when hosting media][hosting-media] for more info.
* If your media is taking a long time to start playback or the entire mediadownloads before playback:
* It is likely that metadata for the media has not been included at the start of the media. In MP4 terms this is called
the "moov atom". Many encoders are configured to do this by default, others may require you to choose
a "fast start" or "optimize for streaming" option.
## Video.js Errors
### vdata123456 errors
This error is thrown when an element that is associated with a component is removed
from the DOM but the event handlers associated with the element are not removed. This
is almost always due to event listeners not being disposed when dispose is called on
a component.
To fix this issue please make sure that all event listeners are cleaned up on dispose.
[hosting-media]: #problems-when-hosting-media
[text-tracks]: /docs/guides/text-tracks.md
[hls]: https://github.com/videojs/videojs-contrib-hls
[dash]: https://github.com/videojs/videojs-contrib-dash
[youtube]: https://github.com/videojs/videojs-youtube
[flash]: https://github.com/videojs/videojs-flash
[media-types]: http://www.iana.org/assignments/media-types/media-types.xhtml#video
[cors]: http://enable-cors.org/
+138
Ver Arquivo
@@ -0,0 +1,138 @@
# Video Tracks
> **Note:** While video tracks [are a standard][spec-videotrack], there are no compatible implementations at this time. This is an experimental technology!
Video tracks are a feature of HTML5 video for providing alternate video tracks to the user, so they can change the type of video they want to watch. Video.js offers a cross-browser implementation of video tracks.
## Table of Contents
* [Caveats](#caveats)
* [Working with Video Tracks](#working-with-video-tracks)
* [Add a Video Track to the Player](#add-a-video-track-to-the-player)
* [Listen for a Video Track Becoming Enabled](#listen-for-a-video-track-becoming-enabled)
* [Removing an Video Track from the Player](#removing-an-video-track-from-the-player)
* [API](#api)
* [videojs.VideoTrack](#videojsvideotrack)
* [id](#id)
* [kind](#kind)
* [label](#label)
* [language](#language)
* [selected](#selected)
## Caveats
* It is not possible to add video tracks through HTML like you can with text tracks. They must be added programmatically.
* Video.js only stores track representations. Switching video tracks for playback is _not handled by Video.js_ and must be handled elsewhere.
## Working with Video Tracks
### Add a Video Track to the Player
```js
// Create a player.
var player = videojs('my-player');
// Create a track object.
var track = new videojs.VideoTrack({
id: 'my-alternate-video-track',
kind: 'commentary',
label: 'Director\'s Commentary',
language: 'en'
});
// Add the track to the player's video track list.
player.videoTracks().addTrack(track);
```
### Listen for a Video Track Becoming Enabled
When a track is enabled or disabled on an `VideoTrackList`, a `change` event will be fired. You can listen for that event and do something with it.
> NOTE: The initial `VideoTrack` selection (usually the main track that is selected) should not fire a `change` event.
```js
// Get the current player's VideoTrackList object.
var videoTrackList = player.videoTracks();
// Listen to the "change" event.
videoTrackList.addEventListener('change', function() {
// Log the currently enabled VideoTrack label.
for (var i = 0; i < videoTrackList.length; i++) {
var track = videoTrackList[i];
if (track.enabled) {
videojs.log(track.label);
return;
}
}
});
```
### Removing an Video Track from the Player
Assuming a player already exists and has an video track that you want to remove, you might do something like the following:
```js
// Get the track we created in an earlier example.
var track = player.videoTracks().getTrackById('my-alternate-video-track');
// Remove it from the video track list.
player.videoTracks().removeTrack(track);
```
## API
For more complete information, refer to the [Video.js API docs](http://docs.videojs.com/), specifically:
* `Player#videoTracks`
* `VideoTrackList`
* `VideoTrack`
### `videojs.VideoTrack`
This class is based on [the `VideoTrack` standard][spec-videotrack] and can be used to create new video track objects.
Each property below is available as an option to the `VideoTrack` constructor.
#### `id`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-id)
A unique identifier for this track. Video.js will generate one if not given.
#### `kind`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind)
Video.js supports standard `kind` values for `VideoTracks`:
* `"alternative"`: A possible alternative to the main track.
* `"captions"`: The main video track with burned in captions
* `"main"`: The main video track.
* `"sign"`: The main video track with added sign language overlay.
* `"subtitles"`: The main video track with burned in subtitles.
* `"commentary"`: The main video track with burned in commentary.
* `""` (default): No explicit kind, or the kind given by the track's metadata is not recognized by the user agent.
#### `label`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-label)
The label for the track that will be shown to the user. For example, in a menu that lists the different captions available as alternate video tracks.
#### `language`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-language)
The valid [BCP 47](https://tools.ietf.org/html/bcp47) code for the language of the video track, e.g. `"en"` for English or `"es"` for Spanish.
For supported language translations, please see the [languages folder (/lang)](https://github.com/videojs/video.js/tree/master/lang) folder located in the Video.js root and refer to the [languages guide](/docs/guides/languages.md) for more information on languages in Video.js.
#### `selected`
> [standard definition](https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-selected)
Whether or not this track should be playing. Only one video track may be selected at a time.
[spec-videotrack]: https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack
+179
Ver Arquivo
@@ -0,0 +1,179 @@
# Usage examples for the functions on videojs
## Table of Contents
* [videojs()](#videojs)
* [options](#options)
* [getComponent()](#getcomponent)
* [registerComponent()](#registercomponent)
* [getTech()](#gettech)
* [registerTech()](#registertech)
* [extend()](#extend)
* [mergeOptions()](#mergeoptions)
* [bind()](#bind)
* [registerPlugin()](#plugin)
* [xhr()](#xhr)
## `videojs()`
```js
var myPlayer = videojs('my_video_id');
```
## `options`
```js
videojs.options.autoplay = true
// -> all players will autoplay by default
```
## `getComponent()`
```js
var VjsButton = videojs.getComponent('Button');
// Create a new instance of the component
var myButton = new VjsButton(myPlayer);
```
## `registerComponent()`
```js
// Get a component to subclass
var VjsButton = videojs.getComponent('Button');
// Subclass the component (see 'extend' doc for more info)
var MySpecialButton = videojs.extend(VjsButton, {});
// Register the new component
videojs.registerComponent('MySpecialButton', MySpecialButton);
// (optionally) add the new component as a default player child
myPlayer.addChild('MySpecialButton');
```
## `getTech()`
```js
var Html5 = videojs.getTech('Html5');
// Create a new instance of the component
var html5 = new Html5(options);
```
## `registerTech()`
```js
// get the Html5 Tech
var Html5 = videojs.getTech('Html5');
var MyTech = videojs.extend(Html5, {});
// Register the new Tech
videojs.registerTech('MyTech', MyTech);
var player = videojs('myplayer', {
techOrder: ['myTech', 'html5']
});
```
## `extend()`
```js
// Create a basic javascript 'class'
function MyClass(name) {
// Set a property at initialization
this.myName = name;
}
// Create an instance method
MyClass.prototype.sayMyName = function() {
alert(this.myName);
};
// Subclass the exisitng class and change the name
// when initializing
var MySubClass = videojs.extend(MyClass, {
constructor: function(name) {
// Call the super class constructor for the subclass
MyClass.call(this, name)
}
});
// Create an instance of the new sub class
var myInstance = new MySubClass('John');
myInstance.sayMyName(); // -> should alert "John"
```
## `mergeOptions()`
```js
var defaultOptions = {
foo: true,
bar: {
a: true,
b: [1,2,3]
}
};
var newOptions = {
foo: false,
bar: {
b: [4,5,6]
}
};
var result = videojs.mergeOptions(defaultOptions, newOptions);
// result.foo = false;
// result.bar.a = true;
// result.bar.b = [4,5,6];
```
## `bind()`
```js
var someClass = function() {};
var someObj = new someClass();
videojs.bind(someObj, function() {
// this will be the context of someObj here
});
```
## `registerPlugin()`
**See the [plugin guide](/docs/guides/plugins.md) in the docs for a more detailed example**
```js
// Make a plugin that alerts when the player plays
videojs.registerPlugin('myPlugin', function(myPluginOptions) {
myPluginOptions = myPluginOptions || {};
var player = this;
var alertText = myPluginOptions.text || 'Player is playing!'
player.on('play', function() {
alert(alertText);
});
});
// USAGE EXAMPLES
// EXAMPLE 1: New player with plugin options, call plugin immediately
var player1 = videojs('idOne', {
myPlugin: {
text: 'Custom text!'
}
});
// Click play
// --> Should alert 'Custom text!'
// EXAMPLE 3: New player, initialize plugin later
var player3 = videojs('idThree');
// Click play
// --> NO ALERT
// Click pause
// Initialize plugin using the plugin function on the player instance
player3.myPlugin({
text: 'Plugin added later!'
});
// Click play
// --> Should alert 'Plugin added later!'
```
## `xhr()`
```js
videojs.xhr({
body: someJSONString,
uri: "/foo",
headers: {
"Content-Type": "application/json"
}
}, function (err, resp, body) {
// check resp.statusCode
});
```
+37
Ver Arquivo
@@ -0,0 +1,37 @@
# Using Webpack with Video.js
Video.js, and the playback technologies such as videojs-contrib-hls all work in a Webpack based build environment. Here are several configuration changes specific to Webpack that will get you up and running.
## Video.js CSS:
To add the CSS that the player requires, simply add
`require('!style-loader!css-loader!video.js/dist/video-js.css')` to the file where the player is also included or initialized.
## Handling .eot files in Webpack
In addition to this, you may run into a problem where Webpack does not know how to load .eot files required for IE8 support by default. This can be solved by installing the file-loader and url-loader packages. Install them by running:
`npm install --save-dev file-loader url-loader`
With both packages installed, simply add the following to you webpack.config file in the 'loaders' section:
```
{
loader: 'url-loader?limit=100000',
test: /\.(png|woff|woff2|eot|ttf|svg)$/
}
```
## Using Webpack with videojs-contrib-hls
Import the HLS library with a line such as:
`import * as HLS from 'videojs-contrib-hls';`
In order to use the tech, we must also introduce webworkers with the package 'webworkify-webpack-dropin', run:
`npm install --save-dev webworkify-webpack-dropin`
To utilize this in your page, simply create an alias in your webpack.config.js file with:
```
resolve: {
alias: {
webworkify: 'webworkify-webpack-dropin'
}
}
```
Source maps that use the 'eval' tag are not compatible with webworkify, so this may need to be changed also. Source maps such as 'cheap-eval-module-source-map' should be changed to 'cheap-source-map' or anything else that fits your build without using 'eval' source maps.
+87 -21
Ver Arquivo
@@ -1,29 +1,95 @@
---
layout: docs
title: Docs
description: Video.JS Docs
body_id: docs
body_class: docs subpage
---
# [Video.js][vjs-website] Documentation
<h1>Start</h1>
There are two categories of docs: [Guides](/docs/guides/) and [API docs][api].
The Video.js documentation is here to help you setup and use the player. These docs can be found and contributed to in the [Video.js library repository](https://github.com/zencoder/video-js/tree/master/docs).
Guides explain general topics and use cases (e.g. setup). API docs are automatically generated from the codebase and give specific details about functions, properties, and events.
### [Setup](/docs/setup)
Check out the [5 second setup](/#setup) if you're just getting started. The setup documentation gives a deeper view of the additional methods you can use to trigger the player setup.
## Table of Contents
### [Options](/docs/options/)
There are a number of options that can be used to change how the player behaves, starting with the HTML5 media options like autoplay and preload, and expanding to Video.JS specific options.
* [Resolving Issues](#resolving-issues)
* [FAQ](#faq)
* [Troubleshooting](#troubleshooting)
* [Guides](#guides)
* [Getting Started](#getting-started)
* [Setup](#setup)
* [Player Workflows](#player-workflows)
* [Options](#options)
* [Tracks](#tracks)
* [Customizing](#customizing)
* [Skins](#skins)
* [Plugins](#plugins)
* [Components](#components)
* [Tech](#tech)
* [Languages](#languages)
* [Hooks](#hooks)
* [API Docs](#api-docs)
### [API](/docs/api/)
The Video.js API allows you to control the video through javascript or trigger event listeners, whether the video is playing through HTML5, flash, or another playback technology.
## Resolving Issues
### [Skins](/docs/skins/)
You can change the look of the player across playback technologies just by editing a CSS file. The skins documentation gives you a intro to how the HTML and CSS of the default skin is put together.
### [FAQ](/docs/guides/faq.md)
### [Tech](/docs/tech/)
A 'playback technology' is the term we're using to represent HTML5 video, Flash, and other video plugins, as well as other players like the YouTube player. Basically anything that has a unique API to audio or video. Additional playback technologies can be added relatively easily.
The frequently asked questions for Video.js.
### [Glossary](/docs/glossary/)
Some helpful definitions.
### [Troubleshooting](/docs/guides/troubleshooting.md)
Troubleshooting help for Video.js.
## [Guides](/docs/guides/)
### Getting Started
#### [Setup](/docs/guides/setup.md)
The setup guide covers all methods of setting up Video.js players.
#### [Player Workflows](/docs/guides/player-workflows.md)
After mastering the basics of setup move over to this guide for some more advanced player workflows.
#### [Options](/docs/guides/options.md)
There are a number of options that can be used to change how the player behaves, starting with the HTML5 media options like autoplay and preload, and expanding to Video.js specific options.
#### [Tracks](/docs/guides/tracks.md)
Tracks are used for displaying text information over a video, selecting different audio tracks for a video, or selecting different video tracks.
### Customizing
#### [Skins](/docs/guides/skins.md)
You can change the look of the player across playback technologies just by editing a CSS file. The skins documentation gives you a intro to how the HTML and CSS of the default skin is put together. For a list of skins you can check the [Video.js wiki][skins-list].
#### [Plugins](/docs/guides/plugins.md)
You can package up interesting Video.js customizations and reuse them elsewhere. Find out how to build your own plugin or [use one created by someone else][plugins-list].
#### [Components](/docs/guides/components.md)
Video.js is built around a collection of components. These are the building blocks of the player UI.
#### [Tech](/docs/guides/tech.md)
A "tech" is the shorthand we're using to describe any video playback technology - be it HTML5 video, Flash, . Basically anything that has a unique API to audio or video. Additional playback technologies can be added relatively easily.
#### [Languages](/docs/guides/languages.md)
Video.js has multi-language support! Follow this guide to see how you can contribute to and use languages.
#### [Hooks](/docs/guides/hooks.md)
A "hook" is functionality that wants to do when videojs creates a player. Right now only `beforesetup` and `setup` are supported. See the guide for more information on that.
## [API Docs][api]
You can refer to the [full list of API docs][api], but the most relevant API doc is for the [Player][api-player].
[plugins-list]: http://videojs.com/plugins
[skins-list]: https://github.com/videojs/video.js/wiki/Skins
[api]: http://docs.videojs.com/
[api-player]: http://docs.videojs.com/Player.html
[vjs-website]: http://videojs.com
-139
Ver Arquivo
@@ -1,139 +0,0 @@
---
layout: docs
title: Options
description: Player Options
body_id: options
body_class: docs subpage
---
Options
=======
Setting Options
---------------
The Video.js emebed code is simply an HTML5 video tag, so for many of the options you can use the standard tag attributes to set the options.
<code type="html">
<video controls autoplay preload="auto" ...>
</code>
Alternatively, you can use the data-setup attribute to provide options in the [JSON](http://json.org/example.html) format. This is also how you would set options that aren't standard to the video tag.
<code type="html">
<video data-setup='{ "controls": true, "autoplay": false, "preload": "auto" }'...>
</code>
Finally, if you're not using the data-setup attribute to trigger the player setup, you can pass in an object with the player options as the second argument in the javascript setup function.
<code type="javascript">
_V_("example_video_1", { "controls": true, "autoplay": false, "preload": "auto" });
</code>
Individual Options
------------------
> ### Note on Video Tag Attributes ###
> With HTML5 video tag attributes that can only be true or false (boolean), you simply include the attribute (no equals sign) to turn it on, or exclude it to turn it off. For example, to turn controls on:
>
> WRONG
> <code type="html">
>
> <video controls="true" ...>
>
> </code>
>
> RIGHT
> <code type="html">
>
> <video controls ...>
>
> </code>
>
> The biggest issue people run into is trying to set these values to false using false as the value (e.g. controls="false") which actually does the opposite and sets the value to true because the attribute is still included. If you need the attribute to include an equals sign for XHTML validation, you can set the attribute's value to the same as its name (e.g. controls="controls").
### controls ###
The controls option sets whether or not the player has controls that the user can interact with. Without controls the only way to start the video playing is with the autoplay attribute or through the API.
<code type="html">
<video controls ...>
or
{ "controls": true }
</code>
### autoplay ###
If autoplay is true, the video will start playing as soon as page is loaded (without any interaction from the user).
NOT SUPPORTED BY APPLE iOS DEVICES. Apple blocks the autoplay functionality in an effort to protect it's customers from unwillingly using a lot of their (often expensive) monthly data plans. A user touch/click is required to start the video in this case.
<code type="html">
<video autoplay ...>
or
{ "autoplay": true }
</code>
### preload ###
The preload attribute informs the browser whether or not the video data should begin downloading as soon as the video tag is loaded. The options are auto, metadata, and none.
'auto': Start loading the video immediately (if the browser agrees). Some mobile devices like iPhones and iPads will not preload the video in order to protect their users' bandwidth. This is why the value is called 'auto' and not something more final like 'true'.
'metadata': Load only the meta data of the video, which includes information like the duration and dimensions of the video.
'none': Don't preload any of the video data. This will wait until the user clicks play to begin downloading.
<code type="html">
<video preload ...>
or
{ "preload": "auto" }
</code>
### poster ###
The poster attribute sets the image that displays before the video begins playing. This is often a frame of the video or a custom title screen. As soon as the user clicks play the image will go away.
<code type="html">
<video poster="myPoster.jpg" ...>
or
{ "poster": "myPoster.jpg" }
</code>
### loop ###
The loop attribute causes the video to start over as soon as it ends. This could be used for a visual affect like clouds in the background.
<code type="html">
<video loop ...>
or
{ "loop": "true" }
</code>
### width ###
The width attribute sets the display width of the video.
<code type="html">
<video width="640" ...>
or
{ "width": 640 }
</code>
### height ###
The height attribute sets the display height of the video.
<code type="html">
<video height="480" ...>
or
{ "height": 480 }
</code>
-87
Ver Arquivo
@@ -1,87 +0,0 @@
---
layout: docs
title: Setup
description: Setup
body_id: setup
body_class: docs subpage
---
Setup
=====
Video.js is pretty easy to set up. It can take a matter of seconds to get the player up and working on your web page.
Step 1: Include the Video.js Javascript and CSS files in the head of your page.
------------------------------------------------------------------------------
You can download the Video.js source and host it on your own servers, or use the free CDN hosted version. It's often recommended now to put JavaScript before the end body tag (&lt;/body>) instead of the head (&lt;head>), but Video.js includes an 'HTML5 Shiv', which needs to be in the head for older IE versions to respect the video tag as a valid element.
> NOTE: If you're already using an HTML5 shiv like [Modernizr](http://modernizr.com/) you can include the Video.js JavaScript anywhere, however make sure your version of Modernizr includes the shiv for video.
### CDN Version ###
<code type="html">
<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/c/video.js"></script>
</code>
### Self Hosted. ###
With the self hosted option you'll also want to update the location of the video-js.swf file.
<code type="html">
<link href="http://example.com/path/to/video-js.css" rel="stylesheet">
<script src="http://example.com/path/to/video.js"></script>
<script>
_V_.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
</code>
Step 2: Add an HTML5 video tag to your page.
--------------------------------------------
With Video.js you just use an HTML5 video tag to embed a video. Video.js will then read the tag and make it work in all browsers, not just ones that support HTML5 video. Beyond the basic markup, Video.js needs a few extra pieces.
1. The 'data-setup' Atrribute tells Video.js to automatically set up the video when the page is ready, and read any options (in JSON format) from the attribute (see ['options'](http://videojs.com/docs/options/)). There are other methods for initializing the player, but this is the easiest.
2. The 'id' Attribute: Should be used and unique for every video on the same page.
3. The 'class' attribute contains two classes:
- 'video-js' applies styles that are required for Video.js functionality, like fullscreen and subtitles.
- 'vjs-default-skin' applies the default skin to the HTML controls, and can be removed or overridden to create your own controls design.
Otherwise include/exclude attributes, settings, sources, and tracks exactly as you would for HTML5 video.
<code type="html">
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup='{"example_option":true}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
</video>
</code>
Alternative Setup for Dynamically Loaded HTML
---------------------------------------------
If your web page or application loads the video tag dynamically (ajax, appendChild, etc.), so that it may not exist when the page loads, you'll want to manually set up the player instead of relying on the data-setup attribute. To do this, first remove the data-setup attribute from the tag so there's no confusion around when the player is initialized. Next, run the following javascript some time after the Video.js javascript library has loaded, and after the video tag has been loaded into the DOM.
<code type="javascript">
_V_("example_video_1", {}, function(){
// Player (this) is initialized and ready.
});
</code>
The first argument in the \_V_ function is the ID of your video tag. Replace it with your own.
The second argument is an options object. It allows you to set additional options like you can with the data-setup attribute.
The third argument is a 'ready' callback. Once Video.js has initialized it will call this function.
-33
Ver Arquivo
@@ -1,33 +0,0 @@
---
layout: docs
title: Skins
description: Controls Skins, Chrome, Design, look-and-feel.
body_id: skins
body_class: docs subpage
---
Skins
=====
The default Video.js skin is made using HTML and CSS, so there's no need to learn a complicated skinning language to update colors or even create an entirely new skin. New in version 3.0 is the use of a sprites image file (video-js.png). The image allows for a little bit more classy design, as well as compatibility with older versions of IE now that the HTML skin also shows when Flash is used for those browsers.
You can view the uncompressed CSS for the default skin by downloading the latest version of Video.js or viewing [the source version](https://github.com/zencoder/video-js/blob/master/design/video-js.css) on Github.
You can either override styles in the default skin:
{% highlight css %}
.vjs-default-skin .vjs-play-progress { background: #900; }
{% endhighlight %}
Or remove the 'vjs-default-skin' class from the video tag and create your own skin.
{% highlight html %}
<video class="video-js my-custom-skin" ...>
{% endhighlight %}
More custom skins will be available for download soon. If you have one you'd like to contribute back, please email it to <script type="text/javascript">eval(decodeURIComponent('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%73%6b%69%6e%73%40%76%69%64%65%6f%6a%73%2e%63%6f%6d%22%3e%73%6b%69%6e%73%40%76%69%64%65%6f%6a%73%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script>.
-46
Ver Arquivo
@@ -1,46 +0,0 @@
---
layout: docs
title: Playback Technology
description: Video.js Playback Technology
body_id: tech
body_class: docs subpage
---
Playback Technology ("Tech")
============================
Playback Technology refers to the specific browser or plugin technology used to play the video or audio. When using HTML5, the playback technology is the video or audio element. When using Flash, the playback technology is the specific Flash player used, e.g. Flowplayer, YouTube Player, video-js.swf, etc. (not just "Flash"). This could also include Silverlight, Quicktime, or any other plugin that will play back video in the browser, as long as there is an API wrapper written for it.
Essentially we're using HTML5 and plugins only as video decoders, and using HTML and JavaScript to create a consistent API and skinning experience across all of them.
Building an API Wrapper
-----------------------
We'll write a more complete guide on writing a wrapper soon, but for now the best resource is the [Video.js](https://github.com/zencoder/video-js/tree/master/src) source where you can see how both the HTML5 and video-js.swf API wrappers were created.
Required Methods
----------------
canPlayType
play
pause
currentTime
volume
duration
buffered
supportsFullScreen
Required Events
---------------
loadstart
play
pause
playing
ended
volumechange
durationchange
error
Optional Events (include if supported)
--------------------------------------
timeupdate
progress
enterFullScreen
exitFullScreen
-235
Ver Arquivo
@@ -1,235 +0,0 @@
---
layout: docs
title: HTML5 Video Text Tracks (Subtitles, Captions, Chapters)
description: Video.js support for captions, subtitles, and chapters through the use of the HTML5 video track element.
body_id: tracks
body_class: docs subpage
---
Tracks
======
Text Tracks are a function of HTML5 video for providing time triggered text to the viewer. Video.js makes tracks work across all browsers. There are currently five types of tracks:
- **Subtitles**: Translations of the dialogue in the video for when audio is available but not understood. Subtitles are shown over the video.
- **Captions**: Transcription of the dialogue, sound effects, musical cues, and other audio information for when the viewer is deaf/hard of hearing, or the video is muted. Captions are also shown over the video.
- **Chapters**: Chapter titles that are used to create navigation within the video. Typically they're in the form of a list of chapters that the viewer can click on to go to a specific chapter.
- **Descriptions** (not supported yet): Text descriptions of what's happening in the video for when the video portion isn't available, because the viewer is blind, not using a screen, or driving and about to crash because they're trying to enjoy a video while driving. Descriptions are read by a screen reader or turned into a separate audio track.
- **Metadata** (not supported yet): Tracks that have data meant for javascript to parse and do something with. These aren't shown to the user.
Creating the Text File
----------------------
Timed text requires a text file in [WebVTT](http://dev.w3.org/html5/webvtt/) format. This format defines a list of "cues" that have a start time, and end time, and text to display. [Microsoft has a builder](http://ie.microsoft.com/testdrive/Graphics/CaptionMaker/) that can help you get started on the file.
When creating captions, there's also additional (caption formatting techniques)[http://www.theneitherworld.com/mcpoodle/SCC_TOOLS/DOCS/SCC_FORMAT.HTML#style] that would be good to use, like brackets around sound effects. [ sound effect ]
Adding to Video.js
------------------
Once you have your WebVTT file created, you can add it to Video.js using the track trag. Put your track track tag after all the source elements, and before any fallback content.
<code type="html">
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
data-setup='{"example_option":true}'>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
<track kind="captions" src="http://example.com/path/to/captions.vtt" srclang="en" label="English" default>
</video>
</code>
Track Attributes
----------------
Additional settings for track tags.
### kind
One of the five track types listed above. Kind defaults to subtitles if no kind is included.
### label
The label for the track that will be show to the user, for example in a menu that list the different languages available for subtitles.
### default
The default attribute can be used to have a track default to showing. Otherwise the viewer would need to select their language from the captions or subtitles menu.
NOTE: For chapters, default is required if you want the chapters menu to show.
### srclang
The two-letter code (valid BCP 47 language tag) for the language of the text track, for example "en" for English. Here's a list of available language codes.
<table border="0" cellspacing="5" cellpadding="5">
<tr>
<td>
<table>
<tr><th>ab<th><td>Abkhazian</td></tr>
<tr><th>aa<th><td>Afar</td></tr>
<tr><th>af<th><td>Afrikaans</td></tr>
<tr><th>sq<th><td>Albanian</td></tr>
<tr><th>am<th><td>Amharic</td></tr>
<tr><th>ar<th><td>Arabic</td></tr>
<tr><th>an<th><td>Aragonese</td></tr>
<tr><th>hy<th><td>Armenian</td></tr>
<tr><th>as<th><td>Assamese</td></tr>
<tr><th>ay<th><td>Aymara</td></tr>
<tr><th>az<th><td>Azerbaijani</td></tr>
<tr><th>ba<th><td>Bashkir</td></tr>
<tr><th>eu<th><td>Basque</td></tr>
<tr><th>bn<th><td>Bengali (Bangla)</td></tr>
<tr><th>dz<th><td>Bhutani</td></tr>
<tr><th>bh<th><td>Bihari</td></tr>
<tr><th>bi<th><td>Bislama</td></tr>
<tr><th>br<th><td>Breton</td></tr>
<tr><th>bg<th><td>Bulgarian</td></tr>
<tr><th>my<th><td>Burmese</td></tr>
<tr><th>be<th><td>Byelorussian (Belarusian)</td></tr>
<tr><th>km<th><td>Cambodian</td></tr>
<tr><th>ca<th><td>Catalan</td></tr>
<tr><th>zh<th><td>Chinese (Simplified)</td></tr>
<tr><th>zh<th><td>Chinese (Traditional)</td></tr>
<tr><th>co<th><td>Corsican</td></tr>
<tr><th>hr<th><td>Croatian</td></tr>
<tr><th>cs<th><td>Czech</td></tr>
<tr><th>da<th><td>Danish</td></tr>
<tr><th>nl<th><td>Dutch</td></tr>
<tr><th>en<th><td>English</td></tr>
<tr><th>eo<th><td>Esperanto</td></tr>
<tr><th>et<th><td>Estonian</td></tr>
<tr><th>fo<th><td>Faeroese</td></tr>
<tr><th>fa<th><td>Farsi</td></tr>
<tr><th>fj<th><td>Fiji</td></tr>
<tr><th>fi<th><td>Finnish</td></tr>
</table>
</td>
<td>
<table>
<tr><th>fr<th><td>French</td></tr>
<tr><th>fy<th><td>Frisian</td></tr>
<tr><th>gl<th><td>Galician</td></tr>
<tr><th>gd<th><td>Gaelic (Scottish)</td></tr>
<tr><th>gv<th><td>Gaelic (Manx)</td></tr>
<tr><th>ka<th><td>Georgian</td></tr>
<tr><th>de<th><td>German</td></tr>
<tr><th>el<th><td>Greek</td></tr>
<tr><th>kl<th><td>Greenlandic</td></tr>
<tr><th>gn<th><td>Guarani</td></tr>
<tr><th>gu<th><td>Gujarati</td></tr>
<tr><th>ht<th><td>Haitian Creole</td></tr>
<tr><th>ha<th><td>Hausa</td></tr>
<tr><th>he<th><td>Hebrew</td></tr>
<tr><th>hi<th><td>Hindi</td></tr>
<tr><th>hu<th><td>Hungarian</td></tr>
<tr><th>is<th><td>Icelandic</td></tr>
<tr><th>io<th><td>Ido</td></tr>
<tr><th>id<th><td>Indonesian</td></tr>
<tr><th>ia<th><td>Interlingua</td></tr>
<tr><th>ie<th><td>Interlingue</td></tr>
<tr><th>iu<th><td>Inuktitut</td></tr>
<tr><th>ik<th><td>Inupiak</td></tr>
<tr><th>ga<th><td>Irish</td></tr>
<tr><th>it<th><td>Italian</td></tr>
<tr><th>ja<th><td>Japanese</td></tr>
<tr><th>jv<th><td>Javanese</td></tr>
<tr><th>kn<th><td>Kannada</td></tr>
<tr><th>ks<th><td>Kashmiri</td></tr>
<tr><th>kk<th><td>Kazakh</td></tr>
<tr><th>rw<th><td>Kinyarwanda (Ruanda)</td></tr>
<tr><th>ky<th><td>Kirghiz</td></tr>
<tr><th>rn<th><td>Kirundi (Rundi)</td></tr>
<tr><th>ko<th><td>Korean</td></tr>
<tr><th>ku<th><td>Kurdish</td></tr>
<tr><th>lo<th><td>Laothian</td></tr>
<tr><th>la<th><td>Latin</td></tr>
</table>
</td>
<td>
<table>
<tr><th>lv<th><td>Latvian (Lettish)</td></tr>
<tr><th>li<th><td>Limburgish ( Limburger)</td></tr>
<tr><th>ln<th><td>Lingala</td></tr>
<tr><th>lt<th><td>Lithuanian</td></tr>
<tr><th>mk<th><td>Macedonian</td></tr>
<tr><th>mg<th><td>Malagasy</td></tr>
<tr><th>ms<th><td>Malay</td></tr>
<tr><th>ml<th><td>Malayalam</td></tr>
<tr><th>mt<th><td>Maltese</td></tr>
<tr><th>mi<th><td>Maori</td></tr>
<tr><th>mr<th><td>Marathi</td></tr>
<tr><th>mo<th><td>Moldavian</td></tr>
<tr><th>mn<th><td>Mongolian</td></tr>
<tr><th>na<th><td>Nauru</td></tr>
<tr><th>ne<th><td>Nepali</td></tr>
<tr><th>no<th><td>Norwegian</td></tr>
<tr><th>oc<th><td>Occitan</td></tr>
<tr><th>or<th><td>Oriya</td></tr>
<tr><th>om<th><td>Oromo (Afan, Galla)</td></tr>
<tr><th>ps<th><td>Pashto (Pushto)</td></tr>
<tr><th>pl<th><td>Polish</td></tr>
<tr><th>pt<th><td>Portuguese</td></tr>
<tr><th>pa<th><td>Punjabi</td></tr>
<tr><th>qu<th><td>Quechua</td></tr>
<tr><th>rm<th><td>Rhaeto-Romance</td></tr>
<tr><th>ro<th><td>Romanian</td></tr>
<tr><th>ru<th><td>Russian</td></tr>
<tr><th>sm<th><td>Samoan</td></tr>
<tr><th>sg<th><td>Sangro</td></tr>
<tr><th>sa<th><td>Sanskrit</td></tr>
<tr><th>sr<th><td>Serbian</td></tr>
<tr><th>sh<th><td>Serbo-Croatian</td></tr>
<tr><th>st<th><td>Sesotho</td></tr>
<tr><th>tn<th><td>Setswana</td></tr>
<tr><th>sn<th><td>Shona</td></tr>
<tr><th>ii<th><td>Sichuan Yi</td></tr>
<tr><th>sd<th><td>Sindhi</td></tr>
</table>
</td>
<td>
<table>
<tr><th>si<th><td>Sinhalese</td></tr>
<tr><th>ss<th><td>Siswati</td></tr>
<tr><th>sk<th><td>Slovak</td></tr>
<tr><th>sl<th><td>Slovenian</td></tr>
<tr><th>so<th><td>Somali</td></tr>
<tr><th>es<th><td>Spanish</td></tr>
<tr><th>su<th><td>Sundanese</td></tr>
<tr><th>sw<th><td>Swahili (Kiswahili)</td></tr>
<tr><th>sv<th><td>Swedish</td></tr>
<tr><th>tl<th><td>Tagalog</td></tr>
<tr><th>tg<th><td>Tajik</td></tr>
<tr><th>ta<th><td>Tamil</td></tr>
<tr><th>tt<th><td>Tatar</td></tr>
<tr><th>te<th><td>Telugu</td></tr>
<tr><th>th<th><td>Thai</td></tr>
<tr><th>bo<th><td>Tibetan</td></tr>
<tr><th>ti<th><td>Tigrinya</td></tr>
<tr><th>to<th><td>Tonga</td></tr>
<tr><th>ts<th><td>Tsonga</td></tr>
<tr><th>tr<th><td>Turkish</td></tr>
<tr><th>tk<th><td>Turkmen</td></tr>
<tr><th>tw<th><td>Twi</td></tr>
<tr><th>ug<th><td>Uighur</td></tr>
<tr><th>uk<th><td>Ukrainian</td></tr>
<tr><th>ur<th><td>Urdu</td></tr>
<tr><th>uz<th><td>Uzbek</td></tr>
<tr><th>vi<th><td>Vietnamese</td></tr>
<tr><th>vo<th><td>Volapük</td></tr>
<tr><th>wa<th><td>Wallon</td></tr>
<tr><th>cy<th><td>Welsh</td></tr>
<tr><th>wo<th><td>Wolof</td></tr>
<tr><th>xh<th><td>Xhosa</td></tr>
<tr><th>yi<th><td>Yiddish</td></tr>
<tr><th>yo<th><td>Yoruba</td></tr>
<tr><th>zu<th><td>Zulu</td></tr>
</table>
</td>
</tr>
</table>

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais