Comparar commits
1498 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 8da5a18bc1 | |||
| 96b43f590b | |||
| e4f1e41a6d | |||
| fbffb2eaec | |||
| 0015ebf820 | |||
| 0a07c48ed4 | |||
| c9a6ce42f5 | |||
| a3535d11c8 | |||
| 13c97fa593 | |||
| af412dc547 | |||
| f9adf6c08b | |||
| 28cfb6dd11 | |||
| 33fbb12418 | |||
| 96b1710281 | |||
| bb28cd8ae9 | |||
| 23e7d8c490 | |||
| 6b74725f9f | |||
| 4831e299dd | |||
| 915ec54e55 | |||
| 537e43456b | |||
| 2867d9277b | |||
| 8d7fc4131e | |||
| 0e0472fbff | |||
| 8414412988 | |||
| ed6a832b29 | |||
| db189b73d7 | |||
| dbdc411dc2 | |||
| 94e899f810 | |||
| e2c8c125a2 | |||
| 0b26d83e99 | |||
| 8cc633edc4 | |||
| 3367b007a2 | |||
| feb7e26211 | |||
| 5a5b42f2a7 | |||
| f82a3d148f | |||
| 21051534f3 | |||
| f4bc3c12b5 | |||
| c1112b74fe | |||
| f77bcc95d0 | |||
| cb3d709237 | |||
| d9a0a4503c | |||
| 3ef88f8b80 | |||
| 80c6c16a2f | |||
| e12ca69306 | |||
| d8ba649549 | |||
| 0490728321 | |||
| dd1f2b5c25 | |||
| 47a307b773 | |||
| 050f23d913 | |||
| b027603a6a | |||
| a2f5430a5d | |||
| acd775f551 | |||
| 084bcf692c | |||
| fc7a166705 | |||
| 341c9c7700 | |||
| 5245335147 | |||
| 171ec1a274 | |||
| 29f66acb98 | |||
| d9cad36ade | |||
| 99b34e9691 | |||
| 2f0b9ee8ca | |||
| c8646aa02b | |||
| 58f76136e5 | |||
| 47f639fb41 | |||
| bb606cdcbd | |||
| 876e48547c | |||
| df02e7a709 | |||
| 9cdfb75187 | |||
| 8a17313a3b | |||
| 6317395e0c | |||
| b9f251650b | |||
| 0ffb27abb0 | |||
| e05931dd19 | |||
| 16f0179c07 | |||
| 81caccd154 | |||
| d448acd224 | |||
| c901fcee6b | |||
| 6977b0e3fe | |||
| b48797bf17 | |||
| dcf2a300ef | |||
| 088f47af2e | |||
| 984085a048 | |||
| 67840aabbe | |||
| 93f2f83723 | |||
| 867fec910f | |||
| aa4700b098 | |||
| b84be556a6 | |||
| 0f219b1f1d | |||
| 49cc73f980 | |||
| 8ad286a768 | |||
| 5f239d7cf1 | |||
| 35203f613f | |||
| 692608270e | |||
| d99ce79954 | |||
| 01a7e7509e | |||
| 09f182db60 | |||
| 7838fe2ec3 | |||
| 45d43ec904 | |||
| c61e9e49ab | |||
| 4cb14eb420 | |||
| 1d88ef066d | |||
| 16f2e4113a | |||
| 4424a06a3d | |||
| 08f03c160c | |||
| 565dba8671 | |||
| a528e44d9b | |||
| 996822ba68 | |||
| 359df7148b | |||
| c6bf2b847a | |||
| 44edb12700 | |||
| 5bb1a76c4e | |||
| 8f2bc92412 | |||
| e78e26b8a4 | |||
| 9e3a7b6159 | |||
| 0b7a2e41b3 | |||
| f225d4e68a | |||
| a601fbb83f | |||
| 69b89e51f4 | |||
| 8acd28c15a | |||
| b188781fa9 | |||
| 5ed0dc8adb | |||
| 72f77d77c9 | |||
| 7171ea8d42 | |||
| 3e19c91828 | |||
| 5f9095079e | |||
| 552d8cbda3 | |||
| 8d0de0fa51 | |||
| c4dbd2488b | |||
| c0d5f471bc | |||
| 3a40b10fa6 | |||
| 7dff83b2a4 | |||
| 6bbd6f1a65 | |||
| d9b5fbc60d | |||
| 385266338a | |||
| 0e1c424e48 | |||
| d1316a39ab | |||
| 210caea7f0 | |||
| 0da23c1d8d | |||
| 2627e86db5 | |||
| ea2e274a30 | |||
| f2fa8f8687 | |||
| cd800b02ea | |||
| 89d860fb84 | |||
| ed5ed0ded4 | |||
| 977eedda79 | |||
| 4e395b6b02 | |||
| a25c4c98f3 | |||
| b1e863677f | |||
| 98f241d614 | |||
| 5d754c911d | |||
| fa2f08ad66 | |||
| 0b32893612 | |||
| d0efd16b49 | |||
| c24a3a8173 | |||
| e6f5d6b585 | |||
| 42e33ca537 | |||
| 655e14a733 | |||
| 871dac9c3a | |||
| 6e25aef060 | |||
| 5f5357d535 | |||
| 86f23d39fd | |||
| 51f1863adc | |||
| ab88bcdde3 | |||
| 589cab7fa7 | |||
| c85b526a1c | |||
| 4598b38291 | |||
| 93e079718e | |||
| 34742e09a5 | |||
| 702fbe4d68 | |||
| d036f25681 | |||
| e98bc42500 | |||
| d47a8ab2dc | |||
| c89f645600 | |||
| 6f3826a7ef | |||
| d9524d4d35 | |||
| 1834d39c2f | |||
| 49698d2a8c | |||
| 9c28857247 | |||
| 40b6ad3050 | |||
| e58c2266de | |||
| 0832b89970 | |||
| 7ce59efa7d | |||
| 8c101e2b35 | |||
| aab9246253 | |||
| da09a44eda | |||
| 6beb0eb299 | |||
| a56781945a | |||
| 872459837b | |||
| 6354329a1b | |||
| cd6c568a03 | |||
| e225fbffc2 | |||
| a5dad5ade2 | |||
| 1d79c4a9e2 | |||
| c5321f4cbf | |||
| 60c86465f8 | |||
| 1f618d7b00 | |||
| 2de28927d7 | |||
| 8d9695b6ad | |||
| ad0820cfa3 | |||
| 992e5e63f5 | |||
| f6dca78c5e | |||
| 0b7cf586c2 | |||
| 1234faaf71 | |||
| f5b80c8ea9 | |||
| 2c10c7f310 | |||
| 81806d5725 | |||
| 9788112e76 | |||
| 42468e19be | |||
| ba6018d4ea | |||
| e121428565 | |||
| 2be7263ac3 | |||
| 3f8be868bd | |||
| 8fbe0a947f | |||
| 1f06f23ded | |||
| d072d9b371 | |||
| 61a00db7cb | |||
| a0b4293b82 | |||
| 24ad9841ac | |||
| ccedad44ef | |||
| 81000369ec | |||
| 651a33a145 | |||
| 51bae4d7cf | |||
| 968bd7432d | |||
| 24cdbdefff | |||
| 0c416bd286 | |||
| 4cb76873f4 | |||
| 99376bf396 | |||
| f7466af956 | |||
| 50bb4540a1 | |||
| f10d8d0cb3 | |||
| a3bfa8a73c | |||
| 63451a7526 | |||
| 4f250e8fc2 | |||
| 85b825a0dd | |||
| 517489513f | |||
| c9974657a9 | |||
| 313d18106b | |||
| 32aa9ed7e4 | |||
| 4d6c737a21 | |||
| 2e1d051144 | |||
| 2c74d9e355 | |||
| 849b85bb83 | |||
| 1503bf1268 | |||
| 4dadd01cf5 | |||
| 0bd7538fbc | |||
| 1b745e7b11 | |||
| a355f900b9 | |||
| 0341ec12ad | |||
| 0b5f41c466 | |||
| f7702f8f38 | |||
| 9179bdbdf6 | |||
| 1b057dfe85 | |||
| 658adb27ec | |||
| 4b58fad8bd | |||
| 3abc5c66df | |||
| 1f5a83dc23 | |||
| ccb6b35291 | |||
| 5624adb75d | |||
| 63e21bdadd | |||
| 4582e8a003 | |||
| 65b5a6e298 | |||
| 3fb786e271 | |||
| 0f6abfd210 | |||
| 608dad1299 | |||
| f151c3b67e | |||
| f492450a01 | |||
| b40865ad2b | |||
| 4d97dd4d29 | |||
| a584104b78 | |||
| 2e8b306578 | |||
| ea467b31b8 | |||
| e95e3e76b2 | |||
| 6a26358da2 | |||
| b35c8774b8 | |||
| fca885a62f | |||
| 336be2f8b7 | |||
| 98315b0e52 | |||
| 547e82d8e8 | |||
| 90c6890567 | |||
| c38778c296 | |||
| 473861ba38 | |||
| b27bbf16b1 | |||
| de39cfc5ab | |||
| 75e65c6585 | |||
| e10a2f4b03 | |||
| dfe751d8d2 | |||
| bfbd065e42 | |||
| f7d1289593 | |||
| 44fa9af226 | |||
| f3b5075bcd | |||
| 0fe811df2c | |||
| a02f0befbc | |||
| ceba633edb | |||
| 976ee6e30b | |||
| eca378c388 | |||
| 904bf0cabf | |||
| 3228821926 | |||
| 33de0085ae | |||
| d0e2ede27a | |||
| c4ed1451e0 | |||
| 395780a1b6 | |||
| b1055dce01 | |||
| cc6369c524 | |||
| ecca3a1b58 | |||
| 55143b261d | |||
| 76b5ffc7b5 | |||
| 70d9bbd145 | |||
| 79e58884de | |||
| 06f16d993e | |||
| 863f31546d | |||
| 51f92181e8 | |||
| 3a889ea4b5 | |||
| ac97de0bd4 | |||
| 20b2a78287 | |||
| 39ef157994 | |||
| 4ec82d647d | |||
| 293c9875d8 | |||
| fa58f51fd1 | |||
| 4a4e85912e | |||
| 8b97163250 | |||
| fecf3a0f8a | |||
| 4fd59c89db | |||
| e4f2f3bd96 | |||
| f1a8421ea7 | |||
| b41b12e0ab | |||
| cbbae8fabd | |||
| cd3f96978f | |||
| 564da36339 | |||
| c03e26c575 | |||
| 70fec0bc50 | |||
| ed790fdc38 | |||
| 589a0f86ee | |||
| c0673d2852 | |||
| 67c0d999cc | |||
| 1bf64890c0 | |||
| b528473655 | |||
| a02e3609ab | |||
| 9ed5be570d | |||
| 8c6c7d6e27 | |||
| 6905d0b005 | |||
| f80de2b1ac | |||
| 1f8e0cc48a | |||
| abca8913e1 | |||
| f97e84a41e | |||
| 2dfd315ac1 | |||
| 7d335e0989 | |||
| 1d0ae800b8 | |||
| cb6465e9d2 | |||
| 746f07a0ec | |||
| 4979d765f8 | |||
| d3d1a7fed7 | |||
| b2db8b9fb6 | |||
| fe65ffae65 | |||
| 8418a316d6 | |||
| 3bf415e522 | |||
| 5c4681506b | |||
| 8aa61d3b1a | |||
| aa8601f22f | |||
| a76b42d50c | |||
| 06bff98ca6 | |||
| 6a9e2e01d0 | |||
| 63392f25a7 | |||
| e330e7b978 | |||
| 57152ae62f | |||
| e5a8c835e1 | |||
| dd6ed45f8e | |||
| d11add5dc2 | |||
| 152e1ad808 | |||
| 39d9989589 | |||
| 75af988c86 | |||
| dd0752e6b0 | |||
| e0b1008225 | |||
| 3cabc75b83 | |||
| 456ee4e84f | |||
| 01ea3d1ae3 | |||
| 69dde46aa2 | |||
| 8be7810049 | |||
| b097016215 | |||
| 843a57765d | |||
| 4ad45ef9a8 | |||
| 4056c5f75c | |||
| d3d5d032fc | |||
| 52bbd468d5 | |||
| 1102452ca3 | |||
| dd9930b6c6 | |||
| a18768b938 | |||
| c98f775267 | |||
| 07f0483780 | |||
| 1eb416deef | |||
| d3655f79a1 | |||
| dbad385157 | |||
| ca5103befe | |||
| fa08d77766 | |||
| e5d4757e36 | |||
| 69348f4e0d | |||
| 8cc967e022 | |||
| d2de00cae1 | |||
| 3842890900 | |||
| 3e35935182 | |||
| dfd481037e | |||
| 3268d71577 | |||
| 7bcc2ba8f7 | |||
| 9de463e35c | |||
| 5bcf3b40e3 | |||
| d5061d7691 | |||
| 70d82a03db | |||
| f53f3dc36f | |||
| 590e731db4 | |||
| ccd6ed44b8 | |||
| f9316fcda0 | |||
| 440dfe92f8 | |||
| ba4ab80455 | |||
| db3e58b653 | |||
| 77a96bea6f | |||
| f73f69c66c | |||
| 3479a545aa | |||
| 46c79e2b19 | |||
| c2820e9e38 | |||
| c43863edbd | |||
| 004b1e8f7b | |||
| 2b79dacdbc | |||
| 5fc794f4e7 | |||
| 56be47b80a | |||
| 34822537f4 | |||
| 49fbea6f4c | |||
| b77e3c9ade | |||
| 99032bb2a7 | |||
| 8d33388899 | |||
| 26a78627f1 | |||
| b93dea70b8 | |||
| 0f1c5f22f0 | |||
| 56d4861bb0 | |||
| 1404121fee | |||
| dfd8408ac5 | |||
| 1bc8efc218 | |||
| 463ba4ea44 | |||
| d5605be8f5 | |||
| e4ddb4f769 | |||
| 20b46b9fb9 | |||
| 05b6bb2ae4 | |||
| ffe7c32899 | |||
| ee22d4ad5b | |||
| 0be74e51ff | |||
| 3857d78261 | |||
| 14c8705530 | |||
| 00cc335d64 | |||
| 20748ba7f7 | |||
| b3a2583e9e | |||
| 362821801e | |||
| 34df8767a2 | |||
| 5bf28c9e3d | |||
| 4803ac2674 | |||
| 86a11a01ab | |||
| fa6ad4929e | |||
| 6410105190 | |||
| 02cfee72d8 | |||
| 7eff3aca48 | |||
| 55a391b54a | |||
| 3a0f14728e | |||
| 040410122f | |||
| 42f00f2bfc | |||
| 56a9ef7571 | |||
| dac91a7b7b | |||
| 1c35bfafc2 | |||
| f03a91909e | |||
| f056a5b2e6 | |||
| 9df41f6562 | |||
| 965af8113f | |||
| d729547cbf | |||
| a6a4a0fd24 | |||
| 2e7821a467 | |||
| 9c33bd72c7 | |||
| c3c4046317 | |||
| 2af3047467 | |||
| 2bda7aabcd | |||
| 6ad6d17efb | |||
| 7ea3566a8c | |||
| 8d768ef0ab | |||
| 3bf01d9a41 | |||
| a88e311214 | |||
| fb5d0ce6ad | |||
| 7c169d417c | |||
| fdd133906c | |||
| a5758019e5 | |||
| 1ff361a825 | |||
| 27ee448e1f | |||
| 0ad43fd576 | |||
| 21edde8702 | |||
| 6b2dca32fc | |||
| 4007add5e5 | |||
| 7c5206eaf9 | |||
| 1bfe0b4fed | |||
| 5d550ffada | |||
| caf725a3d4 | |||
| 11d9d9afe8 | |||
| 69a4884880 | |||
| fbdf7ef041 | |||
| c4717ebed9 | |||
| b2311c7664 | |||
| 1ffb13a799 | |||
| dc083f8cf4 | |||
| a8ff970d4a | |||
| 2bf0be72f3 | |||
| 349ff89541 | |||
| 2fc8968002 | |||
| 652a44026f | |||
| ec53eda738 | |||
| 6128305cc3 | |||
| 0e63261db6 | |||
| c740115821 | |||
| d8e7d13fd0 | |||
| fbdb3f1ce2 | |||
| 4a62ebb042 | |||
| b87fb3ce32 | |||
| fd50bd0921 | |||
| db05a1b90d | |||
| e1c0f9fc35 | |||
| 7bbbf992a9 | |||
| 36956e20df | |||
| c5f5ea419e | |||
| b65bad8f20 | |||
| e5595b1e38 | |||
| de843affb7 | |||
| 9c99def186 | |||
| 793da0979a | |||
| 540258181c | |||
| 1480018cfb | |||
| 9b71d6b7d8 | |||
| 102c6fb197 | |||
| aa7f7709b1 | |||
| fd7b997ecd | |||
| 90b2f5d6ac | |||
| 87b8f8ec77 | |||
| 43a14291fa | |||
| 75aa65ebae | |||
| a392d6c933 | |||
| a6f4fb8ca7 | |||
| 90702a4f3e | |||
| 0b8bcbfba4 | |||
| d05967c561 | |||
| 3e1b76c9fb | |||
| b72f651a59 | |||
| f84632e057 | |||
| cc6c3daaed | |||
| cba2c54fb6 | |||
| ebf0aa1a06 | |||
| 915a6b90f2 | |||
| c7265e3d9d | |||
| 476b8a4cf8 | |||
| a131a00c4c | |||
| 54519da32c | |||
| b5968f13e2 | |||
| f7b1492332 | |||
| 9e953a2681 | |||
| f21f840afb | |||
| a40b0049ed | |||
| dcb24ce744 | |||
| bb9fde0f82 | |||
| 4fa6a942d9 | |||
| 013d59db76 | |||
| 8e84adb612 | |||
| e234375168 | |||
| 258687fee4 | |||
| 1eae8697e6 | |||
| 4cdca881d4 | |||
| cf25d3a857 | |||
| b4fbdc24d5 | |||
| ae0eec312c | |||
| 69738a86dc | |||
| f19d13b9bb | |||
| 94f33c8d43 | |||
| 4ac762cf48 | |||
| c62aa10637 | |||
| 232daaed54 | |||
| 4f52a47d7e | |||
| 493f4d5df4 | |||
| 621108ec03 | |||
| 65dddf7a0b | |||
| e1e69941a1 | |||
| a02ee27802 | |||
| 7f70f09621 | |||
| 6e29bccd01 | |||
| f3036dd528 | |||
| 44953cf99b | |||
| dfa791581f | |||
| 6e5fc8d687 | |||
| 0c9d53321f | |||
| f298d18023 | |||
| 2e689f85e5 | |||
| c9b53c5cfe | |||
| 3fd1a58357 | |||
| 7a9c4cc3be | |||
| ed76c5b709 | |||
| 6cc1b5191b | |||
| 634d8c39f2 | |||
| 4805e41ee0 | |||
| f69a229224 | |||
| 213c23d097 | |||
| 4296a7da2d | |||
| 12df63d7e7 | |||
| 6786b70da1 | |||
| bccea74d23 | |||
| cda6386e01 | |||
| 6b2e056ba6 | |||
| a0ce20c511 | |||
| 89c7b868f6 | |||
| 9dea6bed33 | |||
| 93ea3cee1c | |||
| cd48d03945 | |||
| 855e0ccedb | |||
| 0020ba15b9 | |||
| 9009593297 | |||
| 5b944877ae | |||
| 999dd60ff4 | |||
| ab84de6960 | |||
| 52e85e65fd | |||
| 20a4184ea7 | |||
| 3fdef79b9b | |||
| 06b8541fdb | |||
| 4003a4730d | |||
| ed8ccf599b | |||
| 972c8bd744 | |||
| 6e6c9fe885 | |||
| bbad7207a2 | |||
| 2a1f9f357f | |||
| 0b392fa9f5 | |||
| 2c6570a1a5 | |||
| 725fddbd66 | |||
| 550d44332b | |||
| 8e372d7ffd | |||
| 14c94561a9 | |||
| 8b0966c1b4 | |||
| 7bcb1d218c | |||
| 82f897b4fd | |||
| 9b0c6c66ea | |||
| bcf164fd99 | |||
| 5bd0338d2e | |||
| fbca5eae51 | |||
| dd24d17372 | |||
| 5bae2d88c3 | |||
| b14c2f73b3 | |||
| f27df10920 | |||
| f96803a806 | |||
| b2fe4c6292 | |||
| eb597d3660 | |||
| 52e6768526 | |||
| 4e5c28cc56 | |||
| 5c59849f30 | |||
| 4e9974165d | |||
| 3459381c2a | |||
| 1036338134 | |||
| 265ed0eca2 | |||
| 5e371b4625 | |||
| 3742afe607 | |||
| fd24c5c7a3 | |||
| fbb2197dfa | |||
| 19058302bd | |||
| 789c72945a | |||
| f980cdb1fb | |||
| 42fbd4c799 | |||
| b0a589a800 | |||
| e5ca608fc0 | |||
| cb0f93c27d | |||
| d5bbd80db9 | |||
| 1a11a8f256 | |||
| ec88f32702 | |||
| 2489cc1c10 | |||
| aac97d287a | |||
| 3c83fd364d | |||
| c8781cf51b | |||
| 8777b7f7a9 | |||
| 4bde5c8928 | |||
| fb3758dcab | |||
| 78e95e14b8 | |||
| 67c4eed937 | |||
| 300eeb759c | |||
| 2805bb0ad3 | |||
| 4e2b4a215c | |||
| b51d83090b | |||
| 0f4b19b94c | |||
| e8030ea88f | |||
| 1c17a67f39 | |||
| e8235c9022 | |||
| a3b12d9d03 | |||
| a8d1ef114a | |||
| 2ea2421e18 | |||
| 67e2c0ff76 | |||
| b2c3e2d759 | |||
| c939ab86ca | |||
| a96978b194 | |||
| fff41a9066 | |||
| 3780f8dbce | |||
| 24dff158fa | |||
| 9c1e410660 | |||
| 8cf9f19c11 | |||
| f0d500a633 | |||
| fc0730db98 | |||
| a67201f913 | |||
| a048468100 | |||
| 881be6f77d | |||
| c6d51faba3 | |||
| 169b4984e5 | |||
| 45b3601465 | |||
| e2c5462395 | |||
| 5545fc33e1 | |||
| 16d945c7ab | |||
| 716fc2dc2b | |||
| ad3e430cc6 | |||
| d7f2924fdc | |||
| bb5582abd3 | |||
| 9307844f79 | |||
| 9141a6256f | |||
| 2683c74c69 | |||
| c3139dcc1d | |||
| a859575e62 | |||
| aeecca728e | |||
| daa66b9183 | |||
| 3d16a4378c | |||
| d37e5c903f | |||
| 0469c5063c | |||
| dd9b4df727 | |||
| 0960a6108b | |||
| 68f32226db | |||
| c2e0c89d4c | |||
| c111d30b45 | |||
| 1f6c5179d8 | |||
| ea7bf36588 | |||
| 76e662a756 | |||
| 8a019ee046 | |||
| 2de84da25f | |||
| 899bc3cb76 | |||
| eaf8a8348f | |||
| 157dcbe9dd | |||
| 33e6630712 | |||
| 2e71201e23 | |||
| 1211e6f99d | |||
| 7642691296 | |||
| d6cf3c0d84 | |||
| caf44a4ad3 | |||
| fd2b9a7f38 | |||
| fc7cebe155 | |||
| bd6a9ff08c | |||
| 540152051f | |||
| 889ad338cc | |||
| 0c2dad9ef3 | |||
| 0919b77f31 | |||
| 758b9fda55 | |||
| 957687d449 | |||
| 768e40b169 | |||
| 5d859a92b5 | |||
| 1325722447 | |||
| 48a0049350 | |||
| 7432648e38 | |||
| f420c5bd5f | |||
| 423939857f | |||
| 7511bb606d | |||
| a12dd77057 | |||
| bcbe4f175a | |||
| 6958643678 | |||
| d55227668c | |||
| ce18a9af74 | |||
| a70b9e4957 | |||
| 38f1024ad3 | |||
| 6093d35b4c | |||
| 330aed03c6 | |||
| f27bdd27ca | |||
| 4199c3e5a9 | |||
| fdb34f3179 | |||
| f5117ae976 | |||
| 4b818d9ebf | |||
| b8cc047a2e | |||
| 906de96632 | |||
| d0a918404f | |||
| a35da3e995 | |||
| d63912dd35 | |||
| 1369e17dc9 | |||
| af02d158da | |||
| a6019d4207 | |||
| b848fd736d | |||
| b619404069 | |||
| 5e82f52a17 | |||
| 4711895d43 | |||
| 375cc1ecf9 | |||
| 0b75b0f843 | |||
| 2e3d2417fb | |||
| 33f7805c2b | |||
| 5e70bef2ab | |||
| 064ab1166b | |||
| 85730d7a1b | |||
| 18b6d25bc7 | |||
| 8273809a18 | |||
| 9bfe3fe5ae | |||
| ce97c24d79 | |||
| 9b7882e395 | |||
| 6c4eac47a0 | |||
| 13f154d4d6 | |||
| e526c9335d | |||
| 61aee3376b | |||
| 27d32d52c9 | |||
| ba7871dc5d | |||
| 675856aaf6 | |||
| 6040a61498 | |||
| 64f3b7774c | |||
| f47bf26e49 | |||
| e0a124890b | |||
| 585befce81 | |||
| d93bea98d7 | |||
| fd181aa9cd | |||
| 2a71d69c72 | |||
| c0518a1ff0 | |||
| bb52851aa4 | |||
| f53583e275 | |||
| a2710b60f1 | |||
| 2b57ada7df | |||
| d43831d6d0 | |||
| 72cb71c3a5 | |||
| ded72386ca | |||
| 757c592b4a | |||
| 737b989d5e | |||
| ae04900c54 | |||
| 518614ca57 | |||
| 0ef6b4af73 | |||
| ca1fdbb238 | |||
| 53d690c212 | |||
| 186ead6b10 | |||
| 4b64a92a2d | |||
| b65f2da65e | |||
| ee7c962494 | |||
| 05c18b7049 | |||
| 53ea60cd06 | |||
| cc5b2b838e | |||
| 25044e34b0 | |||
| 2219cd0f01 | |||
| 9dc4ed29f2 | |||
| 18965bb8d7 | |||
| 3a1239df1e | |||
| 49197e4f0e | |||
| 08da4c889f | |||
| 1ff1d76a8c | |||
| 5abff360cc | |||
| 18be3ef9ac | |||
| 864432d7d3 | |||
| 6c2efbf999 | |||
| eec1fc13fe | |||
| 54b175d988 | |||
| b9181ee55b | |||
| d385f8257f | |||
| 0ac8bcd389 | |||
| 88f59d7ad6 | |||
| 1c84f37fa0 | |||
| 7d4b26625f | |||
| 7ead5f708f | |||
| 16640274d7 | |||
| 5f7ae5a7ba | |||
| f3925c7364 | |||
| c90d7d36f6 | |||
| 6f069b765c | |||
| a6fa0dcc80 | |||
| e72d682028 | |||
| 599217f158 | |||
| e60f2eef5c | |||
| 7caa2fc1a7 | |||
| c0f91674e4 | |||
| e6897b6219 | |||
| 65e4b9f167 | |||
| 011861bbdb | |||
| df1944e9ff | |||
| 1aabc440b6 | |||
| c5bd01160a | |||
| 82aa55795e | |||
| 7c27add29d | |||
| 11b592ae01 | |||
| a582c833e3 | |||
| c4b4ebea4a | |||
| 1f33546f90 | |||
| 521f0eb941 | |||
| 22aa758067 | |||
| 537ae2b805 | |||
| fc0d37daec | |||
| 2a9f1cdaac | |||
| 87e25dd38e | |||
| 16321d6208 | |||
| 34a8d64c04 | |||
| 58c081f154 | |||
| 68ad48d8e8 | |||
| 49f58e0bbd | |||
| f716807852 | |||
| 6d65871cb0 | |||
| 055d81dc3a | |||
| 760eb308db | |||
| 03059c17d8 | |||
| 5ee97ea9a1 | |||
| 5761ab33bd | |||
| c19a3f3f48 | |||
| a888108e2c | |||
| a1eb8dd975 | |||
| 21f2d3c150 | |||
| dd0c7efa60 | |||
| ec61386f47 | |||
| 98edeccb3f | |||
| 342bdce748 | |||
| 7baa40220f | |||
| aaab1500c8 | |||
| 487c05628c | |||
| dfdbdbc9bb | |||
| f037818656 | |||
| f4ce62d4b1 | |||
| 0b4737d209 | |||
| 3cfbf94245 | |||
| e4a0d264d6 | |||
| 7f4e6eb432 | |||
| 692a0e9c09 | |||
| a7d6c350e7 | |||
| 9e34570c0f | |||
| c529f0898d | |||
| 3bf4afc831 | |||
| f3d7196a73 | |||
| 7ea1d8f544 | |||
| 6b612d8cdc | |||
| e4fbf27358 | |||
| 0af41818e0 | |||
| 1ffea6ce07 | |||
| bf8b62cc81 | |||
| f32ec15344 | |||
| 949bfa2d39 | |||
| bae224e4c4 | |||
| 64564c0dcd | |||
| 003c5ef38d | |||
| 7dc919c89e | |||
| 52667554dc | |||
| a0d8db9ed1 | |||
| d64205de79 | |||
| 527a33a252 | |||
| b3bbb17dd4 | |||
| 403afcf57d | |||
| 3c4c5a5aee | |||
| cfb688983b | |||
| bcf3f34dde | |||
| 4c42446d44 | |||
| 2619593691 | |||
| fa5116ffe7 | |||
| 49eeb600fd | |||
| 39fe83e1c0 | |||
| 8b5eb5089f | |||
| fa75d61cf8 | |||
| c5fb952935 | |||
| f00f354ab9 | |||
| 8afc2f919b | |||
| b2fbc8059b | |||
| 6921b552ef | |||
| aaa88c70f2 | |||
| 3da12eba29 | |||
| 14c64f197f | |||
| d10977ebf3 | |||
| f69881c276 | |||
| 116681771b | |||
| 11524ca2c3 | |||
| 624bf16070 | |||
| 0ddc344e76 | |||
| 781b4e59f5 | |||
| 0bc7ca0954 | |||
| 0ce57ae149 | |||
| f6ab92977e | |||
| 707d0e7660 | |||
| 951370dec9 | |||
| 5ef0da4ac6 | |||
| ae90526f2c | |||
| 540e7f0cb7 | |||
| cab595a5dd | |||
| 9217d5c2e7 | |||
| 34ad720626 | |||
| 97c7e4c759 | |||
| 738fa73949 | |||
| d3e03accce | |||
| edd2e11486 | |||
| 2466c76a57 | |||
| c794aeca34 | |||
| e17dd2c68d | |||
| 472988df58 | |||
| 6789c921f5 | |||
| b1c3bd4f84 | |||
| f6ba25ddf6 | |||
| 02949f5b91 | |||
| bb93a18ca8 | |||
| 3352346a74 | |||
| a97a002ed6 | |||
| fa635f835f | |||
| 2af481e0ec | |||
| 7debdea507 | |||
| a77e39f342 | |||
| da19fa3ead | |||
| d6d3dd1d4d | |||
| 926ccac6a7 | |||
| bdc89a0b24 | |||
| 392cbda095 | |||
| d5372545a2 | |||
| 813f28fb4d | |||
| 1378f566ab | |||
| ab520e9dd7 | |||
| 14ecc2fc89 | |||
| bdf6c54dbc | |||
| c0451fa674 | |||
| 5812d64154 | |||
| 3b60b9decd | |||
| b65eb0e5f3 | |||
| c9b1217e10 | |||
| 9e8a31065e | |||
| d24a9b48ac | |||
| 80147f0054 | |||
| fe6946d451 | |||
| b66ef806e5 | |||
| fc4d00c658 | |||
| 1448638285 | |||
| 0ee79afdfe | |||
| 8a05aa11a1 | |||
| 155781058e | |||
| 595a6131c1 | |||
| bb50466733 | |||
| 91aa06fe56 | |||
| 95173ebf7c | |||
| 6d78c95bb4 | |||
| 6116e3c3da | |||
| b2f6175a7b | |||
| 3720a2de12 | |||
| 39ae5178ee | |||
| e77f8c95d3 | |||
| 61a919d529 | |||
| 9d311640b1 | |||
| 17cb669047 | |||
| 71c0a72717 | |||
| aedaa17e3c | |||
| e3e836f41e | |||
| 7aeb288848 | |||
| 5edc3a5cbc | |||
| 3f9a2ca35b | |||
| 9a2bee9abf | |||
| d01de49ded | |||
| 1744d64142 | |||
| 956f3e03eb | |||
| 23ab370ab6 | |||
| bd66416b75 | |||
| 6bb92282c3 | |||
| f3ab261d5b | |||
| 38c394fc90 | |||
| a97bb5f74b | |||
| 4d05b6febb | |||
| 3189ec1a0b | |||
| b8f525cb81 | |||
| 46aa551e1e | |||
| 97c1f83dc7 | |||
| 0c3fb04acb | |||
| bad5130c8f | |||
| 8dfe0a4d06 | |||
| 047bd8f618 | |||
| d7f840a969 | |||
| 01567428b0 | |||
| 4235a3d8c1 | |||
| 4bb3a23331 | |||
| 7782eda524 | |||
| 92eac13caa | |||
| bcb69a0b23 | |||
| 3fd0c92c95 | |||
| a6718913be | |||
| 1df28ff311 | |||
| dbff62e3f0 | |||
| ef25557577 | |||
| 269f7b15c0 | |||
| adf4e507c1 | |||
| a5bc6884e2 | |||
| e7617bfdd4 | |||
| 27f0f789e0 | |||
| 3e5ef19212 | |||
| d96e008978 | |||
| 227700a236 | |||
| 923ce038f7 | |||
| 16eea0a1df | |||
| f4704ee74f | |||
| 8c9a4cc434 | |||
| f98012a471 | |||
| 65833f5231 | |||
| e8722ff522 | |||
| c1029eab16 | |||
| 46605739e2 | |||
| 31918fc46d | |||
| 3bafdeef51 | |||
| 2473d5bf7a | |||
| 4242fe3857 | |||
| da45dad831 | |||
| 2fca84435d | |||
| d8f721abf5 | |||
| 9d258742c5 | |||
| 35d7258973 | |||
| 4e0c2b366d | |||
| aa8d50b219 | |||
| 95c29e684f | |||
| c7e35e51de | |||
| d784f9d0d9 | |||
| 6a097c0236 | |||
| efe25c0b13 | |||
| 06e141df58 | |||
| 848cfd6620 | |||
| d3af3e0e07 | |||
| af50b8ee29 | |||
| aeb4aa3ada | |||
| 825de43819 | |||
| 066438670f | |||
| e8d36e0fab | |||
| a9ad77aa00 | |||
| b3b42e3822 | |||
| 88403221a9 | |||
| 2079af7320 | |||
| c8bd862e3e | |||
| 74c73969cd | |||
| c286c826db | |||
| 33f388366d | |||
| f363523551 | |||
| e87fe460cc | |||
| 2c12ed98a7 | |||
| 87ee28e6cb | |||
| e39557e790 | |||
| e2a1cac136 | |||
| d21019ad78 | |||
| 94ec725a66 | |||
| 75bd76f55c | |||
| fef6282d55 | |||
| f1d2aef048 | |||
| d1d97bfe9b | |||
| 0a1d4b2645 | |||
| 0c856ce9a4 | |||
| 817253b74f | |||
| f86e073f03 | |||
| 86c3f94c87 | |||
| d48d6cf99d | |||
| 0f2aadcfcd | |||
| 4daf1f173c | |||
| 61eb54afa8 | |||
| 799f1762ff | |||
| 416ee1b2a0 | |||
| 204bb84ecb | |||
| 5381f70d1c | |||
| 252ad3f466 | |||
| 80d7b5014a | |||
| 32e4d4c9d0 | |||
| d289a336b8 | |||
| e35083bc28 | |||
| 4051a9cbee | |||
| 26f6f4b0ea | |||
| cbefd37acf | |||
| 378d6ef482 | |||
| 02155c6b13 | |||
| 7a4c602be0 | |||
| b7cc2a8a4c | |||
| e7b1098563 | |||
| a64a5e27cf | |||
| bdeaae1c92 | |||
| e2b2d14f48 | |||
| 96c274de63 | |||
| 6244c39129 | |||
| e4b269e294 | |||
| f3166ad082 | |||
| 54609dc3f5 | |||
| 2005fe2136 | |||
| efd4822c6b | |||
| d538debb1d | |||
| 48230ea1a1 | |||
| 661cbd1eb0 | |||
| fe2b702e32 | |||
| d47435a18f | |||
| 7c772fbf3e | |||
| 4116d9ec14 | |||
| f155814cd9 | |||
| a0f929dd57 | |||
| cc5e515360 | |||
| 2e26703162 | |||
| 0ad8abfef1 | |||
| 61883ab4e2 | |||
| 0f854c751b | |||
| 5b133823e5 | |||
| 3e19d7621a | |||
| b0a6cf335a | |||
| ed78764379 | |||
| 7f44942c9b | |||
| e9da3350d4 | |||
| c6c49ac580 | |||
| 4b0db76d77 | |||
| 6b28ba268a | |||
| 5146c1fa4a | |||
| b98d719564 | |||
| 7aefee5d7d | |||
| c1e623bed7 | |||
| 333db84510 | |||
| 8f40fa4548 | |||
| 9c282811e1 | |||
| d68f5a93a5 | |||
| 1dd8a15655 | |||
| 3336f1fe02 | |||
| 4fe74d52a9 | |||
| 0d58df8edb | |||
| f135b97ce0 | |||
| 051657334f | |||
| 7be94c3882 | |||
| 4f66e09595 | |||
| 1bb2c7ed57 | |||
| 1e781d14df | |||
| ee9a18d5ac | |||
| ce0c4b12d2 | |||
| 9e5dce5c14 | |||
| 88dca0a2e2 | |||
| 8aa2eb4719 | |||
| ecaf748e4f | |||
| c9cad9ca1e | |||
| 956aaa0425 | |||
| e062dec423 | |||
| 8b720ce45a | |||
| 5ab2504e90 | |||
| 310a0630c9 | |||
| 468b07c651 | |||
| 12c830049e | |||
| fe4c477da6 | |||
| 24125bbb63 | |||
| e73bb869ce | |||
| 5c907e1ce2 | |||
| 8c59405d86 | |||
| 7ade43d91d | |||
| 49656ab013 | |||
| 6f83d0b00e | |||
| 71ba5bb062 | |||
| 11e7028c25 | |||
| 7926c2d9a6 | |||
| 2b1291816f | |||
| 4d9d06e1c9 | |||
| 0fc76451f9 | |||
| 3cb41c7786 | |||
| 2d5ca1ebc2 | |||
| 1b45195f9d | |||
| 04c893208e | |||
| 453402a912 | |||
| 849521ee66 | |||
| ef1b239b2a | |||
| 4521c70173 | |||
| 28a4d29934 | |||
| 9975ed407a | |||
| 75a23135e6 | |||
| 4d2267c1bc | |||
| 44d6cac1b7 | |||
| e5294848f9 | |||
| 26c8d3f92c | |||
| a7d624affe | |||
| 4b254a07df | |||
| 07cd9800e8 | |||
| b23eba7c8c | |||
| 70ed4fcbb2 | |||
| d0f8b3e87e | |||
| 7184cb4b49 | |||
| c597605afd | |||
| d73bfb80b7 | |||
| 0dd210dcf3 | |||
| e25a9f3207 | |||
| e4b4906198 | |||
| 4dd776c334 | |||
| a8afe9c673 | |||
| 6a1c0bdd0c | |||
| 65767f77f8 | |||
| f5acb89d70 | |||
| f152c6a4be | |||
| cb78815e80 | |||
| ff1c9c5cf0 | |||
| dd8c25e8d5 | |||
| 1cd81ad258 | |||
| bf7dd32ff6 | |||
| 9088dfffc9 | |||
| a54d9cdae6 | |||
| 51b836d6be | |||
| 0a2167468c | |||
| 02eb2d3ee3 | |||
| 2825f74ba8 | |||
| 59a733f14e | |||
| 0dae44988e | |||
| dfe4543a0d | |||
| 0f38d27dcc | |||
| 024b031646 | |||
| ec1bea41a5 | |||
| b1f9450bb3 | |||
| 950072ad97 | |||
| 491b9b232b | |||
| a106924e6d | |||
| 6b73df950e | |||
| 7b23576afc | |||
| 166cc9c1ef | |||
| 81e49d4361 | |||
| 090bc0d12a | |||
| beb329ad71 | |||
| 2066474096 | |||
| 432b60f22c | |||
| 15a0d7dbb6 | |||
| c23ca5200c | |||
| 522f45f458 | |||
| df57b302da | |||
| 2aa09fd15a | |||
| 09f81c0c6c | |||
| 75b2171051 | |||
| 3248bc1258 | |||
| 1cab78347d | |||
| 0cbe95d615 | |||
| dcc19dcf04 | |||
| f3fcf9b5b8 | |||
| ef0d63b5ba | |||
| 7efcbd5e19 | |||
| c69290c39f | |||
| cb9447b2c3 | |||
| 875fc2ff32 | |||
| 1f06a0c6b3 | |||
| 2f716cddf4 | |||
| d653c25025 | |||
| c2abbb7568 | |||
| 9662736766 | |||
| b6c902a7b3 | |||
| 5308dd41d2 | |||
| 4e216cdddb | |||
| 847472f286 | |||
| df7c91ad92 | |||
| 10c3e46e95 | |||
| 48f6332f78 | |||
| d9bb81018b | |||
| 4e0128bb3d | |||
| 6c1adb79d2 | |||
| 7ee2f864b3 | |||
| c85d94a2ce | |||
| 4c6a12898b | |||
| 6e3eb5075e | |||
| f318eb9f1f | |||
| 9bfbceb047 | |||
| c56e6ed37c | |||
| 7a8d808b0e | |||
| 124c62fe24 | |||
| ba20239147 | |||
| 0c4ab0b449 | |||
| e0794cf4b4 | |||
| 3203c2c5ed | |||
| 9ec2556a7c | |||
| d3efe4b04c | |||
| f35ae5c44f | |||
| 14193c4308 | |||
| 1bef68a60b | |||
| e37e870d42 | |||
| c5a8cff129 | |||
| 61bc016637 | |||
| acf41c4882 | |||
| da3550a6d8 | |||
| 3640623147 | |||
| a6198efaca | |||
| f07caa2b97 | |||
| 2662ad9c96 | |||
| 13dbf23c3c | |||
| b2098e0efe | |||
| faea65a44e | |||
| 50adf355af | |||
| 1d05177627 | |||
| a94259cc73 | |||
| a49213e20c | |||
| 7b73c2725e | |||
| 8f53e514de | |||
| c39dd5567e | |||
| 8e9db2d662 | |||
| 52c577995c | |||
| efe7a12ccb | |||
| f146ebb179 | |||
| 72bf48cf36 | |||
| e6ecbfe824 | |||
| 0ccb6dd156 | |||
| 62b4f799b9 | |||
| bd789b8613 | |||
| 4772e4680b | |||
| 26cc24c59d | |||
| 4bc269992e | |||
| 07351ada80 | |||
| acb4a43d8a | |||
| 75dd7c5a3c | |||
| f515ac0236 | |||
| 6418531d0c | |||
| a04932eaf9 | |||
| 96f6c2388a | |||
| 8721202ec1 | |||
| 92d16d6409 | |||
| 7c2ae3f68c | |||
| 7ab3d190f2 | |||
| 29668ec45b | |||
| bd18f5b25f | |||
| 5a6fa37623 | |||
| e520e1eba4 | |||
| 2f68bfc7c1 | |||
| 57c576f96c | |||
| acf6d67e0d | |||
| d47f78f5d1 | |||
| 02de927043 | |||
| 20e2d4e984 | |||
| ff9165b7da | |||
| f7a72b1f20 | |||
| 9030a5655e | |||
| 699c476575 | |||
| b5b0f42888 | |||
| 15544c3d05 | |||
| 8010b77eb3 | |||
| 15fab6df81 | |||
| 89fb86bff7 | |||
| 75ff27307d | |||
| 1d972a0686 | |||
| 334ff59ff0 | |||
| a809954495 | |||
| 7936d7967d | |||
| aa64669ca3 | |||
| a726b07538 | |||
| ca96297ef9 | |||
| a38ce63474 | |||
| c8ee76b80e | |||
| 1eca8add85 | |||
| 2b1bb60f7e | |||
| 5aa1ff59b3 | |||
| 59af460ad4 | |||
| a449cb043a | |||
| 9d424c61f4 | |||
| 91da153c02 | |||
| 150facab44 | |||
| 3716f3b1f0 | |||
| 918ee040e1 | |||
| 1c606779c3 | |||
| fdf7f4f228 | |||
| c82611d506 | |||
| ed8ed4dd94 | |||
| 9f647ef081 | |||
| c616695e4d | |||
| 52751a0d67 | |||
| ffd308e305 | |||
| b4a07a3d9d | |||
| db97df69dc | |||
| 8f45f93c84 | |||
| b6667dfaf6 | |||
| 23fc4cca35 | |||
| 00a043f1e1 | |||
| 9abe53a32e | |||
| 8e5cf7a69d | |||
| fd39878f8b | |||
| 1ddef27903 | |||
| 19a33cc7c7 | |||
| 02a1057ff4 | |||
| a040ce61ad | |||
| 042076043b | |||
| 38d119e75d | |||
| 93c6645744 | |||
| 85c6b46ec8 | |||
| 1e199da117 | |||
| 3a40dcd883 | |||
| afc39f711f | |||
| 8a728a80ac | |||
| d932cffd50 | |||
| 6fe5513f30 | |||
| 138b1381c2 | |||
| 60d389e1f8 | |||
| 93e3b38132 | |||
| b02f879bf3 | |||
| 9997d0a7ef | |||
| 3dd0b1d234 | |||
| d27c3102e9 | |||
| d5d97bd64f | |||
| 0ddf8af452 | |||
| f6bd819c5c | |||
| 21cd77358a | |||
| 847e392e0c | |||
| 8799984a8c | |||
| 0c4c30a3bd | |||
| 4db3dba068 | |||
| 46731c40c3 | |||
| 5bc5c40f8a | |||
| d5fe1c40d8 | |||
| 6251acdf56 | |||
| 0f21f86521 | |||
| ed5ac285c3 | |||
| 880be64f48 | |||
| 753ce48e21 | |||
| 6b4d811b2f | |||
| baac2af4ab | |||
| 731ec4fa0b | |||
| a7dd81f82f | |||
| d4168cd2b6 | |||
| 1f23529cf0 | |||
| fe36ae172d | |||
| a6a443bac3 | |||
| b3d4ed6459 | |||
| f4ac570297 | |||
| c9bba46846 | |||
| d40c33cf65 | |||
| 30949a3c83 | |||
| 5dbb9aabc7 | |||
| dc9934b765 | |||
| bf804d5571 | |||
| c17d5890d0 | |||
| 80802e68d8 | |||
| ff957fa9f5 |
@@ -1,21 +0,0 @@
|
||||
/*
|
||||
Bunyip is a tool for multi-browser/device testing
|
||||
https://github.com/ryanseddon/bunyip
|
||||
It uses a few service under the hood including:
|
||||
Browsertack - http://browserstack.com
|
||||
Pagekite https://pagekite.net
|
||||
You'll need accounts at both to use bunyip
|
||||
You'll also need to download and install pagekite.py
|
||||
*/
|
||||
var config = {
|
||||
"browserstack": {
|
||||
"username": "your-browserstack-email@example.com",
|
||||
"password": "your browserstack password",
|
||||
"timeout": 300
|
||||
},
|
||||
"port": 9000,
|
||||
"tunnellink": "your-subdomain.pagekite.me",
|
||||
"tunnel": "pagekite.py <port> your-subdomain.pagekite.me"
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
+13
-1
@@ -1,6 +1,7 @@
|
||||
.DS_Store
|
||||
dist/*
|
||||
build/files/*
|
||||
build/temp/*
|
||||
docs/api/*
|
||||
dev.html
|
||||
projects
|
||||
.zenflow-log
|
||||
@@ -18,3 +19,14 @@ sandbox/*
|
||||
*.swo
|
||||
|
||||
*.orig
|
||||
|
||||
*results.xml
|
||||
*.log
|
||||
|
||||
test/coverage/*
|
||||
.coveralls.yml
|
||||
.sass-cache
|
||||
|
||||
dist/*
|
||||
|
||||
.idea/
|
||||
|
||||
+13
-6
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"evil" : true,
|
||||
"validthis": true,
|
||||
"browser" : true,
|
||||
"node" : true,
|
||||
"debug" : true,
|
||||
"boss" : true,
|
||||
"expr" : true,
|
||||
@@ -11,16 +11,20 @@
|
||||
"trailing" : true,
|
||||
"undef" : true,
|
||||
"laxbreak" : true,
|
||||
"esnext" : true,
|
||||
"eqeqeq" : true,
|
||||
"predef" : [
|
||||
"_V_",
|
||||
"videojs",
|
||||
"vjs",
|
||||
"goog",
|
||||
"console",
|
||||
|
||||
"require",
|
||||
"require",
|
||||
"define",
|
||||
"module",
|
||||
"exports",
|
||||
"process",
|
||||
|
||||
"PlayerTest",
|
||||
"q",
|
||||
"asyncTest",
|
||||
"deepEqual",
|
||||
"equal",
|
||||
@@ -30,11 +34,14 @@
|
||||
"notEqual",
|
||||
"notStrictEqual",
|
||||
"ok",
|
||||
"throws",
|
||||
"QUnit",
|
||||
"raises",
|
||||
"start",
|
||||
"stop",
|
||||
"strictEqual",
|
||||
"test"
|
||||
"test",
|
||||
"throws",
|
||||
"sinon"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
# Exclude everything but the contents of the dist directory.
|
||||
**/*
|
||||
!dist/**
|
||||
!src/css/**
|
||||
+25
-1
@@ -1,3 +1,27 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.8
|
||||
- 0.12
|
||||
before_install:
|
||||
- export CHROME_BIN=chromium-browser
|
||||
- export DISPLAY=:99.0
|
||||
- sh -e /etc/init.d/xvfb start
|
||||
notifications:
|
||||
irc:
|
||||
channels:
|
||||
- chat.freenode.net#videojs
|
||||
use_notice: true
|
||||
on_success: never
|
||||
webhooks:
|
||||
- http://pam.videojs.com/savage/travis
|
||||
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
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
addons:
|
||||
firefox: latest
|
||||
|
||||
-10
@@ -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
|
||||
+740
-46
@@ -1,41 +1,741 @@
|
||||
* Added a plugins interface
|
||||
* Added automated test suite and support for Travis CI.
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
## HEAD (Unreleased)
|
||||
_(none)_
|
||||
|
||||
--------------------
|
||||
|
||||
## 5.8.5 (2016-03-17)
|
||||
* @gkatsev cleared vttjs script handlers on dispose. Fixed tests ([view](https://github.com/videojs/video.js/pull/3189))
|
||||
|
||||
## 5.8.4 (2016-03-17)
|
||||
* @gkatsev changed emulated tracks to in novtt to wait for vttjs to load or error before parsing ([view](https://github.com/videojs/video.js/pull/3181))
|
||||
|
||||
## 5.8.3 (2016-03-10)
|
||||
* @gkatsev fixed keyboard control of menus with titles. Fixes #3164 ([view](https://github.com/videojs/video.js/pull/3165))
|
||||
|
||||
## 5.8.2 (2016-03-09)
|
||||
* @gkatsev fixed chapters menu. Fixes #3062 ([view](https://github.com/videojs/video.js/pull/3163))
|
||||
|
||||
## 5.8.1 (2016-03-07)
|
||||
* @gkatsev updated videojs badges in the README ([view](https://github.com/videojs/video.js/pull/3134))
|
||||
* @BrandonOCasey converted remaining text-track modules to ES6 ([view](https://github.com/videojs/video.js/pull/3130))
|
||||
* @gkatsev cleared waiting/spinner on timeupdate. Fixes #3124 ([view](https://github.com/videojs/video.js/pull/3138))
|
||||
* @BrandonOCasey updated text track unit tests to use full es6 syntax ([view](https://github.com/videojs/video.js/pull/3148))
|
||||
* @defli added missing var to sandbox index.html example ([view](https://github.com/videojs/video.js/pull/3155))
|
||||
* @defli fixed typo and updated Turkish translations ([view](https://github.com/videojs/video.js/pull/3156))
|
||||
* @OwenEdwards fixed menu closing on ios, specifically ipad ([view](https://github.com/videojs/video.js/pull/3158))
|
||||
|
||||
## 5.8.0 (2016-02-19)
|
||||
* @gkatsev added issue and PR templates for github ([view](https://github.com/videojs/video.js/pull/3117))
|
||||
* @Nipoto added fa.json (farsi/persian lang file) ([view](https://github.com/videojs/video.js/pull/3116))
|
||||
* @forbesjo updated travis to use latest firefox ([view](https://github.com/videojs/video.js/pull/3112))
|
||||
* @Naouak updated time display to not change if values do not change ([view](https://github.com/videojs/video.js/pull/3101))
|
||||
* @forbesjo updated track settings to not fail restoring settings when localStorage is not available ([view](https://github.com/videojs/video.js/pull/3120))
|
||||
* @mister-ben Added en.json as localization template ([view](https://github.com/videojs/video.js/pull/3096))
|
||||
* @misteroneill added alt css as video-js-cdn.css ([view](https://github.com/videojs/video.js/pull/3118))
|
||||
|
||||
## 5.7.1 (2016-02-11)
|
||||
* @alex-phillips fixed reference to videojs-vtt.js dependency ([view](https://github.com/videojs/video.js/pull/3080))
|
||||
* @gkatsev fixed minified videojs in IE8. Fixes #3064 and #3070 ([view](https://github.com/videojs/video.js/pull/3104))
|
||||
|
||||
## 5.7.0 (2016-02-04)
|
||||
* @forbesjo updated emulated tracks to have listeners removed when they are removed ([view](https://github.com/videojs/video.js/pull/3046))
|
||||
* @incompl improved the UX of time tooltips ([view](https://github.com/videojs/video.js/pull/3060))
|
||||
* @gkatsev updated README to include links to plugins page and getting started and cleaner link to LICENSE ([view](https://github.com/videojs/video.js/pull/3066))
|
||||
* @hartman Corrected adaptive layout selectors to match their intent ([view](https://github.com/videojs/video.js/pull/2923))
|
||||
* @mister-ben updated Umuted to Unmute in lang files ([view](https://github.com/videojs/video.js/pull/3053))
|
||||
* @hartman updated fullscreen and time controls for more consistent widths ([view](https://github.com/videojs/video.js/pull/2893))
|
||||
* @hartman Set a min-width for the progress slider of 4em ([view](https://github.com/videojs/video.js/pull/2902))
|
||||
* @misteroneill fixed iphone useragent detection ([view](https://github.com/videojs/video.js/pull/3077))
|
||||
* @erikyuzwa added ability to add child component at specific index ([view](https://github.com/videojs/video.js/pull/2540))
|
||||
|
||||
## 5.6.0 (2016-01-26)
|
||||
* @OwenEdwards added ClickableComponent. Fixed keyboard operation of buttons ([view](https://github.com/videojs/video.js/pull/3032))
|
||||
* @OwenEdwards Fixed menu keyboard access and ARIA labeling for screen readers ([view](https://github.com/videojs/video.js/pull/3033))
|
||||
* @OwenEdwards Fixed volume menu keyboard access ([view](https://github.com/videojs/video.js/pull/3034))
|
||||
* @mister-ben made $primary-foreground-color a !default sass var ([view](https://github.com/videojs/video.js/pull/3003))
|
||||
* @OwenEdwards fixed double-localization of mute toggle control text ([view](https://github.com/videojs/video.js/pull/3017))
|
||||
* @gkatsev checked muted status when updating volume bar level ([view](https://github.com/videojs/video.js/pull/3037))
|
||||
* @vitor-faiante updated the guides ([view](https://github.com/videojs/video.js/pull/2781))
|
||||
* @aril-spetalen added language support for Norwegian (nb and nn) ([view](https://github.com/videojs/video.js/pull/3021))
|
||||
* @CoWinkKeyDinkInc fixed table in Tracks guide. Replaced some single quotes with double quotes ([view](https://github.com/videojs/video.js/pull/2946))
|
||||
* @hubdotcom changed URLs in README to be protocol-relative ([view](https://github.com/videojs/video.js/pull/3040))
|
||||
* @gkatsev updated to latest videojs-ie8 shim ([view](https://github.com/videojs/video.js/pull/3042))
|
||||
|
||||
## 5.5.3 (2016-01-15)
|
||||
* @gkasev updated vjs to correctly return already created player when given an element ([view](https://github.com/videojs/video.js/pull/3006))
|
||||
* @mister-ben updated CDN urls in setup guide ([view](https://github.com/videojs/video.js/pull/2984))
|
||||
* @rcrooks fixed a couple of docs link and a jsdoc comment ([view](https://github.com/videojs/video.js/pull/2987))
|
||||
|
||||
## 5.5.2 (2016-01-14)
|
||||
* make sure that styleEl_ is in DOM before removing on dispose ([view](https://github.com/videojs/video.js/pull/3004))
|
||||
|
||||
## 5.5.1 (2016-01-08)
|
||||
* @gkatsev fixed sass if else for icons ([view](https://github.com/videojs/video.js/pull/2988))
|
||||
|
||||
## 5.5.0 (2016-01-07)
|
||||
* @hartman fixed usage of lighten in progress component. Fixes #2793 ([view](https://github.com/videojs/video.js/pull/2875))
|
||||
* @misteroneill exposed createEl on videojs ([view](https://github.com/videojs/video.js/pull/2926))
|
||||
* @huitsing updated docstrings for autoplay and loop methods ([view](https://github.com/videojs/video.js/pull/2960))
|
||||
* @rcrooks fixed some broken links in guides ([view](https://github.com/videojs/video.js/pull/2965))
|
||||
* @forbesjo fixed errorDisplay erroring on subsequent openings ([view](https://github.com/videojs/video.js/pull/2966))
|
||||
* @incompl updated build command in CONTRIBUTING.md ([view](https://github.com/videojs/video.js/pull/2967))
|
||||
* @forbesjo updated player to not autoplay if there is no source ([view](https://github.com/videojs/video.js/pull/2971))
|
||||
* @gkatsev updated css to have ascii codepoints for fonticons. Expose new scss file ([view](https://github.com/videojs/video.js/pull/2973))
|
||||
|
||||
## 5.4.6 (2015-12-22)
|
||||
* @gkatsev fixed vertical slider alignment in volume menu button ([view](https://github.com/videojs/video.js/pull/2943))
|
||||
|
||||
## 5.4.5 (2015-12-15)
|
||||
* @gkatsev added mouse/touch listeners to volume menu button ([view](https://github.com/videojs/video.js/pull/2638))
|
||||
* @gkatsev updated styles for inline menu and volume bar ([view](https://github.com/videojs/video.js/pull/2913))
|
||||
* @BrandonOCasey updated sandbox to to use newer CDN urls ([view](https://github.com/videojs/video.js/pull/2917))
|
||||
* @hartman updated options guide doc ([view](https://github.com/videojs/video.js/pull/2908))
|
||||
* @rcrooks fixed simple embed example ([view](https://github.com/videojs/video.js/pull/2915))
|
||||
|
||||
## 5.4.4 (2015-12-09)
|
||||
* @gkatsev switched to use custom vtt.js from npm ([view](https://github.com/videojs/video.js/pull/2905))
|
||||
|
||||
## 5.4.3 (2015-12-08)
|
||||
* @gkatsev updated options customizer and github-release options ([view](https://github.com/videojs/video.js/pull/2903))
|
||||
|
||||
## 5.4.2 (2015-12-08)
|
||||
* @gkatsev updated grunt-release config ([view](https://github.com/videojs/video.js/pull/2900))
|
||||
|
||||
## 5.4.1 (2015-12-08)
|
||||
* @misteroneill updated videojs-ie8 to 1.1.1 ([view](https://github.com/videojs/video.js/pull/2869))
|
||||
* @gkatsev added Player#tech. Fixes #2617 ([view](https://github.com/videojs/video.js/pull/2883))
|
||||
* @nick11703 changed multiline comments in sass with single-line comments ([view](https://github.com/videojs/video.js/pull/2827))
|
||||
* @gkatsev added a Player#reset method. Fixes #2852 ([view](https://github.com/videojs/video.js/pull/2880))
|
||||
* @chemoish emulated HTMLTrackElement to enable track load events ([view](https://github.com/videojs/video.js/pull/2804))
|
||||
* @gkatsev added nullcheck for cues in updateForTrack. Fixes #2870 ([view](https://github.com/videojs/video.js/pull/2896))
|
||||
* @gkatsev added ability to release next tag from master ([view](https://github.com/videojs/video.js/pull/2894))
|
||||
* @gkatsev added chg- and github- release for next releases ([view](https://github.com/videojs/video.js/pull/2899))
|
||||
|
||||
## 5.3.0 (2015-11-25)
|
||||
* @forbesjo updated formatTime to not go negative ([view](https://github.com/videojs/video.js/pull/2821))
|
||||
* @imbcmdth added sourceOrder option for source-first ordering in selectSource ([view](https://github.com/videojs/video.js/pull/2847))
|
||||
|
||||
## 5.2.4 (2015-11-25)
|
||||
* @gesinger checked for track changes before tech started listening ([view](https://github.com/videojs/video.js/pull/2835))
|
||||
* @gesinger fixed handler explosion for cuechange events ([view](https://github.com/videojs/video.js/pull/2849))
|
||||
* @mmcc fixed vertical volume ([view](https://github.com/videojs/video.js/pull/2859))
|
||||
|
||||
## 5.2.3 (2015-11-24)
|
||||
* @gkatsev fixed clearing out errors ([view](https://github.com/videojs/video.js/pull/2850))
|
||||
|
||||
## 5.2.2 (2015-11-23)
|
||||
* @DatTran fixed bower paths. Fixes #2740 ([view](https://github.com/videojs/video.js/pull/2775))
|
||||
* @nbibler ensured classes begin with alpha characters. Fixes #2828 ([view](https://github.com/videojs/video.js/pull/2829))
|
||||
* @bcvio fixed returning current source rather than blob url ([view](https://github.com/videojs/video.js/pull/2833))
|
||||
* @tomaspinho added ended event to API docs ([view](https://github.com/videojs/video.js/pull/2836))
|
||||
* @paladox updated xhr from deprecated ver to v2.2 ([view](https://github.com/videojs/video.js/pull/2837))
|
||||
|
||||
## 5.2.1 (2015-11-16)
|
||||
* @dmlap Check a component is a function before new-ing ([view](https://github.com/videojs/video.js/pull/2814))
|
||||
* @ksjun corrected the registerTech export ([view](https://github.com/videojs/video.js/pull/2816))
|
||||
|
||||
## 5.2.0 (2015-11-10)
|
||||
* @gkatsev made initListeners more general and added Tech.isTech. Fixes #2767 ([view](https://github.com/videojs/video.js/pull/2773))
|
||||
* @dmlap updated swf to 5.0.1 ([view](https://github.com/videojs/video.js/pull/2795))
|
||||
* @gkatsev added a tech registry. Fixes #2772 ([view](https://github.com/videojs/video.js/pull/2782))
|
||||
* @Lillemanden impoved logic for dividing RTMP paths ([view](https://github.com/videojs/video.js/pull/2787))
|
||||
* @bdeitte added a test for improved RTMP path dividing logic ([view](https://github.com/videojs/video.js/pull/2794))
|
||||
* @paladox updated grunt-cli dependency ([view](https://github.com/videojs/video.js/pull/2555))
|
||||
* @paladox updated grunt-contrib-jshint ([view](https://github.com/videojs/video.js/pull/2554))
|
||||
* @siebrand updated dutch translations ([view](https://github.com/videojs/video.js/pull/2556))
|
||||
* @misteroneill exposed DOM helpers ([view](https://github.com/videojs/video.js/pull/2754))
|
||||
* @incompl fixed broken link to reduced test cases article ([view](https://github.com/videojs/video.js/pull/2801))
|
||||
* @zjruan updated text track prototype loops to blacklist constructor for IE8 ([view](https://github.com/videojs/video.js/pull/2565))
|
||||
* @gkatsev fixed usage of textTracksToJson ([view](https://github.com/videojs/video.js/pull/2797))
|
||||
* @gkatsev updated contrib.json to use / as branch-name separator in feature-accept ([view](https://github.com/videojs/video.js/pull/2803))
|
||||
* @gkatsev updated MediaLoader to check for techs in their registry ([view](https://github.com/videojs/video.js/pull/2798))
|
||||
|
||||
## 5.1.0 (2015-11-02)
|
||||
* @typcn bumped grunt-sass to ^1.0.0 to support node 4.x ([view](https://github.com/videojs/video.js/pull/2645))
|
||||
* @gkatsev removed unhelpful isCrossOrigin test ([view](https://github.com/videojs/video.js/pull/2715))
|
||||
* @forbesjo updated karma to use all installed browsers for unit tests ([view](https://github.com/videojs/video.js/pull/2708))
|
||||
* @forbesjo removed android/ios tests to increase build stability ([view](https://github.com/videojs/video.js/pull/2739))
|
||||
* @nickygerritsen added canPlayType method to player ([view](https://github.com/videojs/video.js/pull/2709))
|
||||
* @gkatsev fixes track tests and ignored empty properties in tracks converter ([view](https://github.com/videojs/video.js/pull/2744))
|
||||
* @misteroneill added a modal dialog ([view](https://github.com/videojs/video.js/pull/2668))
|
||||
* @misteroneill removed z-index from big play button ([view](https://github.com/videojs/video.js/pull/2639))
|
||||
* @DaveVoyles updated URL to player API docs ([view](https://github.com/videojs/video.js/pull/2685))
|
||||
* @ ([view](https://github.com/videojs/video.js/pull/2691))
|
||||
* @kahwee Fixed sandbox plugin example to work in Video.js 5 ([view](https://github.com/videojs/video.js/pull/2691))
|
||||
* @Soviut Fixed argument names in some API docs ([view](https://github.com/videojs/video.js/pull/2714))
|
||||
* @forbesjo Added Microsoft Caption Maker link ([view](https://github.com/videojs/video.js/pull/2618))
|
||||
* @misteroneill updated modal dialog CSS ([view](https://github.com/videojs/video.js/pull/2756))
|
||||
* @misteroneill Add browserify
|
||||
* @brkattk updated emulateTextTrack to exit early if no textTracks ([view](https://github.com/videojs/video.js/pull/2426))
|
||||
* @chemoish Fix captions sticking to bottom for webkit browsers. Fixes #2193 ([view](https://github.com/videojs/video.js/pull/2702))
|
||||
* @imbcmdth Deferred the implementation of select functions in the tech to source handlers if they provide them ([view](https://github.com/videojs/video.js/pull/2760))
|
||||
|
||||
## 5.0.2 (2015-10-23)
|
||||
* @imbcmdth fixed an issue with emulateTextTracks being called before the tech dom was ready ([view](https://github.com/videojs/video.js/pull/2692))
|
||||
* @gkatsev bumped obj.assign to fix uncaught SecurityError in iframes. Fixes #2703 ([view](https://github.com/videojs/video.js/pull/2721))
|
||||
* @gkatsev updated contrib update and have contrib release only update local branches ([view](https://github.com/videojs/video.js/pull/2723))
|
||||
* @gkatsev bumped chg to fix stalling issues ([view](https://github.com/videojs/video.js/pull/2732))
|
||||
|
||||
## 5.0.0 (2015-09-29)
|
||||
* @carpasse infer MIME types from file extensions in the HTML5 and Flash techs ([view](https://github.com/videojs/video.js/pull/1974))
|
||||
* @mmcc updated the slider to allow for vertical orientation ([view](https://github.com/videojs/video.js/pull/1816))
|
||||
* @dmlap removed an ie6 hack for flash object embedding ([view](https://github.com/videojs/video.js/pull/1946))
|
||||
* @heff replaced Closure Compiler with Uglify for minification ([view](https://github.com/videojs/video.js/pull/1940))
|
||||
* @OleLaursen added a Danish translation ([view](https://github.com/videojs/video.js/pull/1899))
|
||||
* @dn5 Added new translations (Bosnian, Serbian, Croatian) ([view](https://github.com/videojs/video.js/pull/1897))
|
||||
* @mmcc (and others) converted the whole project to use ES6, Babel and Browserify ([view](https://github.com/videojs/video.js/pull/1976))
|
||||
* @heff converted all classes to use ES6 classes ([view](https://github.com/videojs/video.js/pull/1993))
|
||||
* @mmcc added ES6 default args and template strings ([view](https://github.com/videojs/video.js/pull/2015))
|
||||
* @dconnolly replaced JSON.parse with a safe non-eval JSON parse ([view](https://github.com/videojs/video.js/pull/2077))
|
||||
* @mmcc added a new default skin, switched to SASS, modified the html ([view](https://github.com/videojs/video.js/pull/1999))
|
||||
* @gkatsev removed event.isDefaultPrevented in favor of event.defaultPrevented ([view](https://github.com/videojs/video.js/pull/2081))
|
||||
* @heff added and `extends` function for external subclassing ([view](https://github.com/videojs/video.js/pull/2078))
|
||||
* @forbesjo added the `scrubbing` property ([view](https://github.com/videojs/video.js/pull/2080))
|
||||
* @heff switched to border-box sizing for all player elements ([view](https://github.com/videojs/video.js/pull/2082))
|
||||
* @forbesjo added a vjs-button class to button controls ([view](https://github.com/videojs/video.js/pull/2084))
|
||||
* @bc-bbay Load plugins before controls ([view](https://github.com/videojs/video.js/pull/2094))
|
||||
* @bc-bbay rename onEvent methods to handleEvent ([view](https://github.com/videojs/video.js/pull/2093))
|
||||
* @dmlap added an error message if techOrder is not in options ([view](https://github.com/videojs/video.js/pull/2097))
|
||||
* @dconnolly exported the missing videojs.plugin function ([view](https://github.com/videojs/video.js/pull/2103))
|
||||
* @mmcc added back the captions settings styles ([view](https://github.com/videojs/video.js/pull/2112))
|
||||
* @gkatsev updated the component.js styles to match the new style guide ([view](https://github.com/videojs/video.js/pull/2105))
|
||||
* @gkatsev added error logging for bad JSON formatting ([view](https://github.com/videojs/video.js/pull/2113))
|
||||
* @gkatsev added a sensible toJSON function ([view](https://github.com/videojs/video.js/pull/2114))
|
||||
* @bc-bbay fixed instance where progress bars would go passed 100% ([view](https://github.com/videojs/video.js/pull/2040))
|
||||
* @eXon began Tech 2.0 work, improved how tech events are handled by the player ([view](https://github.com/videojs/video.js/pull/2057))
|
||||
* @gkatsev added get and set global options methods ([view](https://github.com/videojs/video.js/pull/2115))
|
||||
* @heff added support for fluid widths, aspect ratios, and metadata defaults ([view](https://github.com/videojs/video.js/pull/1952))
|
||||
* @heff reorganized all utility functions in the codebase ([view](https://github.com/videojs/video.js/pull/2139))
|
||||
* @eXon made additional tech 2.0 improvements listed in #2126 ([view](https://github.com/videojs/video.js/pull/2166))
|
||||
* @heff Cleaned up and documented src/js/video.js and DOM functions ([view](https://github.com/videojs/video.js/pull/2182))
|
||||
* @mmcc Changed to pure CSS slider handles ([view](https://github.com/videojs/video.js/pull/2132))
|
||||
* @mister-ben updated language support to handle language codes with regions ([view](https://github.com/videojs/video.js/pull/2177))
|
||||
* @heff changed the 'ready' event to always be asynchronous ([view](https://github.com/videojs/video.js/pull/2188))
|
||||
* @heff fixed instances of tabIndex that did not have a capital I ([view](https://github.com/videojs/video.js/pull/2204))
|
||||
* @heff fixed a number of IE8 and Flash related issues ([view](https://github.com/videojs/video.js/pull/2206))
|
||||
* @heff Reverted .video-js inline-block style to fix Flash fullscreen ([view](https://github.com/videojs/video.js/pull/2217))
|
||||
* @mmcc switched to using button elements for button components ([view](https://github.com/videojs/video.js/pull/2209))
|
||||
* @mmcc increased the size of the progress bar and handle on hover ([view](https://github.com/videojs/video.js/pull/2216))
|
||||
* @mmcc moved the fonts into their own repo ([view](https://github.com/videojs/video.js/pull/2223))
|
||||
* @mmcc deprecated the options() function and removed internal uses ([view](https://github.com/videojs/video.js/pull/2229))
|
||||
* @carpasse enhanced events to allow passing a second data argument ([view](https://github.com/videojs/video.js/pull/2163))
|
||||
* @bc-bbay made the duration display update itself on loadedmetadata ([view](https://github.com/videojs/video.js/pull/2169))
|
||||
* @arwidt added Swedish and Finnish translations ([view](https://github.com/videojs/video.js/pull/2189))
|
||||
* @heff moved all the CDN logic into videojs/cdn ([view](https://github.com/videojs/video.js/pull/2230))
|
||||
* @mmcc fixed the progress handle transition jerkiness ([view](https://github.com/videojs/video.js/pull/2219))
|
||||
* @dmlap added support for the seekable property ([view](https://github.com/videojs/video.js/pull/2208))
|
||||
* @mmcc un-hid the current and remaining times by default ([view](https://github.com/videojs/video.js/pull/2241))
|
||||
* @pavelhoral fixed a bug with user activity that caused the control bar to flicker ([view](https://github.com/videojs/video.js/pull/2299))
|
||||
* @dmlap updated to videojs-swf@4.7.1 to fix a video dimensions issue on subsequent loads ([view](https://github.com/videojs/video.js/pull/2281))
|
||||
* @mmcc added the vjs-big-play-centered class ([view](https://github.com/videojs/video.js/pull/2293))
|
||||
* @thijstriemstra added a logged error when a plugin is missing ([view](https://github.com/videojs/video.js/pull/1931))
|
||||
* @gkatsev fixed the texttrackchange event and text track display for non-native tracks ([view](https://github.com/videojs/video.js/pull/2215))
|
||||
* @mischizzle fixed event.relatedTarget in Firefox ([view](https://github.com/videojs/video.js/pull/2025))
|
||||
* @mboles updated JSDoc comments everywhere to prepare for new docs ([view](https://github.com/videojs/video.js/pull/2270))
|
||||
* @mmcc added a currentTime tooltip to the progress handle ([view](https://github.com/videojs/video.js/pull/2255))
|
||||
* @pavelhoral fixed subclassing without a constructor ([view](https://github.com/videojs/video.js/pull/2308))
|
||||
* @dmlap fixed a vjs_getProperty error caused by a progress check before the swf was ready ([view](https://github.com/videojs/video.js/pull/2316))
|
||||
* @dmlap exported the videojs.log function ([view](https://github.com/videojs/video.js/pull/2317))
|
||||
* @gkatsev updated vttjs to fix a trailing comma JSON error ([view](https://github.com/videojs/video.js/pull/2331))
|
||||
* @gkatsev exported the videojs.bind() function ([view](https://github.com/videojs/video.js/pull/2332))
|
||||
* Insert cloned el back into DOM. Fixes #2214 ([view](https://github.com/videojs/video.js/pull/2334))
|
||||
* @heff sped up testing ([view](https://github.com/videojs/video.js/pull/2254))
|
||||
* pass fs state to player from enterFullscreen, split full-window styles into their own selector ([view](https://github.com/videojs/video.js/pull/2357))
|
||||
* Fixed vertical option for volumeMenuButton ([view](https://github.com/videojs/video.js/pull/2352))
|
||||
* @dmlap switched events to not bubble by default ([view](https://github.com/videojs/video.js/pull/2351))
|
||||
* @dmlap export videojs.createTimeRange ([view](https://github.com/videojs/video.js/pull/2361))
|
||||
* @dmlap export a basic played() on techs ([view](https://github.com/videojs/video.js/pull/2384))
|
||||
* @dmlap use seekable on source handlers when defined ([view](https://github.com/videojs/video.js/pull/2376))
|
||||
* @dmlap fire seeking in the flash tech, not the SWF ([view](https://github.com/videojs/video.js/pull/2372))
|
||||
* @dmlap expose the xhr helper utility ([view](https://github.com/videojs/video.js/pull/2321))
|
||||
* @misteroneill fixed internal extends usage and added a deprecation warning ([view](https://github.com/videojs/video.js/pull/2390))
|
||||
* @eXon added the poster to the options the tech receives ([view](https://github.com/videojs/video.js/pull/2338))
|
||||
* @eXon made sure the volume persists between tech changes ([view](https://github.com/videojs/video.js/pull/2340))
|
||||
* @eXon added the language to the options the tech receives ([view](https://github.com/videojs/video.js/pull/2338))
|
||||
* @mmcc Added "inline" option to MenuButton and updated VolumeMenuButton to be able to utilize it ([view](https://github.com/videojs/video.js/pull/2378))
|
||||
* @misteroneill restore some properties on window.videojs. ([view](https://github.com/videojs/video.js/pull/2395))
|
||||
* @misteroneill restore some 4.x utilities and remove deprecated functionality ([view](https://github.com/videojs/video.js/pull/2406))
|
||||
* @heff use a synchronous ready() internally ([view](https://github.com/videojs/video.js/pull/2392))
|
||||
* @nickygerritsen scrubbing() is a method, not a property ([view](https://github.com/videojs/video.js/pull/2411))
|
||||
* @sirlancelot change "video" to "media" in error messages ([view](https://github.com/videojs/video.js/pull/2409))
|
||||
* @nickygerritsen use the default seekable when a source handler is unset ([view](https://github.com/videojs/video.js/pull/2401))
|
||||
* @gkatsev always use emulated TextTrackLists so tracks survive tech switches ([view](https://github.com/videojs/video.js/pull/2425))
|
||||
* @misteroneill restore Html5.Events ([view](https://github.com/videojs/video.js/pull/2421))
|
||||
* @misteroneill removed the deprecated Component init method ([view](https://github.com/videojs/video.js/pull/2427))
|
||||
* @misteroneill restore videojs.formatTime ([view](https://github.com/videojs/video.js/pull/2420))
|
||||
* @misteroneill include child components with `true` in options ([view](https://github.com/videojs/video.js/pull/2424))
|
||||
* @misteroneill create video.novtt.js in dist builds ([view](https://github.com/videojs/video.js/pull/2447))
|
||||
* @misteroneill pass vtt.js option to tech ([view](https://github.com/videojs/video.js/pull/2448))
|
||||
* @forbesjo updated the sauce labs config and browser versions ([view](https://github.com/videojs/video.js/pull/2450))
|
||||
* @mmcc made sure controls respect muted attribute ([view](https://github.com/videojs/video.js/pull/2408))
|
||||
* @dmlap switched global options back to an object at videojs.options ([view](https://github.com/videojs/video.js/pull/2461))
|
||||
* @ogun fixed a typo in the Turkish translation ([view](https://github.com/videojs/video.js/pull/2460))
|
||||
* @gkatsev fixed text track errors on dispose and in cross-browser testing ([view](https://github.com/videojs/video.js/pull/2466))
|
||||
* @mmcc added type=button to button components ([view](https://github.com/videojs/video.js/pull/2471))
|
||||
* @mmcc Fixed IE by using setAttribute to set 'type' property ([view](https://github.com/videojs/video.js/pull/2487))
|
||||
* @misternoneill fixed vertical slider issues ([view](https://github.com/videojs/video.js/pull/2469))
|
||||
* @gkatsev moved default and player dimensions to style els at the top of HEAD ([view](https://github.com/videojs/video.js/pull/2482))
|
||||
* @gkatsev moved default and player dimensions to style els at the top of HEAD el ([view](https://github.com/videojs/video.js/pull/2482))
|
||||
* @gkatsev removed non-default track auto-disabling ([view](https://github.com/videojs/video.js/pull/2475))
|
||||
* @gkatsev exported event helpers on videojs object ([view](https://github.com/videojs/video.js/pull/2491))
|
||||
* @nickygerritsen fixed texttrack handling in IE10 ([view](https://github.com/videojs/video.js/pull/2481))
|
||||
* @gkatsev deep clone el for iOS to preserve tracks ([view](https://github.com/videojs/video.js/pull/2494))
|
||||
* @forbesjo switched automated testing to BrowserStack ([view](https://github.com/videojs/video.js/pull/2492))
|
||||
* @gkatsev fixed nativeControlsForTouch handling. Defaults to native controls on iphone and native android browsers. ([view](https://github.com/videojs/video.js/pull/2499))
|
||||
* @heff fixed cross-platform track tests by switching to a fake tech ([view](https://github.com/videojs/video.js/pull/2496))
|
||||
* @gkatsev improved tech controls listener handling. ([view](https://github.com/videojs/video.js/pull/2511))
|
||||
* @dmlap move seek on replay into the flash tech ([view](https://github.com/videojs/video.js/pull/2527))
|
||||
* @dmlap @gkatsev improve Flash tech error property and add an error setter to the base tech ([view](https://github.com/videojs/video.js/pull/2517))
|
||||
* @dmlap update to videojs-swf 5.0.0-rc1 ([view](https://github.com/videojs/video.js/pull/2528))
|
||||
* @dmlap expose start and end buffered times ([view](https://github.com/videojs/video.js/pull/2501))
|
||||
* @heff fixed a number of console errors after testing ([view](https://github.com/videojs/video.js/pull/2513))
|
||||
* @gkatsev made the sass files available via npm in src/css ([view](https://github.com/videojs/video.js/pull/2546))
|
||||
* @heff removed playerOptions from plugin options because it created an inconsistency in plugin inits ([view](https://github.com/videojs/video.js/pull/2532))
|
||||
* @heff added a default data attribute to fix the progress handle display in IE8 ([view](https://github.com/videojs/video.js/pull/2547))
|
||||
* @heff added back the default cdn url for the swf ([view](https://github.com/videojs/video.js/pull/2533))
|
||||
* @gkatsev fixed the default state of userActive ([view](https://github.com/videojs/video.js/pull/2557))
|
||||
* @heff fixed event bubbling in IE8 ([view](https://github.com/videojs/video.js/pull/2563))
|
||||
* @heff cleaned up internal duration handling ([view](https://github.com/videojs/video.js/pull/2552))
|
||||
* @heff fixed the UI for live streams ([view](https://github.com/videojs/video.js/pull/2557))
|
||||
* @gkatsev updated opacity of caption settings background color ([view](https://github.com/videojs/video.js/pull/2573))
|
||||
* @gkatsev made all sass variables !default ([view](https://github.com/videojs/video.js/pull/2574))
|
||||
* @heff fixed the inline volume control and made it the default ([view](https://github.com/videojs/video.js/pull/2553))
|
||||
* @forbesjo fixed webkit deprecation warnings ([view](https://github.com/videojs/video.js/pull/2558))
|
||||
* @forbesjo added Android and iOS browser testing ([view](https://github.com/videojs/video.js/pull/2538))
|
||||
* @heff improved css selector strengths ([view](https://github.com/videojs/video.js/pull/2583))
|
||||
* @heff moved scss vars to be private ([view](https://github.com/videojs/video.js/pull/2584))
|
||||
* @heff added a fancy loading spinner ([view](https://github.com/videojs/video.js/pull/2582))
|
||||
* @gkatsev added a mouse-hover time display to the progress bar ([view](https://github.com/videojs/video.js/pull/2569))
|
||||
* @heff added an attributes argument to createEl() ([view](https://github.com/videojs/video.js/pull/2589))
|
||||
* @heff made tech related functions private in the player ([view](https://github.com/videojs/video.js/pull/2590))
|
||||
* @heff removed the loadedalldata event ([view](https://github.com/videojs/video.js/pull/2591))
|
||||
* @dmlap switched to using raynos/xhr for requests ([view](https://github.com/videojs/video.js/pull/2594))
|
||||
* @heff Fixed double loadstart and ready events ([view](https://github.com/videojs/video.js/pull/2605))
|
||||
* @gkatsev fixed potential double default style elements ([view](https://github.com/videojs/video.js/pull/2619))
|
||||
* @imbcmdth extended createTimeRange to support multiple timeranges ([view](https://github.com/videojs/video.js/pull/2604))
|
||||
* @misteroneill rename "extends" to "extend" for ie8 ([view](https://github.com/videojs/video.js/pull/2624))
|
||||
* @forbesjo removed the PhantomJS dependency ([view](https://github.com/videojs/video.js/pull/2622))
|
||||
* @misteroneill re-exposed videojs.TextTrack ([view](https://github.com/videojs/video.js/pull/2625))
|
||||
* @heff removed a second copy of video.novtt.js from dist ([view](https://github.com/videojs/video.js/pull/2630))
|
||||
* @heff fixed timeranges deprecation warnings in tests ([view](https://github.com/videojs/video.js/pull/2627))
|
||||
* @misteroneill updated play control to use its state for icon ([view](https://github.com/videojs/video.js/pull/2636))
|
||||
* @gkatsev exposed isCrossOrigin and used it to enable CORS for textTrack XHRs ([view](https://github.com/videojs/video.js/pull/2633))
|
||||
* @misteroneill fixed tsml to be used as a tag for template strings ([view](https://github.com/videojs/video.js/pull/2629))
|
||||
* @eXon added support for a tech-supplied poster ([view](https://github.com/videojs/video.js/pull/2339))
|
||||
* @heff improved some skin defaults for external styling ([view](https://github.com/videojs/video.js/pull/2642))
|
||||
* @heff changed component child lists to arrays instead of objects ([view](https://github.com/videojs/video.js/pull/2477))
|
||||
|
||||
## 4.12.15 (2015-08-31)
|
||||
* @dmlap update to videojs-swf 4.7.4 ([view](https://github.com/videojs/video.js/pull/2463))
|
||||
* @bc-bbay migrate seeking on replay to the flash tech ([view](https://github.com/videojs/video.js/pull/2519))
|
||||
* Updated to v4.7.5 of the swf ([view](https://github.com/videojs/video.js/pull/2531))
|
||||
|
||||
## 4.12.14 (2015-08-21)
|
||||
* @gkatsev removed non-default track auto-disabling ([view](https://github.com/videojs/video.js/pull/2468))
|
||||
|
||||
## 4.12.13 (2015-08-10)
|
||||
* @dmlap update to videojs-swf v4.7.3 ([view](https://github.com/videojs/video.js/pull/2457))
|
||||
|
||||
## 4.12.12 (2015-07-23)
|
||||
* @imbcmdth updated source handlers to use bracket notation so they wont break when using minified videojs ([view](https://github.com/videojs/video.js/pull/2348))
|
||||
* @imbcmdth fix potential triggerReady infinite loop ([view](https://github.com/videojs/video.js/pull/2398))
|
||||
|
||||
## 4.12.11 (2015-07-09)
|
||||
* @saxena-gaurav updated swf to 4.7.2 to fix flash of previous video frame ([view](https://github.com/videojs/video.js/pull/2300))
|
||||
* @gkatsev updated the vtt.js version to fix JSON issues ([view](https://github.com/videojs/video.js/pull/2327))
|
||||
* @dmlap fixed an error caused by calling vjs_getProperty on the swf too early ([view](https://github.com/videojs/video.js/pull/2289))
|
||||
|
||||
## 4.12.10 (2015-06-23)
|
||||
* @dmlap update to video-js-swf 4.7.1 ([view](https://github.com/videojs/video.js/pull/2280))
|
||||
* @imbcmdth src() should not return blob URLs with MSE source handlers ([view](https://github.com/videojs/video.js/pull/2271))
|
||||
|
||||
## 4.12.9 (2015-06-15)
|
||||
* @imbcmdth updated currentSrc to return src instead of blob urls in html5 tech. Fixes #2232 ([view](https://github.com/videojs/video.js/pull/2232))
|
||||
* @imbcmdth fixed async currentSrc behavior ([view](https://github.com/videojs/video.js/pull/2256))
|
||||
|
||||
## 4.12.8 (2015-06-05)
|
||||
* @dmlap add the seekable property ([view](https://github.com/videojs/video.js/pull/2207))
|
||||
* @dmlap fix seekable export ([view](https://github.com/videojs/video.js/pull/2227))
|
||||
|
||||
## 4.12.7 (2015-05-19)
|
||||
* @tjenkinson Added background-color to vjs-poster to remove transparent borders around scaled poster image ([view](https://github.com/videojs/video.js/pull/2138))
|
||||
* @bc-bbay fixed a bug where the player would try to autoplay when there was no source ([view](https://github.com/videojs/video.js/pull/2127))
|
||||
* @bc-bbay update time display on loadedmetadata ([view](https://github.com/videojs/video.js/pull/2151))
|
||||
* @dmlap update swf to 4.7 to pick up preload fix ([view](https://github.com/videojs/video.js/pull/2170))
|
||||
|
||||
## 4.12.6 (2015-05-07)
|
||||
* @saxena-gaurav fixed a bug from disposing after changing techs ([view](https://github.com/videojs/video.js/pull/2125))
|
||||
|
||||
## 4.12.5 (2015-03-17)
|
||||
* Updated to videojs-swf v4.5.4 to fix a potential security issue ([view](https://github.com/videojs/video.js/pull/1955))
|
||||
|
||||
## 4.12.4 (2015-03-05)
|
||||
* Randomized the Google Analytics calls to stay under the limit ([view](https://github.com/videojs/video.js/pull/1916))
|
||||
|
||||
## 4.12.3 (2015-02-28)
|
||||
* @heff fixed setting the source to an empty string ([view](https://github.com/videojs/video.js/pull/1905))
|
||||
|
||||
## 4.12.2 (2015-02-27)
|
||||
* @gkatsev fixed disabling of default text tracks ([view](https://github.com/videojs/video.js/pull/1892))
|
||||
|
||||
## 4.12.1 (2015-02-19)
|
||||
* @gkatsev fixed the track list reference while switching techs that use emulated tracks ([view](https://github.com/videojs/video.js/pull/1874))
|
||||
* @gkatsev fixed a Firefox error with the captions settings select menu options ([view](https://github.com/videojs/video.js/pull/1877))
|
||||
|
||||
## 4.12.0 (2015-02-17)
|
||||
* @PeterDaveHello added a Traditional Chinese translation ([view](https://github.com/videojs/video.js/pull/1729))
|
||||
* @mmcc updated the hide/show functions to use a class instead of inline styles ([view](https://github.com/videojs/video.js/pull/1681))
|
||||
* @mister-ben added better handling of the additional videojs() arguments when the player is already initialized ([view](https://github.com/videojs/video.js/pull/1730))
|
||||
* @anhskohbo added a Vietnamese translation ([view](https://github.com/videojs/video.js/pull/1734))
|
||||
* @Sxmanek added a Czech translation ([view](https://github.com/videojs/video.js/pull/1739))
|
||||
* @jcaron23 added the vjs-scrubbing CSS class and prevented menus from showing while scrubbing ([view](https://github.com/videojs/video.js/pull/1741))
|
||||
* @dmlap fixed URL parsing in IE9 ([view](https://github.com/videojs/video.js/pull/1765))
|
||||
* @gkatsev Fixed issue where ManualTimeUpdatesOff was not de-registering events ([view](https://github.com/videojs/video.js/pull/1793))
|
||||
* @brycefisher Added a guide on player disposal ([view](https://github.com/videojs/video.js/pull/1803))
|
||||
* @toniher added a Catalan translation ([view](https://github.com/videojs/video.js/pull/1794))
|
||||
* @mmcc added a VERSION key to the videojs object ([view](https://github.com/videojs/video.js/pull/1798))
|
||||
* @mmcc fixed an issue with text track hiding introduced in #1681 ([view](https://github.com/videojs/video.js/pull/1804))
|
||||
* @dmlap exported video.js as a named AMD module ([view](https://github.com/videojs/video.js/pull/1844))
|
||||
* @dmlap fixed poster hiding when the loadstart event does not fire ([view](https://github.com/videojs/video.js/pull/1834))
|
||||
* @chikathreesix fixed an object delete error in Chrome ([view](https://github.com/videojs/video.js/pull/1858))
|
||||
* @steverandy fixed an issue with scrolling over the player on touch devices ([view](https://github.com/videojs/video.js/pull/1809))
|
||||
* @mmcc improved tap sensitivity ([view](https://github.com/videojs/video.js/pull/1830))
|
||||
* @mister-ben added a vjs-ended class when playback reaches the end of the timeline ([view](https://github.com/videojs/video.js/pull/1857))
|
||||
* @dmlap Add network and ready state properties ([view](https://github.com/videojs/video.js/pull/1854))
|
||||
* @woollybogger exported the hasClass function ([view](https://github.com/videojs/video.js/pull/1839))
|
||||
* @DevGavin fixed the Chinese translation ([view](https://github.com/videojs/video.js/pull/1841))
|
||||
* @iSimonWeb added font-path variable ([view](https://github.com/videojs/video.js/pull/1847))
|
||||
* @shoshomiga added a Bulgarian translation ([view](https://github.com/videojs/video.js/pull/1849))
|
||||
* @ragecub3 added a Turkish translation ([view](https://github.com/videojs/video.js/pull/1853))
|
||||
* @gkatsev greatly improved text track support and implemented vtt.js as the webvtt parser ([view](https://github.com/videojs/video.js/pull/1749))
|
||||
* @gkatsev fixed captions showing by default in Chrome and Safari ([view](https://github.com/videojs/video.js/pull/1865))
|
||||
* @mister-ben fixed a woff warning in Firefox ([view](https://github.com/videojs/video.js/pull/1870))
|
||||
|
||||
## 4.11.4 (2015-01-23)
|
||||
* @heff exported missing source handler functions ([view](https://github.com/videojs/video.js/pull/1787))
|
||||
* @heff fixed type support checking for an empty src string ([view](https://github.com/videojs/video.js/pull/1797))
|
||||
* @carpasse fixed a bug in updating child indexes after removing components ([view](https://github.com/videojs/video.js/pull/1814))
|
||||
* @dmlap fixed a bug where native controls would show after switching techs ([view](https://github.com/videojs/video.js/pull/1811))
|
||||
* @H1D fixed an issue with file extension type detection ([view](https://github.com/videojs/video.js/pull/1818))
|
||||
* @bclwhitaker updated to v4.5.3 of video-js-swf ([view](https://github.com/videojs/video.js/pull/1823))
|
||||
|
||||
## 4.11.3 (2014-12-19)
|
||||
* @gdkraus fixed a bug where you could no longer tab-navigate passed a menu button ([view](https://github.com/videojs/video.js/pull/1760))
|
||||
* @matteos exported the setSource functions so source handlers will work in the minified version ([view](https://github.com/videojs/video.js/pull/1753))
|
||||
* @matteos fixed RTMP playback ([view](https://github.com/videojs/video.js/pull/1755))
|
||||
|
||||
## 4.11.2 (2014-12-17)
|
||||
* @mmcc fixed a bug where the playback rate menu would not open ([view](https://github.com/videojs/video.js/pull/1716))
|
||||
* @gkatsev fixed an issue with source handlers that caused subclasses of source handler classes to break ([view](https://github.com/videojs/video.js/pull/1746))
|
||||
|
||||
## 4.11.1 (2014-12-04)
|
||||
* @heff fixed a code bug in track XHR requests ([view](https://github.com/videojs/video.js/pull/1715))
|
||||
|
||||
## 4.11.0 (2014-12-04)
|
||||
* @rutkat updated sliders to use keydown instead of keyup for more responsive key control ([view](https://github.com/videojs/video.js/pull/1616))
|
||||
* @toloudis fixed an issue with checking for an existing source on the video element ([view](https://github.com/videojs/video.js/pull/1651))
|
||||
* @rafalwrzeszcz fixed the Flash object tag markup for strict XML ([view](https://github.com/videojs/video.js/pull/1702))
|
||||
* @thijstriemstra fixed a number of typos in the docs ([view](https://github.com/videojs/video.js/pull/1704))
|
||||
* @heff added the Source Handler interface for handling advanced formats including adaptive streaming ([view](https://github.com/videojs/video.js/pull/1560))
|
||||
* @azawawi added an Arabic translation ([view](https://github.com/videojs/video.js/pull/1692))
|
||||
* @mmcc added functions for better timeout and interval handling ([view](https://github.com/videojs/video.js/pull/1642))
|
||||
* @mmcc fixed the vdata exception when you dispose a player with tracks ([view](https://github.com/videojs/video.js/pull/1710))
|
||||
* @nemesreviz added a Hungarian translation ([view](https://github.com/videojs/video.js/pull/1711))
|
||||
* @heff updated the SWF to the latest version ([view](https://github.com/videojs/video.js/pull/1714))
|
||||
|
||||
## 4.10.2 (2014-10-30)
|
||||
* @heff fixed checking for child options in the parent options to allow for 'false' ([view](https://github.com/videojs/video.js/pull/1630))
|
||||
* @heff fixed the VolumeMenuButton options to allow passing 'vertical' to the VolumeBar ([view](https://github.com/videojs/video.js/pull/1631))
|
||||
* @mmcc fixed localization of captions/subtitles menu off buttons ([view](https://github.com/videojs/video.js/pull/1632))
|
||||
|
||||
## 4.10.1 (2014-10-29)
|
||||
@heff removed his own stupid error [view](https://github.com/videojs/video.js/commit/a12dd770572a7f16e436e2332eba7ffbb1f1b9b9)
|
||||
|
||||
## 4.10.0 (2014-10-28)
|
||||
* @aptx4869 fixed an issue where the native JSON parser wasn't used ([view](https://github.com/videojs/video.js/pull/1565))
|
||||
* @andekande improved the German translation ([view](https://github.com/videojs/video.js/pull/1555))
|
||||
* @OlehTsvirko added a Ukrainian translation ([view](https://github.com/videojs/video.js/pull/1562))
|
||||
* @OlehTsvirko added a Russian translation ([view](https://github.com/videojs/video.js/pull/1563))
|
||||
* @thijstriemstra added a Dutch translation ([view](https://github.com/videojs/video.js/pull/1566))
|
||||
* @heff updated the poster to use CSS styles to display; fixed the poster not showing if not originally set ([view](https://github.com/videojs/video.js/pull/1568))
|
||||
* @mmcc fixed an issue where errors on source tags could get missed ([view](https://github.com/videojs/video.js/pull/1575))
|
||||
* @heff enhanced the event listener API to allow for auto-cleanup of listeners on other componenets and elements ([view](https://github.com/videojs/video.js/pull/1588))
|
||||
* @mmcc fixed an issue with the VolumeButton assuming it was vertical by default ([view](https://github.com/videojs/video.js/pull/1592))
|
||||
* @DevGavin added a Simplified Chinese translation ([view](https://github.com/videojs/video.js/pull/1593))
|
||||
* @heff Added the ability to set options for child components directly in the parent options ([view](https://github.com/videojs/video.js/pull/1599))
|
||||
* @heff turned on the custom html controls for touch devices ([view](https://github.com/videojs/video.js/pull/1617))
|
||||
|
||||
## 4.9.1 (2014-10-15)
|
||||
* Bumped to videojs-swf v4.5.1 to fix a data sanitization issue ([view](https://github.com/videojs/video.js/pull/1587))
|
||||
|
||||
## 4.9.0 (2014-09-30)
|
||||
* @deedos added a Brazilian Portuguese translation ([view](https://github.com/videojs/video.js/pull/1520))
|
||||
* @baloneysandwiches added a hasClass method ([view](https://github.com/videojs/video.js/pull/1464))
|
||||
* @mynameisstephen fixed an issue where slider event listeners were not being cleaned up ([view](https://github.com/videojs/video.js/pull/1475))
|
||||
* @alexrqs cleaned up the Spanish translation ([view](https://github.com/videojs/video.js/pull/1494))
|
||||
* @t2y added a Japanese translation ([view](https://github.com/videojs/video.js/pull/1497))
|
||||
* @chikathreesix fixed an issue where data-setup options could be missed ([view](https://github.com/videojs/video.js/pull/1514))
|
||||
* @seniorflexdeveloper added new translations and translation updates ([view](https://github.com/videojs/video.js/pull/1530))
|
||||
* @chikathreesix exported the videojs.Flash.embed method ([view](https://github.com/videojs/video.js/pull/1533))
|
||||
* @doublex fixed an issue with IE7 backwards compatibility ([view](https://github.com/videojs/video.js/pull/1542))
|
||||
* @mmcc made it possible to override the font-size of captions and subtitles ([view](https://github.com/videojs/video.js/pull/1547))
|
||||
* @philipgiuliani added an Italian translation ([view](https://github.com/videojs/video.js/pull/1550))
|
||||
* @twentyrogersc fixed the return value when setting the poster source ([view](https://github.com/videojs/video.js/pull/1552))
|
||||
* @heff updated to swf v4.5.0 to fix event issues ([view](https://github.com/videojs/video.js/pull/1554))
|
||||
* @rpless made the VolumeMenuButton volume more accesible via tab navigation ([view](https://github.com/videojs/video.js/pull/1519))
|
||||
* @mmcc added support for audio tags (html5 audio only) ([view](https://github.com/videojs/video.js/pull/1540))
|
||||
|
||||
## 4.8.5 (2014-09-25)
|
||||
* Updated to the latest version of the swf to fix HLS playback ([view](https://github.com/videojs/video.js/pull/1538))
|
||||
|
||||
## 4.8.4 (2014-09-23)
|
||||
* @gkatsev fixed isFullscreen reporting on iOS devices ([view](https://github.com/videojs/video.js/pull/1511))
|
||||
|
||||
## 4.8.3 (2014-09-22)
|
||||
* @heff updated to the latest version of the SWF to 4.4.4 ([view](https://github.com/videojs/video.js/pull/1526))
|
||||
|
||||
## 4.8.2 (2014-09-16)
|
||||
* @gkatsev fixed an IE11 bug where pause was not fired when the video ends ([view](https://github.com/videojs/video.js/pull/1512))
|
||||
|
||||
## 4.8.1 (2014-09-05)
|
||||
* @dmlap fixed an issue where an error could be fired after player disposal ([view](https://github.com/videojs/video.js/pull/1481))
|
||||
* @dmlap fixed poster error handling ([view](https://github.com/videojs/video.js/pull/1482))
|
||||
* @dmlap fixed an issue with languages and subclassing the player ([view](https://github.com/videojs/video.js/pull/1483))
|
||||
* @mmcc fixed a few CSS issues with the poster and the error 'X' ([view](https://github.com/videojs/video.js/pull/1487))
|
||||
* @MrVaykadji and @Calinou added a french translation ([view](https://github.com/videojs/video.js/pull/1467))
|
||||
* @heff fixed an internal deprecation warning and missing deprecated functions ([view](https://github.com/videojs/video.js/pull/1488))
|
||||
|
||||
## 4.8.0 (2014-09-03)
|
||||
* @andekande added a German translation ([view](https://github.com/videojs/video.js/pull/1426))
|
||||
* @mattosborn fixed a bug where getting the video element src would overwrite it ([view](https://github.com/videojs/video.js/pull/1430))
|
||||
* @songpete fixed a bug where keyboard events were bubbling and causing additional actions ([view](https://github.com/videojs/video.js/pull/1455))
|
||||
* @knabar made the inactivity timeout configurable ([view](https://github.com/videojs/video.js/pull/1409))
|
||||
* @seniorflexdeveloper added language files to the distribution for including specific languages ([view](https://github.com/videojs/video.js/pull/1453))
|
||||
* @gkatsev improved handling of null and NaN dimension values ([view](https://github.com/videojs/video.js/pull/1449))
|
||||
* @gkatsev fixed an issue where the controls would break if Flash was initialized too quickly ([view](https://github.com/videojs/video.js/pull/1470))
|
||||
* @mmcc fixed an issue where if no playback tech was supported the error could not be caught ([view](https://github.com/videojs/video.js/pull/1473))
|
||||
|
||||
## 4.7.3 (2014-08-20)
|
||||
* Added function for adding new language translations, updated docs, and fixed the notSupportedMessage translation ([view](https://github.com/videojs/video.js/pull/1427))
|
||||
* Exposed the player.selectSource method to allow overriding the source selection order ([view](https://github.com/videojs/video.js/pull/1424))
|
||||
|
||||
## 4.7.2 (2014-08-14)
|
||||
* Fixed a case where timeupdate events were not firing, and fixed and issue with the Flash player version ([view](https://github.com/videojs/video.js/pull/1417))
|
||||
|
||||
## 4.7.1 (2014-08-06)
|
||||
* Fixed the broken bower.json config ([view](https://github.com/videojs/video.js/pull/1401))
|
||||
|
||||
## 4.7.0 (2014-08-05)
|
||||
* Added cross-browser isArray for cross-frame support. fixes #1195 ([view](https://github.com/videojs/video.js/pull/1218))
|
||||
* Fixed support for webvtt chapters. Fixes #676. ([view](https://github.com/videojs/video.js/pull/1221))
|
||||
* Fixed issues around webvtt cue time parsing. Fixed #877, fixed #183. ([view](https://github.com/videojs/video.js/pull/1236))
|
||||
* Fixed an IE11 issue where clicking on the video wouldn't show the controls ([view](https://github.com/videojs/video.js/pull/1291))
|
||||
* Added a composer.json for PHP packages ([view](https://github.com/videojs/video.js/pull/1241))
|
||||
* Exposed the vertical option for slider controls ([view](https://github.com/videojs/video.js/pull/1303))
|
||||
* Fixed an error when disposing a tech using manual timeupdates ([view](https://github.com/videojs/video.js/pull/1312))
|
||||
* Exported missing Player API methods (remainingTime, supportsFullScreen, enterFullWindow, exitFullWindow, preload) ([view](https://github.com/videojs/video.js/pull/1328))
|
||||
* Added a base for running saucelabs tests from grunt ([view](https://github.com/videojs/video.js/pull/1215))
|
||||
* Added additional browsers for saucelabs testing ([view](https://github.com/videojs/video.js/pull/1216))
|
||||
* Added support for listening to multiple events through a types array ([view](https://github.com/videojs/video.js/pull/1231))
|
||||
* Exported the vertical option for the volume slider ([view](https://github.com/videojs/video.js/pull/1378))
|
||||
* Fixed Component trigger function arguments and docs ([view](https://github.com/videojs/video.js/pull/1310))
|
||||
* Now copying all attributes from the original video tag to the generated video element ([view](https://github.com/videojs/video.js/pull/1321))
|
||||
* Added files to be ignored in the bower.json ([view](https://github.com/videojs/video.js/pull/1337))
|
||||
* Fixed an error that could happen if Flash was diposed before the ready callback was fired ([view](https://github.com/videojs/video.js/pull/1340))
|
||||
* The up and down arrows can now be used to control sliders in addition to left and right ([view](https://github.com/videojs/video.js/pull/1345))
|
||||
* Added a player.currentType() function to get the MIME type of the current source ([view](https://github.com/videojs/video.js/pull/1320))
|
||||
* Fixed a potential conflict with other event listener shims ([view](https://github.com/videojs/video.js/pull/1363))
|
||||
* Added support for multiple time ranges in the load progress bar ([view](https://github.com/videojs/video.js/pull/1253))
|
||||
* Added vjs-waiting and vjs-seeking css classnames and updated the spinner to use them ([view](https://github.com/videojs/video.js/pull/1351))
|
||||
* Now restoring the original video tag attributes on a tech change to support webkit-playsinline ([view](https://github.com/videojs/video.js/pull/1369))
|
||||
* Fixed an issue where the user was unable to scroll/zoom page if touching the video ([view](https://github.com/videojs/video.js/pull/1373))
|
||||
* Added "sliding" class for when slider is sliding to help with handle styling ([view](https://github.com/videojs/video.js/pull/1385))
|
||||
|
||||
## 4.6.4 (2014-07-11)
|
||||
* Fixed an issue where Flash autoplay would not show the controls ([view](https://github.com/videojs/video.js/pull/1343))
|
||||
|
||||
## 4.6.3 (2014-06-12)
|
||||
* Updated to version 4.4.1 of the SWF ([view](https://github.com/videojs/video.js/pull/1285))
|
||||
* Fixed a minification issue with the fullscreen event. fixes #1282 ([view](https://github.com/videojs/video.js/pull/1286))
|
||||
|
||||
## 4.6.2 (2014-06-10)
|
||||
* Fixed an issue with the firstplay event not firing when autoplaying ([view](https://github.com/videojs/video.js/pull/1271))
|
||||
|
||||
## 4.6.1 (2014-05-20)
|
||||
* Udpated playbackRate menu to work in minified version ([view](https://github.com/videojs/video.js/pull/1223))
|
||||
|
||||
## 4.6.0 (2014-05-20)
|
||||
* Updated the UI to support live video ([view](https://github.com/videojs/video.js/pull/1121))
|
||||
* The UI now resets after a source change ([view](https://github.com/videojs/video.js/pull/1124))
|
||||
* Now assuming smart CSS defaults for sliders to prevent reflow on player init ([view](https://github.com/videojs/video.js/pull/1122))
|
||||
* Fixed the title element placement in menus [[view](https://github.com/videojs/video.js/pull/1114)]
|
||||
* Fixed title support for menu buttons ([view](https://github.com/videojs/video.js/pull/1128))
|
||||
* Fixed extra mousemove events on Windows caused by certain apps, not users [[view](https://github.com/videojs/video.js/pull/1068)]
|
||||
* Fixed error due to undefined tech when no source is supported [[view](https://github.com/videojs/video.js/pull/1172)]
|
||||
* Fixed the progress bar not finishing when manual timeupdate events are used [[view](https://github.com/videojs/video.js/pull/1173)]
|
||||
* Added a more informative and styled fallback message for non-html5 browsers [[view](https://github.com/videojs/video.js/pull/1181)]
|
||||
* Added the option to provide an array of child components instead of an object [[view](https://github.com/videojs/video.js/pull/1093)]
|
||||
* Fixed casing on webkitRequestFullscreen [[view](https://github.com/videojs/video.js/pull/1101)]
|
||||
* Made tap events on mobile less sensitive to touch moves [[view](https://github.com/videojs/video.js/pull/1111)]
|
||||
* Fixed the default flag for captions/subtitles tracks [[view](https://github.com/videojs/video.js/pull/1153)]
|
||||
* Fixed compilation failures with LESS v1.7.0 and GRUNT v0.4.4 [[view](https://github.com/videojs/video.js/pull/1180)]
|
||||
* Added better error handling across the library [[view](https://github.com/videojs/video.js/pull/1197)]
|
||||
* Updated captions/subtiles file fetching to support cross-origin requests in older IE browsers [[view](https://github.com/videojs/video.js/pull/1095)]
|
||||
* Added support for playback rate switching [[view](https://github.com/videojs/video.js/pull/1132)]
|
||||
* Fixed an issue with the loadstart event order that caused the big play button to not hide [[view](https://github.com/videojs/video.js/pull/1209)]
|
||||
* Modernized the fullscreen API and added support for IE11 [[view](https://github.com/videojs/video.js/pull/1205)]
|
||||
* Added cross-browser testing with SauceLabs, and added Karma as the default test runner ([view](https://github.com/videojs/video.js/pull/1187))
|
||||
* Fixed saucelabs integration to run on commits in TravisCI ([view](https://github.com/videojs/video.js/pull/1214))
|
||||
* Added a clearer error message when a tech is undefined ([view](https://github.com/videojs/video.js/pull/1210))
|
||||
* Added a cog icon to the font icons ([view](https://github.com/videojs/video.js/pull/1211))
|
||||
* Added a player option to offset the subtitles/captions timing ([view](https://github.com/videojs/video.js/pull/1212))
|
||||
|
||||
## 4.5.2 (2014-04-12)
|
||||
* Updated release versioning to include bower.json and component.json
|
||||
|
||||
## 4.5.1 (2014-03-27)
|
||||
* Fixed a bug from the last release where canPlaySource was no longer exported
|
||||
|
||||
## 4.5.0 (2014-03-27)
|
||||
* Added component(1) support ([view](https://github.com/videojs/video.js/pull/1032))
|
||||
* Captions now move down when controls are hidden ([view](https://github.com/videojs/video.js/pull/1053))
|
||||
* Added the .less source file to the distribution files ([view](https://github.com/videojs/video.js/pull/1056))
|
||||
* Changed src() to return the current selected source ([view](https://github.com/videojs/video.js/pull/968))
|
||||
* Added a grunt task for opening the next issue that needs addressing ([view](https://github.com/videojs/video.js/pull/1059))
|
||||
* Fixed Android 4.0+ devices' check for HLS support ([view](https://github.com/videojs/video.js/pull/1084))
|
||||
|
||||
## 4.4.3 (2014-03-06)
|
||||
* Fixed bugs in IE9 Windows 7N with no Media Player ([view](https://github.com/videojs/video.js/pull/1060))
|
||||
* Fixed a bug with setPoster() in the minified version ([view](https://github.com/videojs/video.js/pull/1062))
|
||||
|
||||
## 4.4.2 (2014-02-24)
|
||||
* Fixed module.exports in minified version ([view](https://github.com/videojs/video.js/pull/1038))
|
||||
|
||||
## 4.4.1 (2014-02-18)
|
||||
* Added .npmignore so dist files wouldn't be ignored in packages
|
||||
|
||||
## 4.4.0 (2014-02-18)
|
||||
* Made the poster updateable after initialization ([view](https://github.com/videojs/video.js/pull/838))
|
||||
* Exported more textTrack functions ([view](https://github.com/videojs/video.js/pull/815))
|
||||
* Moved player ID generation to support video tags with no IDs ([view](https://github.com/videojs/video.js/pull/845))
|
||||
* Moved to using QUnit as a dependency ([view](https://github.com/videojs/video.js/pull/850))
|
||||
* Added the util namespace for public utility functions ([view](https://github.com/videojs/video.js/pull/862))
|
||||
* Fixed an issue with calling duration before Flash is loaded ([view](https://github.com/videojs/video.js/pull/861))
|
||||
* Added player methods to externs so they can be overridden ([view](https://github.com/videojs/video.js/pull/878))
|
||||
* Fixed html5 playback when switching between media techs ([view](https://github.com/videojs/video.js/pull/887))
|
||||
* Fixed Firefox+Flash mousemove events so controls don't hide permanently ([view](https://github.com/videojs/video.js/pull/899))
|
||||
* Fixed a test for touch detection ([view](https://github.com/videojs/video.js/pull/962))
|
||||
* Updated the src file list for karma tests ([view](https://github.com/videojs/video.js/pull/948))
|
||||
* Added more tests for API properties after minification ([view](https://github.com/videojs/video.js/pull/906))
|
||||
* Updated projet to use npm version of videojs-swf ([view](https://github.com/videojs/video.js/pull/930))
|
||||
* Added support for dist zipping on windows ([view](https://github.com/videojs/video.js/pull/944))
|
||||
* Fixed iOS fullscreen issue ([view](https://github.com/videojs/video.js/pull/977))
|
||||
* Fixed touch event bubbling ([view](https://github.com/videojs/video.js/pull/992))
|
||||
* Fixed ARIA role attribute for button and slider ([view](https://github.com/videojs/video.js/pull/988))
|
||||
* Fixed an issue where a component's dispose event would bubble up ([view](https://github.com/videojs/video.js/pull/981))
|
||||
* Quieted down deprecation warnings ([view](https://github.com/videojs/video.js/pull/971))
|
||||
* Updated the seek handle to contain the current time ([view](https://github.com/videojs/video.js/pull/902))
|
||||
* Added requirejs and browserify support (UMD) ([view](https://github.com/videojs/video.js/pull/998))
|
||||
|
||||
## 4.3.0 (2013-11-04)
|
||||
* Added Karma for cross-browser unit testing ([view](https://github.com/videojs/video.js/pull/714))
|
||||
* Unmuting when the volume is changed ([view](https://github.com/videojs/video.js/pull/720))
|
||||
* Fixed an accessibility issue with the big play button ([view](https://github.com/videojs/video.js/pull/777))
|
||||
* Exported user activity methods ([view](https://github.com/videojs/video.js/pull/783))
|
||||
* Added a classname to center the play button and new spinner options ([view](https://github.com/videojs/video.js/pull/784))
|
||||
* Added API doc generation ([view](https://github.com/videojs/video.js/pull/801))
|
||||
* Added support for codecs in Flash mime types ([view](https://github.com/videojs/video.js/pull/805))
|
||||
|
||||
## 4.2.2 (2013-10-15)
|
||||
* Fixed a race condition that would cause videos to fail in Firefox ([view](https://github.com/videojs/video.js/pull/776))
|
||||
|
||||
## 4.2.1 (2013-09-09)
|
||||
* Fixed an infinite loop caused by loading the library asynchronously ([view](https://github.com/videojs/video.js/pull/727))
|
||||
|
||||
## 4.2.0 (2013-09-04)
|
||||
* Added LESS as a CSS preprocessor for the default skin ([view](https://github.com/videojs/video.js/pull/644))
|
||||
* Exported MenuButtons for use in the API ([view](https://github.com/videojs/video.js/pull/648))
|
||||
* Fixed ability to remove listeners added with one() ([view](https://github.com/videojs/video.js/pull/659))
|
||||
* Updated buffered() to account for multiple loaded ranges ([view](https://github.com/videojs/video.js/pull/643))
|
||||
* Exported createItems() for custom menus ([view](https://github.com/videojs/video.js/pull/654))
|
||||
* Preventing media events from bubbling up the DOM ([view](https://github.com/videojs/video.js/pull/630))
|
||||
* Major reworking of the control bar and many issues fixed ([view](https://github.com/videojs/video.js/pull/672))
|
||||
* Fixed an issue with minifiying the code on Windows systems ([view](https://github.com/videojs/video.js/pull/683))
|
||||
* Added support for RTMP streaming through Flash ([view](https://github.com/videojs/video.js/pull/605))
|
||||
* Made tech.features available to external techs ([view](https://github.com/videojs/video.js/pull/705))
|
||||
* Minor code improvements ([view](https://github.com/videojs/video.js/pull/706))
|
||||
* Updated time formatting to support NaN and Infinity ([view](https://github.com/videojs/video.js/pull/627))
|
||||
* Fixed an `undefined` error in cases where no tech is loaded ([view](https://github.com/videojs/video.js/pull/632))
|
||||
* Exported addClass and removeClass for player components ([view](https://github.com/videojs/video.js/pull/661))
|
||||
* Made the fallback message customizable ([view](https://github.com/videojs/video.js/pull/638))
|
||||
* Fixed an issue with the loading spinner placement and rotation ([view](https://github.com/videojs/video.js/pull/694))
|
||||
* Fixed an issue with fonts being flaky in IE8
|
||||
|
||||
## 4.1.0 (2013-06-28)
|
||||
* Turned on method queuing for unready playback technologies (flash) [view](https://github.com/videojs/video.js/pull/553)
|
||||
* Blocking user text selection on player components [view](https://github.com/videojs/video.js/pull/524)
|
||||
* Exported requestFullScreen() and cancelFullScreen() in the minified version [view](https://github.com/videojs/video.js/pull/555)
|
||||
* Exported the global players reference, videojs.players [view](https://github.com/videojs/video.js/pull/560)
|
||||
* Added google analytics to the CDN version ([view](https://github.com/videojs/video.js/pull/568))
|
||||
* Exported fadeIn/fadeOut for the Component API ([view](https://github.com/videojs/video.js/pull/581))
|
||||
* Fixed an IE poster error when autoplaying ([view](https://github.com/videojs/video.js/pull/593))
|
||||
* Exported bufferedPercent for the API ([view](https://github.com/videojs/video.js/pull/588))
|
||||
* Augmented user agent detection, specifically for Android versions ([view](https://github.com/videojs/video.js/pull/470))
|
||||
* Fixed IE9 canPlayType error ([view](https://github.com/videojs/video.js/pull/606))
|
||||
* Fixed various issues with captions ([view](https://github.com/videojs/video.js/pull/609))
|
||||
|
||||
## 4.0.4 (2013-06-11)
|
||||
* Added google analytics to current CDN version. ([view](https://github.com/videojs/video.js/pull/571))
|
||||
|
||||
## 4.0.3 (2013-05-28)
|
||||
* Fixed an bug with exiting fullscreen. [view](https://github.com/videojs/video.js/pull/546)
|
||||
|
||||
## 4.0.2 (2013-05-23)
|
||||
* Correct version number for CDN swf url. Minify CSS. [view](https://github.com/videojs/video.js/pull/535)
|
||||
|
||||
## 4.0.1 (2013-05-22)
|
||||
* Fixed old IE font loading [view](https://github.com/videojs/video.js/pull/532)
|
||||
|
||||
## 4.0.0 (2013-05-09)
|
||||
* Improved performance through an 18% size reduction using Google Closure Compiler in advanced mode
|
||||
* Greater stability through an automated cross-browser/device test suite using TravisCI, Bunyip, and Browserstack.
|
||||
* New plugin interface and plugin listing for extending Video.js
|
||||
* New default skin design that uses font icons for greater customization
|
||||
* Responsive design and retina display support
|
||||
* Improved accessibility through better ARIA support
|
||||
* Moved to Apache 2.0 license
|
||||
* 100% JavaScript development tool set including Grunt
|
||||
* Updated docs to use Github markdown
|
||||
* Allow disabling of default components
|
||||
* Duration is now setable (need ed for HLS m3u8 files)
|
||||
* Event binders (on/off/one) now return the player instance
|
||||
* Stopped player from going back to beginningg on ended event.
|
||||
* Stopped player from going back to beginning on ended event
|
||||
* Added support for percent width/height and fluid layouts
|
||||
* Improved load order of elements to reduce reflow.
|
||||
* Changed addEvent function name to 'on'.
|
||||
* Improved load order of elements to reduce reflow
|
||||
* Changed addEvent function name to 'on'
|
||||
* Removed conflicting array.indexOf function
|
||||
* Added exitFullScreen to support BlackBerry devices (pull/143)
|
||||
--------------------------------------------------------------------------------
|
||||
^ ADD NEW CHANGES ABOVE ^
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
CHANGELOG
|
||||
=========
|
||||
## 3.2.0 (2012-03-20)
|
||||
* Updated docs with more options.
|
||||
* Overhauled HTML5 Track support.
|
||||
* Fixed Flash always autoplaying when setting source.
|
||||
* Fixed localStorage context
|
||||
* Updated 'fullscreenchange' event to be called even if the user presses escape to exit fullscreen.
|
||||
* Automatically converting URsource URL to absolute for Flash fallback.
|
||||
* Created new 'loadedalldata' event for when the source is completely downloaded
|
||||
* Improved player.destroy(). Now removes elements and references.
|
||||
* Refactored API to be more immediately available.
|
||||
|
||||
---- 3.0.3 / 2012-01-12 / doc-change -------------------------------------------
|
||||
* Added line to docs to test zenflow
|
||||
### Patches
|
||||
* 3.2.1 (2012-04-06) Fixed setting width/height with javascript options
|
||||
* 3.2.2 (2012-05-02) Fixed error with multiple controls fading listeners
|
||||
* 3.2.3 (2012-11-12) Fixed chrome spinner continuing on seek
|
||||
|
||||
---- 3.0.4 / 2012-01-12 / undefined-source-fix ---------------------------------
|
||||
* Fixing an undefined source when no sources exist on load
|
||||
|
||||
---- 3.0.5 / 2012-01-12 / event-layer-x-deprecation-fix ------------------------
|
||||
* Removed deprecated event.layerX and layerY
|
||||
|
||||
---- 3.0.6 / 2012-01-12 / docs-url-fix -----------------------------------------
|
||||
* Fixed wrong URL for CDN in docs
|
||||
|
||||
---- 3.0.7 / 2012-01-12 / fixing-ie8-poster-bug --------------------------------
|
||||
* Fixed an ie8 breaking bug with the poster
|
||||
|
||||
---- 3.0.8 / 2012-01-23 / fix-ie-controls-hiding -------------------------------
|
||||
* Fixed issue with controls not hiding in IE due to no opacity support
|
||||
|
||||
---- 3.1.0 / 2012-01-30 / leonardo ---------------------------------------------
|
||||
## 3.1.0 (2012-01-30)
|
||||
* Added CSS fix for Firefox 9 fullscreen (in the rare case that it's enabled)
|
||||
* Replaced swfobject with custom embed to save file size.
|
||||
* Added flash iframe-mode, an experimental method for getting around flash reloading issues.
|
||||
@@ -49,22 +749,16 @@ CHANGELOG
|
||||
* Made full-window mode more independent
|
||||
* Added rakefile for release generation
|
||||
|
||||
---- 3.2.0 / 2012-03-20 / baxter -----------------------------------------------
|
||||
* Updated docs with more options.
|
||||
* Overhauled HTML5 Track support.
|
||||
* Fixed Flash always autoplaying when setting source.
|
||||
* Fixed localStorage context
|
||||
* Updated 'fullscreenchange' event to be called even if the user presses escape to exit fullscreen.
|
||||
* Automatically converting URsource URL to absolute for Flash fallback.
|
||||
* Created new 'loadedalldata' event for when the source is completely downloaded
|
||||
* Improved player.destroy(). Now removes elements and references.
|
||||
* Refactored API to be more immediately available.
|
||||
## 3.0.0 (2012-01-10)
|
||||
* Same HTML/CSS Skin for both HTML5 and Flash video
|
||||
* Super lightweight Flash fallback player for browsers that don’t support HTML5 video
|
||||
* Free CDN hosting
|
||||
|
||||
---- 3.2.1 / 2012-04-06 / options-width-fix ------------------------------------
|
||||
* Fixed setting width/height with javascript options
|
||||
|
||||
---- 3.2.2 / 2012-05-02 / multiple-control-fades-fix ---------------------------
|
||||
* Fixed error with multiple controls fading listeners
|
||||
|
||||
---- 3.2.3 / 2012-11-12 / fix-chrome-seeking-spinner ---------------------------
|
||||
* Fixed chrome spinner continuing on seek
|
||||
### Patches
|
||||
* 3.0.2 (2012-01-12) Started tracking changes with zenflow
|
||||
* 3.0.3 (2012-01-12) Added line to docs to test zenflow
|
||||
* 3.0.4 (2012-01-12) Fixing an undefined source when no sources exist on load
|
||||
* 3.0.5 (2012-01-12) Removed deprecated event.layerX and layerY
|
||||
* 3.0.6 (2012-01-12) Fixed wrong URL for CDN in docs
|
||||
* 3.0.7 (2012-01-12) Fixed an ie8 breaking bug with the poster
|
||||
* 3.0.8 (2012-01-23) Fixed issue with controls not hiding in IE due to no opacity support
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
|
||||
```
|
||||
^ NEW CHANGES ABOVE ^
|
||||
```
|
||||
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
#### 3.2.3 (2013-05-03)
|
||||
* test line
|
||||
* Added a plugins interface
|
||||
* Added automated test suite and support for Travis CI.
|
||||
* Updated docs to use Github markdown
|
||||
* Allow disabling of default components
|
||||
* Duration is now setable (need ed for HLS m3u8 files)
|
||||
* Event binders (on/off/one) now return the player instance
|
||||
* Stopped player from going back to beginningg on ended event.
|
||||
* Added support for percent width/height and fluid layouts
|
||||
* Improved load order of elements to reduce reflow.
|
||||
* Changed addEvent function name to 'on'.
|
||||
* Removed conflicting array.indexOf function
|
||||
* Added exitFullScreen to support BlackBerry devices (pull/143)
|
||||
|
||||
## 5.0.0 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
* Added automated test suite and support for Travis CI.
|
||||
* Updated docs to use Github markdown
|
||||
* Allow disabling of default components
|
||||
|
||||
#### 4.1.2 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
|
||||
### 4.1.0 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
* Added automated test suite and support for Travis CI.
|
||||
* Updated docs to use Github markdown
|
||||
* Allow disabling of default components
|
||||
|
||||
#### 4.0.2 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
|
||||
#### 4.0.1 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
|
||||
## 4.0.0 (2013-02-02)
|
||||
* Added a plugins interface ([261f2072](https://github.com/angular-ui/bootstrap/commit/261f2072))
|
||||
* Added automated test suite and support for Travis CI.
|
||||
* Updated docs to use Github markdown
|
||||
* Allow disabling of default components
|
||||
|
||||
+211
-112
@@ -1,155 +1,259 @@
|
||||
So you're telling me you want to spend some of your precious time giving back to this humble project? You're crazy. But since you're here...there are some ways you can help make Video.js a faster, easier, more compatible, and more fully-featured video player.
|
||||
CONTRIBUTING
|
||||
============
|
||||
So you want to help out? Great! There's a number of ways you can get involved.
|
||||
|
||||
* Bug reports and fixes
|
||||
* Features and changes (pull requests)
|
||||
* [Answer questions](http://stackoverflow.com/questions/tagged/video.js) on Stack Overflow
|
||||
* Other Video.js projects
|
||||
* [File and discuss issues](#filing-issues)
|
||||
* [Contribute code](#contributing-code)
|
||||
* [Build and share plugins](docs/guides/plugins.md)
|
||||
* [Answer questions on Stack Overflow](http://stackoverflow.com/questions/tagged/video.js)
|
||||
|
||||
Don't miss the [code style guide](#code-style).
|
||||
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)
|
||||
|
||||
# Getting started
|
||||
* [Videojs.com](https://github.com/videojs/videojs.com)
|
||||
* [Video.js flash player](https://github.com/videojs/video-js-swf)
|
||||
* [Player skin designer](https://github.com/videojs/designer)
|
||||
* [Contribflow](https://github.com/zencoder/contribflow)
|
||||
|
||||
1. [Download and install Node.js](http://nodejs.org/download/). Video.js uses Node for build and test automation.
|
||||
There is a known issue between Node.js version 0.10.x and phantomjs. This will manifest itself during the node module installation (see step 4 below). For the time being, please install Node.js version 0.8.22 or earlier. You can find earlier versions of Node.js [here](http://nodejs.org/dist/).
|
||||
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**.
|
||||
|
||||
2. [Fork](http://help.github.com/fork-a-repo/) and clone the video.js git repository.
|
||||
### Reporting a Bug
|
||||
|
||||
```bash
|
||||
# Clones your fork of the repo into the current directory in terminal
|
||||
git clone https://github.com/<your-username>/video-js.git
|
||||
# Navigate to the newly cloned directory
|
||||
cd video-js
|
||||
# Assigns the original repo to a remote called "upstream"
|
||||
git remote add upstream https://github.com/zencoder/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:
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
git pull upstream master
|
||||
```
|
||||
|
||||
3. Install the grunt-cli package so that you will have the correct version of grunt available from any project that needs it. This should be done as a global install:
|
||||
|
||||
```bash
|
||||
npm install -g grunt-cli
|
||||
```
|
||||
|
||||
4. Install required node.js modules using node package manager.
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
5. Build a local copy. Video.js uses [grunt](http://gruntjs.com), a node-based task automation tool for building and tesing. The following will compile a local copy in the dist/ directory and run tests. It will also create a sourcelist.js file that can be used to load the video.js source scripts in a page.
|
||||
|
||||
```bash
|
||||
grunt
|
||||
```
|
||||
|
||||
6. When you're ready to add a feature, make a change, or fix a bug, first create a new branch for it. Prefix the branch with the correspoding [issue number](https://github.com/zencoder/video-js/issues). If there isn't one, submit a new issue. Anything more complicated than simple docs changes should have an issue.
|
||||
|
||||
```bash
|
||||
git checkout -b <####-branch-name>
|
||||
```
|
||||
|
||||
Be sure to reference your issue in any commit message. Github allows you to do this though the [fixes or closes](https://github.com/blog/831-issues-2-0-the-next-generation) keywords.
|
||||
|
||||
```bash
|
||||
My commit message. fixes #123
|
||||
```
|
||||
|
||||
# Bugs
|
||||
|
||||
A bug is a _demonstrable problem_ that is caused by the code in the
|
||||
repository. Good bug reports are extremely helpful - thank you!
|
||||
**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. **Use the [GitHub issue search](https://github.com/zencoder/video-js/issues)** — check if the issue has already been reported.
|
||||
1. Use the [GitHub issue search](https://github.com/videojs/video.js/issues) — check if the issue has already been reported.
|
||||
|
||||
2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` branch in the repository.
|
||||
2. Check if the issue has already been fixed — try to reproduce it using the latest `master` branch in the repository.
|
||||
|
||||
3. **Isolate the problem** — ideally create a [reduced test
|
||||
case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
|
||||
3. 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/7/edit) as a starting point.
|
||||
|
||||
A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s), OS, and devices experience the problem? What would you expect to be the outcome? All these
|
||||
details will help people to fix any potential bugs.
|
||||
A good bug report should be as detailed as possible, so that others won't have to follow up for the essential details.
|
||||
|
||||
Example:
|
||||
Here's an example:
|
||||
|
||||
> Short and descriptive example bug report title
|
||||
> Short yet concise Bug Summary
|
||||
>
|
||||
> A summary of the issue and the browser/OS environment in which it occurs. If
|
||||
> suitable, include the steps required to reproduce the bug.
|
||||
> Description:
|
||||
> Happens on Windows 7 and OSX. Seen with IE9, Firefox 19 OSX, Chrome 21, Flash 11.6 and 11.2
|
||||
>
|
||||
> 1. This is the first step
|
||||
> 2. This is the second step
|
||||
> 3. Further steps, etc.
|
||||
>
|
||||
> `<url>` (a link to the reduced test case)
|
||||
> Expected:
|
||||
> (describe the expected outcome of the steps above)
|
||||
>
|
||||
> Actual:
|
||||
> (describe what actually happens)
|
||||
>
|
||||
> `<url>` (a link to the reduced test case, if it exists)
|
||||
>
|
||||
> Any other information you want to share that is relevant to the issue being
|
||||
> reported. This might include the lines of code that you have identified as
|
||||
> causing the bug, and potential solutions (and your opinions on their
|
||||
> merits).
|
||||
|
||||
**[File a bug report](https://github.com/h5bp/html5-boilerplate/issues/)**
|
||||
**[File a bug report](https://github.com/videojs/video.js/issues/new)**
|
||||
|
||||
### NOTE: Testing Flash Locally in Chrome
|
||||
Chrome 21+ (as of 2013/01/01) doens't run Flash files that are local and loaded into a locally accessed page (file:///). To get around this you need to [disable the version of Flash](http://helpx.adobe.com/flash-player/kb/flash-player-google-chrome.html#How_can_I_run_debugger_or_alternate_versions_of_Flash_Player_in_Google_Chrome) included with Chrome and enable a system-wide version of Flash.
|
||||
### Requesting a Feature
|
||||
|
||||
1. [Check the plugin list](https://github.com/videojs/video.js/wiki/Plugins) for any plugins that may already support the feature.
|
||||
|
||||
2. [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.
|
||||
|
||||
2. 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.
|
||||
|
||||
**[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 -- Install grunt-cli globally so that you will have the correct version of grunt available for any project that needs it.
|
||||
|
||||
On Unix-based systems, you'll have to do this as a superuser:
|
||||
|
||||
```bash
|
||||
sudo npm install -g grunt-cli
|
||||
```
|
||||
On Windows, you can just run:
|
||||
|
||||
```bash
|
||||
npm install -g grunt-cli
|
||||
```
|
||||
|
||||
- Contribflow -- A homegrown git workflow tool for managing feature/hotfix branches and submitting pull requests. If you have your own preferred git workflow, contribflow isn't required, but the following instructions will assume you're using it.
|
||||
|
||||
On Unix-based systems, you'll have to do this as a superuser:
|
||||
|
||||
```bash
|
||||
sudo npm install -g contribflow
|
||||
```
|
||||
|
||||
On Windows, you can just run:
|
||||
|
||||
```bash
|
||||
npm install -g contribflow
|
||||
```
|
||||
|
||||
### Building your own copy of Video.js
|
||||
|
||||
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
|
||||
|
||||
```bash
|
||||
git clone https://github.com/<your-username>/video.js.git
|
||||
```
|
||||
|
||||
Navigate to the newly cloned directory
|
||||
|
||||
```bash
|
||||
cd video.js
|
||||
```
|
||||
|
||||
Assign the original repo to a remote called "upstream"
|
||||
|
||||
```
|
||||
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:
|
||||
>
|
||||
> ```bash
|
||||
> git checkout master
|
||||
> git pull upstream master
|
||||
> ```
|
||||
|
||||
Install the required node.js modules using node package manager
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
Build a local copy of video.js and run tests
|
||||
|
||||
```bash
|
||||
grunt dist
|
||||
grunt test
|
||||
```
|
||||
|
||||
Video.js is also configured to run tests with Karma. Karma is installed as a grunt plugin to run QUnit tests in real browsers, as opposed to simply running the tests in phantomjs, a headless browser. To run the tests with Karma:
|
||||
|
||||
```bash
|
||||
grunt karma:dev
|
||||
```
|
||||
|
||||
At this point you should have a built copy of video.js in a directory named `dist`, and all tests should be passing.
|
||||
|
||||
### Making Changes
|
||||
|
||||
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).
|
||||
|
||||
There are two categories of changes in video.js land, features and hotfixes (Video.js follows a branching model similar to [gitflow](http://nvie.com/posts/a-successful-git-branching-model/)). Hotfixes are for urgent fixes that need to be released immediately as a patch. Features are for everything else (including non-urgent fixes). If you think you have a hotfix scenario, verify that (via comment) before starting the work. We'll focus on features here, but you can swap `hotfix` for `feature` in any command.
|
||||
|
||||
Start a new development branch
|
||||
|
||||
```bash
|
||||
contrib feature start
|
||||
```
|
||||
|
||||
You'll be prompted to name the branch. After that, contrib will create the branch locally, and use git to push it up to your origin, and track it. You're now ready to start building your feature or fixing that bug! Be sure to read the [Code Style Guide](#code-style-guide).
|
||||
|
||||
While you're developing, you can ensure your changes are working by writing tests (in the `test` directory) and running `grunt test`.
|
||||
|
||||
There's also a sandbox directory where you can add any file and it won't get tracked as a change. To start you can copy the example index file and see a working version of a player (using the local source code) by loading it in a browser.
|
||||
|
||||
```bash
|
||||
cp sandbox/index.html.example sandbox/index.html
|
||||
open sandbox/index.html
|
||||
```
|
||||
|
||||
|
||||
## Pull requests
|
||||
### Testing Locally
|
||||
A simple Connect server is available via the Grunt plugin. The commands below will allow you to setup a test sandbox and begin development.
|
||||
|
||||
Good pull requests - patches, improvements, new features - are a fantastic help. They should remain focused in scope and avoid containing unrelated commits. If your contribution involves a significant amount of work or substantial changes to any part of the project, please open an issue to discuss it first.
|
||||
```bash
|
||||
cp sandbox/index.html.example sandbox/index.html
|
||||
grunt connect
|
||||
open http://localhost:9999/sandbox/index.html
|
||||
```
|
||||
|
||||
Make sure to adhere to the coding conventions used throughout a project (indentation, accurate comments, etc.). Please update any documentation that is relevant to the change you're making.
|
||||
> NOTES regarding local testing in Chrome 21+ (as of 2013/01/01)
|
||||
> Flash files that are local and loaded into a locally accessed page (file:///) will NOT run.
|
||||
> To get around this you can do either of the following:
|
||||
>
|
||||
> 1. Do your development and testing using a local HTTP server. See Grunt commands above.
|
||||
>
|
||||
> 2. [Disable the version of Flash included with Chrome](http://helpx.adobe.com/flash-player/kb/flash-player-google-chrome.html#How_can_I_run_debugger_or_alternate_versions_of_Flash_Player_in_Google_Chrome) and enable a system-wide version of Flash instead.
|
||||
|
||||
Please follow this process; it's the best way to get your work included in the project:
|
||||
Commit and push changes as you go (using git directly). Write thorough descriptions of your changes in your commit messages.
|
||||
|
||||
1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes:
|
||||
```bash
|
||||
git add .
|
||||
git commit -av
|
||||
git push
|
||||
```
|
||||
|
||||
```bash
|
||||
# Clones your fork of the repo into the current directory in terminal
|
||||
git clone https://github.com/<your-username>/html5-boilerplate.git
|
||||
# Navigate to the newly cloned directory
|
||||
cd html5-boilerplate
|
||||
# Assigns the original repo to a remote called "upstream"
|
||||
git remote add upstream https://github.com/h5bp/html5-boilerplate.git
|
||||
```
|
||||
> GitHub allows you to close an issue through your commit message using the [fixes](https://github.com/blog/831-issues-2-0-the-next-generation) keyword.
|
||||
>
|
||||
> ```bash
|
||||
> My commit message. fixes #123
|
||||
> Testing: (briefly describe any testing here, for example, 'unit tests and cross-browser manual tests around playback and network interruption')
|
||||
> ```
|
||||
|
||||
2. If you cloned a while ago, get the latest changes from upstream:
|
||||
### Submitting your changes
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
git pull upstream master
|
||||
```
|
||||
First, thoroughly test your feature or fix, including writing tests to make sure your change doesn't get regressed in a future update. If you're fixing a bug, we recommend in addition to testing the fix itself, to do some testing around the areas that your fix has touched. For example, a brief smoketest of the player never hurts.
|
||||
|
||||
3. Create a new topic branch to contain your feature, change, or fix:
|
||||
Make sure your changes are pushed to origin
|
||||
|
||||
```bash
|
||||
git checkout -b <topic-branch-name>
|
||||
```
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your pull request is unlikely be merged into the main project. Use git's [interactive rebase](https://help.github.com/articles/interactive-rebase) feature to tidy up your commits before making them public.
|
||||
Use contrib to submit a pull request (make sure you're in your feature branch)
|
||||
|
||||
5. Locally merge (or rebase) the upstream development branch into your topic branch:
|
||||
```bash
|
||||
contrib feature submit
|
||||
```
|
||||
|
||||
```bash
|
||||
git pull [--rebase] upstream master
|
||||
```
|
||||
You'll be prompted for title and description for the Pull Request. After that, contrib will use Git to submit your pull request to video.js.
|
||||
|
||||
6. Push your topic branch up to your fork:
|
||||
You're Done! (except for cleanup.) To clean up your feature or hotfix branch:
|
||||
|
||||
```bash
|
||||
git push origin <topic-branch-name>
|
||||
```
|
||||
First, checkout your feature or issue branch:
|
||||
|
||||
10. [Open a Pull Request](http://help.github.com/send-pull-requests/) with a clear title and description.
|
||||
```bash
|
||||
git checkout (branchname)
|
||||
```
|
||||
|
||||
# Code Style
|
||||
Run this command to clean up your feature:
|
||||
|
||||
```bash
|
||||
contrib feature delete
|
||||
```
|
||||
|
||||
Run this command to clean up your bug fix:
|
||||
|
||||
```bash
|
||||
contrib hotfix delete
|
||||
```
|
||||
> PLEASE NOTE: THIS WILL DELETE YOUR LOCAL AND REMOTE COPIES OF THE FEATURE.
|
||||
> This is meant to clean up your local and remote branches, so make sure any changes you don't want to lose have been pulled into the parent project or another branch first.
|
||||
|
||||
Code Style Guide
|
||||
----------------
|
||||
Please follow [Google's JavaScript Style Guide](http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml) to the letter. If your editor supports [.editorconfig](http://editorconfig.org/#download) it will make it easier to manage differences from your own coding style.
|
||||
|
||||
### Style examples include:
|
||||
@@ -162,11 +266,6 @@ Please follow [Google's JavaScript Style Guide](http://google-styleguide.googlec
|
||||
|
||||
If you happen to find something in the codebase that does not follow the style guide, that's a good opportunity to make your first contribution!
|
||||
|
||||
# Other Video.js Pojects
|
||||
* [Video.js SWF](https://github.com/zencoder/video-js-swf) - The light-weight flash video player that makes flash work like HTML5 video. This allows player skins, plugins, and other features to work with both HTML5 and Flash.
|
||||
|
||||
* [Videojs.com](http://videojs.com) - The public site with helpful tools and information about Video.js.
|
||||
|
||||
---
|
||||
### Doc Credit
|
||||
This doc was inspired by some great contribution guide examples including [contribute.md template](https://github.com/contribute-md/contribute-md-template),
|
||||
|
||||
+5
-279
@@ -1,281 +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) {
|
||||
var pkg, s3, semver, version, verParts;
|
||||
|
||||
semver = require('semver');
|
||||
pkg = grunt.file.readJSON('package.json');
|
||||
|
||||
try {
|
||||
s3 = grunt.file.readJSON('.s3config.json');
|
||||
} catch(e) {
|
||||
s3 = {};
|
||||
}
|
||||
|
||||
verParts = pkg.version.split('.');
|
||||
version = {
|
||||
full: pkg.version,
|
||||
major: verParts[0],
|
||||
minor: verParts[1],
|
||||
patch: verParts[2]
|
||||
};
|
||||
version.majorMinor = version.major + '.' + version.minor;
|
||||
|
||||
// Project configuration.
|
||||
grunt.initConfig({
|
||||
pkg: pkg,
|
||||
|
||||
build: {
|
||||
src: 'src/js/dependencies.js',
|
||||
options: {
|
||||
baseDir: 'src/js/'
|
||||
}
|
||||
},
|
||||
clean: {
|
||||
build: ['build/files/*'],
|
||||
dist: ['dist/*']
|
||||
},
|
||||
jshint: {
|
||||
src: {
|
||||
src: ['src/js/*.js', 'Gruntfile.js', 'test/unit/*.js'],
|
||||
options: {
|
||||
jshintrc: '.jshintrc'
|
||||
}
|
||||
}
|
||||
},
|
||||
minify: {
|
||||
source:{
|
||||
src: ['build/files/combined.video.js', 'build/compiler/goog.base.js', 'src/js/exports.js'],
|
||||
externs: ['src/js/media/flash.externs.js'],
|
||||
dest: 'build/files/minified.video.js'
|
||||
},
|
||||
tests: {
|
||||
src: ['build/files/combined.video.js', 'build/compiler/goog.base.js', 'src/js/exports.js', 'test/unit/*.js', '!test/unit/api.js'],
|
||||
externs: ['src/js/media/flash.externs.js', 'test/qunit/qunit-externs.js'],
|
||||
dest: 'build/files/test.minified.video.js'
|
||||
}
|
||||
},
|
||||
dist: {},
|
||||
qunit: {
|
||||
source: ['test/index.html'],
|
||||
minified: ['test/minified.html'],
|
||||
minified_api: ['test/minified-api.html']
|
||||
},
|
||||
watch: {
|
||||
files: [ 'src/**/*.js', 'test/unit/*.js' ],
|
||||
tasks: 'dev'
|
||||
},
|
||||
copy: {
|
||||
minor: {
|
||||
files: [
|
||||
{expand: true, cwd: 'build/files/', src: ['*'], dest: 'dist/'+version.majorMinor+'/', filter: 'isFile'} // includes files in path
|
||||
]
|
||||
},
|
||||
patch: {
|
||||
files: [
|
||||
{expand: true, cwd: 'build/files/', src: ['*'], dest: 'dist/'+version.full+'/', filter: 'isFile'} // includes files in path
|
||||
]
|
||||
}
|
||||
},
|
||||
s3: {
|
||||
options: s3,
|
||||
minor: {
|
||||
upload: [
|
||||
{
|
||||
src: 'dist/cdn/*',
|
||||
dest: 'vjs/'+version.majorMinor+'/',
|
||||
rel: 'dist/cdn/',
|
||||
headers: {
|
||||
'Cache-Control': 'public, max-age=2628000'
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
patch: {
|
||||
upload: [
|
||||
{
|
||||
src: 'dist/cdn/*',
|
||||
dest: 'vjs/'+version.full+'/',
|
||||
rel: 'dist/cdn/',
|
||||
headers: {
|
||||
'Cache-Control': 'public, max-age=31536000'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
cssmin: {
|
||||
minify: {
|
||||
expand: true,
|
||||
cwd: 'build/files/',
|
||||
src: ['video-js.css'],
|
||||
dest: 'build/files/',
|
||||
ext: '.min.css'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-contrib-jshint');
|
||||
grunt.loadNpmTasks('grunt-contrib-qunit');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
||||
grunt.loadNpmTasks('grunt-s3');
|
||||
grunt.loadNpmTasks('contribflow');
|
||||
|
||||
// Default task.
|
||||
grunt.registerTask('default', ['jshint', 'build', 'minify', 'dist']);
|
||||
// Development watch task
|
||||
grunt.registerTask('dev', ['jshint', 'build', 'qunit:source']);
|
||||
grunt.registerTask('test', ['jshint', 'build', 'minify', 'qunit']);
|
||||
|
||||
var fs = require('fs'),
|
||||
gzip = require('zlib').gzip;
|
||||
|
||||
grunt.registerMultiTask('build', 'Building Source', function(){
|
||||
/*jshint undef:false, evil:true */
|
||||
|
||||
// Loading predefined source order from source-loader.js
|
||||
// Trust me, this is the easist way to do it so far.
|
||||
var blockSourceLoading = true;
|
||||
var sourceFiles; // Needed to satisfy jshint
|
||||
eval(grunt.file.read('./build/source-loader.js'));
|
||||
|
||||
// Fix windows file path delimiter issue
|
||||
var i = sourceFiles.length;
|
||||
while (i--) {
|
||||
sourceFiles[i] = sourceFiles[i].replace(/\\/g, '/');
|
||||
}
|
||||
|
||||
// Create a combined sources file. https://github.com/zencoder/video-js/issues/287
|
||||
var combined = '';
|
||||
sourceFiles.forEach(function(result){
|
||||
combined += grunt.file.read(result);
|
||||
});
|
||||
// Replace CDN version ref in js. Use major/minor version.
|
||||
combined = combined.replace(/GENERATED_CDN_VSN/g, version.majorMinor);
|
||||
grunt.file.write('build/files/combined.video.js', combined);
|
||||
|
||||
// Copy over other files
|
||||
grunt.file.copy('src/css/video-js.css', 'build/files/video-js.css');
|
||||
grunt.file.copy('src/css/video-js.png', 'build/files/video-js.png');
|
||||
grunt.file.copy('src/swf/video-js.swf', 'build/files/video-js.swf');
|
||||
|
||||
// Inject version number into css file
|
||||
var css = grunt.file.read('build/files/video-js.css');
|
||||
css = css.replace(/GENERATED_AT_BUILD/g, version.full);
|
||||
grunt.file.write('build/files/video-js.css', css);
|
||||
|
||||
// Copy over font files
|
||||
grunt.file.recurse('src/css/font', function(absdir, rootdir, subdir, filename) {
|
||||
// Block .DS_Store files
|
||||
if ('filename'.substring(0,1) !== '.') {
|
||||
grunt.file.copy(absdir, 'build/files/font/' + filename);
|
||||
}
|
||||
});
|
||||
|
||||
// Minify CSS
|
||||
grunt.task.run(['cssmin']);
|
||||
});
|
||||
|
||||
grunt.registerMultiTask('minify', 'Minify JS files using Closure Compiler.', function() {
|
||||
var done = this.async();
|
||||
var exec = require('child_process').exec;
|
||||
|
||||
var externs = this.data.externs || [];
|
||||
var dest = this.data.dest;
|
||||
var filePatterns = [];
|
||||
|
||||
// Make sure deeper directories exist for compiler
|
||||
grunt.file.write(dest, '');
|
||||
|
||||
if (this.data.sourcelist) {
|
||||
filePatterns = filePatterns.concat(grunt.file.read(this.data.sourcelist).split(','));
|
||||
}
|
||||
if (this.data.src) {
|
||||
filePatterns = filePatterns.concat(this.data.src);
|
||||
}
|
||||
|
||||
// Build closure compiler shell command
|
||||
var command = 'java -jar build/compiler/compiler.jar'
|
||||
+ ' --compilation_level ADVANCED_OPTIMIZATIONS'
|
||||
// + ' --formatting=pretty_print'
|
||||
+ ' --js_output_file=' + dest
|
||||
+ ' --create_source_map ' + dest + '.map --source_map_format=V3'
|
||||
+ ' --jscomp_warning=checkTypes --warning_level=VERBOSE'
|
||||
+ ' --output_wrapper "/*! Video.js v' + version.full + ' ' + pkg.copyright + ' */\n (function() {%output%})();//@ sourceMappingURL=video.js.map"';
|
||||
|
||||
// Add each js file
|
||||
grunt.file.expand(filePatterns).forEach(function(file){
|
||||
command += ' --js='+file;
|
||||
});
|
||||
|
||||
// Add externs
|
||||
externs.forEach(function(extern){
|
||||
command += ' --externs='+extern;
|
||||
});
|
||||
|
||||
// Run command
|
||||
exec(command, { maxBuffer: 500*1024 }, function(err, stdout, stderr){
|
||||
|
||||
if (err) {
|
||||
grunt.warn(err);
|
||||
done(false);
|
||||
}
|
||||
|
||||
if (stdout) {
|
||||
grunt.log.writeln(stdout);
|
||||
}
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
grunt.registerTask('dist', 'Creating distribution', function(){
|
||||
var exec = require('child_process').exec;
|
||||
var done = this.async();
|
||||
var css, jsmin, jsdev;
|
||||
|
||||
// Manually copy each source file
|
||||
grunt.file.copy('build/files/minified.video.js', 'dist/video-js/video.js');
|
||||
grunt.file.copy('build/files/combined.video.js', 'dist/video-js/video.dev.js');
|
||||
grunt.file.copy('build/files/video-js.css', 'dist/video-js/video-js.css');
|
||||
grunt.file.copy('build/files/video-js.min.css', 'dist/video-js/video-js.min.css');
|
||||
grunt.file.copy('build/files/video-js.swf', 'dist/video-js/video-js.swf');
|
||||
grunt.file.copy('build/demo-files/demo.html', 'dist/video-js/demo.html');
|
||||
grunt.file.copy('build/demo-files/demo.captions.vtt', 'dist/video-js/demo.captions.vtt');
|
||||
|
||||
// Copy over font files
|
||||
grunt.file.recurse('build/files/font', function(absdir, rootdir, subdir, filename) {
|
||||
// Block .DS_Store files
|
||||
if ('filename'.substring(0,1) !== '.') {
|
||||
grunt.file.copy(absdir, 'dist/video-js/font/' + filename);
|
||||
}
|
||||
});
|
||||
|
||||
// CDN version uses already hosted font files
|
||||
// Minified version only, doesn't need demo files
|
||||
grunt.file.copy('build/files/minified.video.js', 'dist/cdn/video.js');
|
||||
grunt.file.copy('build/files/video-js.min.css', 'dist/cdn/video-js.css');
|
||||
grunt.file.copy('build/files/video-js.swf', 'dist/cdn/video-js.swf');
|
||||
|
||||
// Replace font urls with CDN versions
|
||||
css = grunt.file.read('dist/cdn/video-js.css');
|
||||
css = css.replace(/font\//g, '../f/1/');
|
||||
grunt.file.write('dist/cdn/video-js.css', css);
|
||||
|
||||
// Zip up into video-js-VERSION.zip
|
||||
exec('cd dist && zip -r video-js-'+version.full+'.zip video-js && cd ..', { maxBuffer: 500*1024 }, function(err, stdout, stderr){
|
||||
|
||||
if (err) {
|
||||
grunt.warn(err);
|
||||
done(false);
|
||||
}
|
||||
|
||||
if (stdout) {
|
||||
grunt.log.writeln(stdout);
|
||||
}
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
require('./build/grunt.js')(grunt);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
## 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.
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Copyright 2013 Brightcove, Inc.
|
||||
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.
|
||||
|
||||
@@ -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
|
||||
- [ ] 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
|
||||
+46
-33
@@ -1,50 +1,63 @@
|
||||

|
||||
|
||||
# [Video.js - HTML5 and Flash Video Player](http://videojs.com) [](https://travis-ci.org/zencoder/video-js)
|
||||
# [Video.js - HTML5 Video Player](http://videojs.com)
|
||||
[](https://travis-ci.org/videojs/video.js)
|
||||
[](https://coveralls.io/github/videojs/video.js?branch=master)
|
||||
|
||||
Visit the main site at [videojs.com](http://videojs.com) for download options and instructions.
|
||||
[](https://nodei.co/npm/video.js/)
|
||||
|
||||
### PLEASE EXCUSE OUR DUST
|
||||
> 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](https://github.com/videojs/video.js/wiki/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 websites.
|
||||
|
||||
We're finishing up a big overhaul of the libary which includes
|
||||
## Quick start
|
||||
Thanks to the awesome folks over at [Fastly](http://www.fastly.com/), there's a free, CDN hosted version of Video.js that anyone can use.
|
||||
Also, check out the [Getting Started](http://videojs.com/getting-started/) page on our website which has the latest urls as well.
|
||||
Simply add these includes to your document's
|
||||
`<head>`:
|
||||
|
||||
* Closure compiler advanced mode support for drastically better minification over previous versions
|
||||
* Flashy new automated builds and test using node.js and grunt
|
||||
```html
|
||||
<link href="//vjs.zencdn.net/5.0/video-js.min.css" rel="stylesheet">
|
||||
<script src="//vjs.zencdn.net/5.0/video.min.js"></script>
|
||||
```
|
||||
|
||||
Check out our [contributing guide](https://github.com/zencoder/video-js/blob/master/CONTRIBUTING.md) for info on building a local version.
|
||||
Then, whenever you want to use Video.js you can simply use the `<video>` element as your normally would, but with an additional `data-setup` attribute containing any Video.js options. These options
|
||||
can include any Video.js option plus potential [plugin](http://videojs.com/plugins/) options, just make sure they're valid JSON!
|
||||
|
||||
## About
|
||||
```html
|
||||
<video id="really-cool-video" class="video-js vjs-default-skin" controls
|
||||
preload="auto" width="640" height="264" poster="really-cool-video-poster.jpg"
|
||||
data-setup='{}'>
|
||||
<source src="really-cool-video.mp4" type="video/mp4">
|
||||
<source src="really-cool-video.webm" type="video/webm">
|
||||
<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>
|
||||
```
|
||||
|
||||
Video.js was built to provide a fast and easy way to embed and work with video in a web page.
|
||||
It was built from the ground up with the assumption that HTML5 is the future of web video, however it supports Flash equally well for older browsers and for advanced features not yet supported in HTML5.
|
||||
If you don't want to use auto-setup, you can leave off the `data-setup` attribute and initialize a video element manually.
|
||||
|
||||
Some of the focuses of Video.js are:
|
||||
```javascript
|
||||
var player = videojs('really-cool-video', { /* Options */ }, function() {
|
||||
console.log('Good to go!');
|
||||
|
||||
- Universal browser and device support
|
||||
- Fast player loading
|
||||
- Easily skinned (themed/chromed) using just CSS
|
||||
- A JavaScript API for controlling the video that works consistently across video platforms (HTML5, Flash, and soon other players like youtube) as well as devices
|
||||
this.play(); // if you don't trust autoplay for some reason
|
||||
|
||||
## Getting Started
|
||||
// How about an event listener?
|
||||
this.on('ended', function() {
|
||||
console.log('awww...over so soon?');
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
Check out our [getting started guide](http://videojs.com/#section5).
|
||||
If you're ready to dive in, the [documentation](http://docs.videojs.com) is the first place to go for more information.
|
||||
|
||||
## Contributing
|
||||
Video.js is a free and open source library, and we appreciate any help you're willing to give. Check out the [contributing guide](CONTRIBUTING.md).
|
||||
|
||||
Check out our [contributing guide](https://github.com/zencoder/video-js/blob/master/CONTRIBUTING.md).
|
||||
|
||||
_Video.js uses [BrowserStack](https://browserstack.com) for compatibility testing_
|
||||
## Building your own Video.js from source
|
||||
To build your own custom version read the section on [contributing code](CONTRIBUTING.md#contributing-code) and ["Building your own copy"](CONTRIBUTING.md#building-your-own-copy-of-videojs) in the contributing guide.
|
||||
## License
|
||||
|
||||
Copyright 2013 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.
|
||||
|
||||
Video.js is licensed under the Apache License, Version 2.0. [View the license file](LICENSE)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
major: 3
|
||||
minor: 2
|
||||
patch: 3
|
||||
pre:
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "video.js",
|
||||
"description": "An HTML5 and Flash video player with a common API and skin for both.",
|
||||
"main": [
|
||||
"dist/video.js",
|
||||
"dist/video-js.css"
|
||||
],
|
||||
"moduleType": "es6",
|
||||
"keywords": [
|
||||
"videojs",
|
||||
"html5",
|
||||
"flash",
|
||||
"video",
|
||||
"player"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests",
|
||||
"build"
|
||||
]
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
[
|
||||
{
|
||||
"os": "win",
|
||||
"browser": "chrome",
|
||||
"version": "27.0"
|
||||
},
|
||||
{
|
||||
"os": "win",
|
||||
"browser": "firefox",
|
||||
"version": "20.0"
|
||||
},
|
||||
{
|
||||
"os": "win",
|
||||
"browser": "ie",
|
||||
"version": "9.0"
|
||||
},
|
||||
{
|
||||
"os": "win",
|
||||
"browser": "ie",
|
||||
"version": "10.0"
|
||||
},
|
||||
{
|
||||
"os": "ios",
|
||||
"device": "iPhone 5",
|
||||
"version": "6.0"
|
||||
},
|
||||
{
|
||||
"os": "ios",
|
||||
"device": "iPad 3rd (6.0)",
|
||||
"version": "6.0"
|
||||
},
|
||||
{
|
||||
"os": "android",
|
||||
"device": "Samsung Galaxy Tab 2 10.1",
|
||||
"version": "4.0"
|
||||
}
|
||||
]
|
||||
Arquivo executável
+36
@@ -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
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var version = require('../../package.json').version;
|
||||
|
||||
console.log(version);
|
||||
@@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
||||
@@ -1,292 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 The Closure Compiler Authors.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
//
|
||||
// Contents
|
||||
//
|
||||
|
||||
The Closure Compiler performs checking, instrumentation, and
|
||||
optimizations on JavaScript code. The purpose of this README is to
|
||||
explain how to build and run the Closure Compiler.
|
||||
|
||||
The Closure Compiler requires Java 6 or higher.
|
||||
http://www.java.com/
|
||||
|
||||
|
||||
//
|
||||
// Building The Closure Compiler
|
||||
//
|
||||
|
||||
There are three ways to get a Closure Compiler executable.
|
||||
|
||||
1) Use one we built for you.
|
||||
|
||||
Pre-built Closure binaries can be found at
|
||||
http://code.google.com/p/closure-compiler/downloads/list
|
||||
|
||||
|
||||
2) Check out the source and build it with Apache Ant.
|
||||
|
||||
First, check out the full source tree of the Closure Compiler. There
|
||||
are instructions on how to do this at the project site.
|
||||
http://code.google.com/p/closure-compiler/source/checkout
|
||||
|
||||
Apache Ant is a cross-platform build tool.
|
||||
http://ant.apache.org/
|
||||
|
||||
At the root of the source tree, there is an Ant file named
|
||||
build.xml. To use it, navigate to the same directory and type the
|
||||
command
|
||||
|
||||
ant jar
|
||||
|
||||
This will produce a jar file called "build/compiler.jar".
|
||||
|
||||
|
||||
3) Check out the source and build it with Eclipse.
|
||||
|
||||
Eclipse is a cross-platform IDE.
|
||||
http://www.eclipse.org/
|
||||
|
||||
Under Eclipse's File menu, click "New > Project ..." and create a
|
||||
"Java Project." You will see an options screen. Give the project a
|
||||
name, select "Create project from existing source," and choose the
|
||||
root of the checked-out source tree as the existing directory. Verify
|
||||
that you are using JRE version 6 or higher.
|
||||
|
||||
Eclipse can use the build.xml file to discover rules. When you
|
||||
navigate to the build.xml file, you will see all the build rules in
|
||||
the "Outline" pane. Run the "jar" rule to build the compiler in
|
||||
build/compiler.jar.
|
||||
|
||||
|
||||
//
|
||||
// Running The Closure Compiler
|
||||
//
|
||||
|
||||
Once you have the jar binary, running the Closure Compiler is straightforward.
|
||||
|
||||
On the command line, type
|
||||
|
||||
java -jar compiler.jar
|
||||
|
||||
This starts the compiler in interactive mode. Type
|
||||
|
||||
var x = 17 + 25;
|
||||
|
||||
then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
|
||||
and "Enter" again. The Compiler will respond:
|
||||
|
||||
var x=42;
|
||||
|
||||
The Closure Compiler has many options for reading input from a file,
|
||||
writing output to a file, checking your code, and running
|
||||
optimizations. To learn more, type
|
||||
|
||||
java -jar compiler.jar --help
|
||||
|
||||
You can read more detailed documentation about the many flags at
|
||||
http://code.google.com/closure/compiler/docs/gettingstarted_app.html
|
||||
|
||||
|
||||
//
|
||||
// Compiling Multiple Scripts
|
||||
//
|
||||
|
||||
If you have multiple scripts, you should compile them all together with
|
||||
one compile command.
|
||||
|
||||
java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
|
||||
|
||||
The Closure Compiler will concatenate the files in the order they're
|
||||
passed at the command line.
|
||||
|
||||
If you need to compile many, many scripts together, you may start to
|
||||
run into problems with managing dependencies between scripts. You
|
||||
should check out the Closure Library. It contains functions for
|
||||
enforcing dependencies between scripts, and a tool called calcdeps.py
|
||||
that knows how to give scripts to the Closure Compiler in the right
|
||||
order.
|
||||
|
||||
http://code.google.com/p/closure-library/
|
||||
|
||||
//
|
||||
// Licensing
|
||||
//
|
||||
|
||||
Unless otherwise stated, all source files are licensed under
|
||||
the Apache License, Version 2.0.
|
||||
|
||||
|
||||
-----
|
||||
Code under:
|
||||
src/com/google/javascript/rhino
|
||||
test/com/google/javascript/rhino
|
||||
|
||||
URL: http://www.mozilla.org/rhino
|
||||
Version: 1.5R3, with heavy modifications
|
||||
License: Netscape Public License and MPL / GPL dual license
|
||||
|
||||
Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
|
||||
implementation of JavaScript for the JVM. The JavaScript parser and
|
||||
the parse tree data structures were extracted and modified
|
||||
significantly for use by Google's JavaScript compiler.
|
||||
|
||||
Local Modifications: The packages have been renamespaced. All code not
|
||||
relevant to parsing has been removed. A JsDoc parser and static typing
|
||||
system have been added.
|
||||
|
||||
|
||||
-----
|
||||
Code in:
|
||||
lib/rhino
|
||||
|
||||
Rhino
|
||||
URL: http://www.mozilla.org/rhino
|
||||
Version: Trunk
|
||||
License: Netscape Public License and MPL / GPL dual license
|
||||
|
||||
Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
|
||||
|
||||
Local Modifications: Minor changes to parsing JSDoc that usually get pushed
|
||||
up-stream to Rhino trunk.
|
||||
|
||||
|
||||
-----
|
||||
Code in:
|
||||
lib/args4j.jar
|
||||
|
||||
Args4j
|
||||
URL: https://args4j.dev.java.net/
|
||||
Version: 2.0.16
|
||||
License: MIT
|
||||
|
||||
Description:
|
||||
args4j is a small Java class library that makes it easy to parse command line
|
||||
options/arguments in your CUI application.
|
||||
|
||||
Local Modifications: None.
|
||||
|
||||
|
||||
-----
|
||||
Code in:
|
||||
lib/guava.jar
|
||||
|
||||
Guava Libraries
|
||||
URL: http://code.google.com/p/guava-libraries/
|
||||
Version: 13.0.1
|
||||
License: Apache License 2.0
|
||||
|
||||
Description: Google's core Java libraries.
|
||||
|
||||
Local Modifications: None.
|
||||
|
||||
|
||||
-----
|
||||
Code in:
|
||||
lib/jsr305.jar
|
||||
|
||||
Annotations for software defect detection
|
||||
URL: http://code.google.com/p/jsr-305/
|
||||
Version: svn revision 47
|
||||
License: BSD License
|
||||
|
||||
Description: Annotations for software defect detection.
|
||||
|
||||
Local Modifications: None.
|
||||
|
||||
|
||||
-----
|
||||
Code in:
|
||||
lib/jarjar.jar
|
||||
|
||||
Jar Jar Links
|
||||
URL: http://jarjar.googlecode.com/
|
||||
Version: 1.1
|
||||
License: Apache License 2.0
|
||||
|
||||
Description:
|
||||
A utility for repackaging Java libraries.
|
||||
|
||||
Local Modifications: None.
|
||||
|
||||
|
||||
----
|
||||
Code in:
|
||||
lib/junit.jar
|
||||
|
||||
JUnit
|
||||
URL: http://sourceforge.net/projects/junit/
|
||||
Version: 4.10
|
||||
License: Common Public License 1.0
|
||||
|
||||
Description: A framework for writing and running automated tests in Java.
|
||||
|
||||
Local Modifications: None.
|
||||
|
||||
|
||||
---
|
||||
Code in:
|
||||
lib/protobuf-java.jar
|
||||
|
||||
Protocol Buffers
|
||||
URL: http://code.google.com/p/protobuf/
|
||||
Version: 2.4.1
|
||||
License: New BSD License
|
||||
|
||||
Description: Supporting libraries for protocol buffers,
|
||||
an encoding of structured data.
|
||||
|
||||
Local Modifications: None
|
||||
|
||||
|
||||
---
|
||||
Code in:
|
||||
lib/ant.jar
|
||||
lib/ant-launcher.jar
|
||||
|
||||
URL: http://ant.apache.org/bindownload.cgi
|
||||
Version: 1.8.1
|
||||
License: Apache License 2.0
|
||||
Description:
|
||||
Ant is a Java based build tool. In theory it is kind of like "make"
|
||||
without make's wrinkles and with the full portability of pure java code.
|
||||
|
||||
Local Modifications: None
|
||||
|
||||
|
||||
---
|
||||
Code in:
|
||||
lib/json.jar
|
||||
URL: http://json.org/java/index.html
|
||||
Version: JSON version 20090211
|
||||
License: MIT license
|
||||
Description:
|
||||
JSON is a set of java files for use in transmitting data in JSON format.
|
||||
|
||||
Local Modifications: None
|
||||
|
||||
---
|
||||
Code in:
|
||||
tools/maven-ant-tasks-2.1.3.jar
|
||||
URL: http://maven.apache.org
|
||||
Version 2.1.3
|
||||
License: Apache License 2.0
|
||||
Description:
|
||||
Maven Ant tasks are used to manage dependencies and to install/deploy to
|
||||
maven repositories.
|
||||
|
||||
Local Modifications: None
|
||||
Arquivo binário não exibido.
Diferenças do arquivo suprimidas por serem muito extensas
Carregar Diff
@@ -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>
|
||||
videojs.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="demo.captions.vtt" srclang="en" label="English" />
|
||||
</video>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,519 @@
|
||||
import {gruntCustomizer, gruntOptionsMaker} from './options-customizer.js';
|
||||
module.exports = function(grunt) {
|
||||
require('time-grunt')(grunt);
|
||||
|
||||
let _ = require('lodash-compat');
|
||||
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: {
|
||||
debug: true,
|
||||
standalone: 'videojs'
|
||||
},
|
||||
plugin: [
|
||||
['browserify-derequire']
|
||||
],
|
||||
transform: [
|
||||
require('babelify').configure({
|
||||
sourceMapRelative: './',
|
||||
loose: ['all']
|
||||
}),
|
||||
['browserify-versionify', {
|
||||
placeholder: '__VERSION__',
|
||||
version: pkg.version
|
||||
}],
|
||||
['browserify-versionify', {
|
||||
placeholder: '__VERSION_NO_PATCH__',
|
||||
version: version.majorMinor
|
||||
}],
|
||||
['browserify-versionify', {
|
||||
placeholder: '__SWF_VERSION__',
|
||||
version: pkg.dependencies['videojs-swf']
|
||||
}]
|
||||
]
|
||||
};
|
||||
|
||||
const githubReleaseDefaults = {
|
||||
options: {
|
||||
release: {
|
||||
tag_name: 'v'+ version.full,
|
||||
name: version.full,
|
||||
body: require('chg').find(version.full).changesRaw
|
||||
},
|
||||
},
|
||||
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/*'],
|
||||
dist: ['dist/*']
|
||||
},
|
||||
jshint: {
|
||||
src: {
|
||||
src: ['src/js/**/*.js', 'Gruntfile.js', 'test/unit/**/*.js'],
|
||||
options: {
|
||||
jshintrc: '.jshintrc'
|
||||
}
|
||||
}
|
||||
},
|
||||
uglify: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
sourceMapIn: 'build/temp/video.js.map',
|
||||
sourceMapRoot: '../../src/js',
|
||||
preserveComments: 'some',
|
||||
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: {
|
||||
novtt: {
|
||||
files: ['build/temp/video.js'],
|
||||
tasks: ['concat:novtt']
|
||||
},
|
||||
minify: {
|
||||
files: ['build/temp/video.js'],
|
||||
tasks: ['uglify']
|
||||
},
|
||||
skin: {
|
||||
files: ['src/css/**/*'],
|
||||
tasks: ['sass', 'wrapcodepoints']
|
||||
},
|
||||
jshint: {
|
||||
files: ['src/**/*', 'test/unit/**/*.js', 'Gruntfile.js'],
|
||||
tasks: 'jshint'
|
||||
}
|
||||
},
|
||||
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' },
|
||||
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'] },
|
||||
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', 'component.json']
|
||||
},
|
||||
minor: {
|
||||
options: {
|
||||
release: 'minor'
|
||||
},
|
||||
src: ['package.json', 'component.json']
|
||||
},
|
||||
patch: {
|
||||
options: {
|
||||
release: 'patch'
|
||||
},
|
||||
src: ['package.json', 'component.json']
|
||||
},
|
||||
prerelease: {
|
||||
options: {
|
||||
release: 'prerelease'
|
||||
},
|
||||
src: ['package.json', 'component.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
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
browserify: {
|
||||
options: browserifyGruntOptions(),
|
||||
build: {
|
||||
files: {
|
||||
'build/temp/video.js': ['src/js/video.js']
|
||||
}
|
||||
},
|
||||
dist: {
|
||||
options: browserifyGruntOptions({
|
||||
transform: [
|
||||
['browserify-versionify', {
|
||||
placeholder: '../node_modules/videojs-vtt.js/dist/vtt.js',
|
||||
version: 'https://cdn.rawgit.com/gkatsev/vtt.js/vjs-v0.12.1/dist/vtt.min.js'
|
||||
}],
|
||||
]
|
||||
}),
|
||||
files: {
|
||||
'build/temp/video.js': ['src/js/video.js']
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
options: {
|
||||
watch: true,
|
||||
keepAlive: true
|
||||
},
|
||||
files: {
|
||||
'build/temp/video.js': ['src/js/video.js']
|
||||
}
|
||||
},
|
||||
tests: {
|
||||
options: {
|
||||
browserifyOptions: {
|
||||
debug: true,
|
||||
standalone: false
|
||||
},
|
||||
plugin: [
|
||||
['proxyquireify/plugin']
|
||||
],
|
||||
banner: false,
|
||||
watch: true,
|
||||
keepAlive: true
|
||||
},
|
||||
files: {
|
||||
'build/temp/tests.js': [
|
||||
'test/globals-shim.js',
|
||||
'test/unit/**/*.js'
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
exorcise: {
|
||||
build: {
|
||||
options: {},
|
||||
files: {
|
||||
'build/temp/video.js.map': ['build/temp/video.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: {
|
||||
novtt: {
|
||||
options: {
|
||||
separator: '\n'
|
||||
},
|
||||
src: ['build/temp/video.js'],
|
||||
dest: 'build/temp/alt/video.novtt.js'
|
||||
},
|
||||
vtt: {
|
||||
options: {
|
||||
separator: '\n',
|
||||
},
|
||||
src: ['build/temp/video.js', 'node_modules/videojs-vtt.js/dist/vtt.js'],
|
||||
dest: 'build/temp/video.js',
|
||||
},
|
||||
},
|
||||
concurrent: {
|
||||
options: {
|
||||
logConcurrentOutput: true
|
||||
},
|
||||
// Run multiple watch tasks in parallel
|
||||
// Needed so watchify can cache intelligently
|
||||
watchAll: [
|
||||
'watch',
|
||||
'browserify:watch',
|
||||
'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']
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// load all the npm grunt tasks
|
||||
require('load-grunt-tasks')(grunt);
|
||||
grunt.loadNpmTasks('videojs-doc-generator');
|
||||
grunt.loadNpmTasks('chg');
|
||||
|
||||
const buildDependents = [
|
||||
'clean:build',
|
||||
|
||||
'jshint',
|
||||
'browserify:build',
|
||||
'exorcise:build',
|
||||
'concat:novtt',
|
||||
'concat:vtt',
|
||||
'usebanner:novtt',
|
||||
'usebanner:vtt',
|
||||
'uglify',
|
||||
|
||||
'sass',
|
||||
'wrapcodepoints',
|
||||
'version:css',
|
||||
'cssmin',
|
||||
|
||||
'copy:fonts',
|
||||
'copy:swf',
|
||||
'copy:ie8',
|
||||
'vjslanguages'
|
||||
];
|
||||
|
||||
grunt.registerTask('build', buildDependents);
|
||||
|
||||
grunt.registerTask(
|
||||
'build:dist',
|
||||
buildDependents.map(task => task === 'browserify:build' ? 'browserify:dist' : task)
|
||||
);
|
||||
|
||||
grunt.registerTask('dist', [
|
||||
'clean:dist',
|
||||
'build:dist',
|
||||
'copy:dist',
|
||||
'copy:examples',
|
||||
'zip:dist'
|
||||
]);
|
||||
|
||||
// Sass turns unicode codepoints into utf8 characters.
|
||||
// We don't want that so we unwrapped them in the templates/scss.hbs file.
|
||||
// After sass has generated our css file, we need to wrap the codepoints
|
||||
// in quotes for it to work.
|
||||
grunt.registerTask('wrapcodepoints', function() {
|
||||
const sassConfig = grunt.config.get('sass.build.files');
|
||||
const cssPath = Object.keys(sassConfig)[0];
|
||||
const css = grunt.file.read(cssPath);
|
||||
grunt.file.write(cssPath, css.replace(/(\\f\w+);/g, "'$1';"));
|
||||
});
|
||||
|
||||
// Default task - build and test
|
||||
grunt.registerTask('default', ['test']);
|
||||
|
||||
grunt.registerTask('test', ['build', 'karma:defaults']);
|
||||
|
||||
// Run while developing
|
||||
grunt.registerTask('dev', ['build', 'connect:dev', 'concurrent:watchSandbox']);
|
||||
|
||||
grunt.registerTask('watchAll', ['build', 'connect:dev', 'concurrent:watchAll']);
|
||||
|
||||
// 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');
|
||||
};
|
||||
@@ -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>
|
||||
<% } %> */
|
||||
@@ -0,0 +1,49 @@
|
||||
import _ from 'lodash-compat';
|
||||
/**
|
||||
* 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 };
|
||||
@@ -1,72 +0,0 @@
|
||||
// This file is used to load the video.js source files into a page
|
||||
// in the correct order based on dependencies.
|
||||
// When you create a new source file you will need to add
|
||||
// it to the list below to use it in sandbox/index.html and
|
||||
// test/index.html
|
||||
|
||||
// You can use the projectRoot variable to adjust relative urls
|
||||
// that this script loads. By default it's "../", which is what /sandbox
|
||||
// and /test need. If you had sandbox/newDir/index.html, in index.html you
|
||||
// would set projectRoot = "../../"
|
||||
|
||||
// We could use somehting like requireJS to load files, and at one point
|
||||
// we used goog.require/provide to load dependencies, but that seems like
|
||||
// overkill with the small number of files we actually have.
|
||||
|
||||
// ADD NEW SOURCE FILES HERE
|
||||
var sourceFiles = [
|
||||
"src/js/core.js",
|
||||
"src/js/core-object.js",
|
||||
"src/js/events.js",
|
||||
"src/js/lib.js",
|
||||
"src/js/component.js",
|
||||
"src/js/button.js",
|
||||
"src/js/slider.js",
|
||||
"src/js/menu.js",
|
||||
"src/js/player.js",
|
||||
"src/js/control-bar/control-bar.js",
|
||||
"src/js/control-bar/play-toggle.js",
|
||||
"src/js/control-bar/time-display.js",
|
||||
"src/js/control-bar/fullscreen-toggle.js",
|
||||
"src/js/control-bar/progress-control.js",
|
||||
"src/js/control-bar/volume-control.js",
|
||||
"src/js/control-bar/mute-toggle.js",
|
||||
"src/js/control-bar/volume-menu-button.js",
|
||||
"src/js/poster.js",
|
||||
"src/js/loading-spinner.js",
|
||||
"src/js/big-play-button.js",
|
||||
"src/js/media/media.js",
|
||||
"src/js/media/html5.js",
|
||||
"src/js/media/flash.js",
|
||||
"src/js/media/loader.js",
|
||||
"src/js/tracks.js",
|
||||
"src/js/json.js",
|
||||
"src/js/setup.js",
|
||||
"src/js/plugins.js"
|
||||
];
|
||||
|
||||
// Allow overriding the default project root
|
||||
var projectRoot = projectRoot || '../';
|
||||
|
||||
function loadScripts(scriptsArr){
|
||||
for (var i = 0; i < scriptsArr.length; i++) {
|
||||
// Using document.write because that's the easiest way to avoid triggering
|
||||
// asynchrnous script loading
|
||||
document.write( "<script src='" + projectRoot + scriptsArr[i] + "'><\/script>" );
|
||||
}
|
||||
}
|
||||
|
||||
// We use this file in the grunt build script to load the same source file list
|
||||
// and don't want to load the scripts there.
|
||||
if (typeof blockSourceLoading === 'undefined') {
|
||||
loadScripts(sourceFiles);
|
||||
|
||||
// Allow for making Flash first
|
||||
if (window.location.href.indexOf("?flash") !== -1) {
|
||||
// Using doc.write to load this script to, otherwise when it runs videojs
|
||||
// is undefined
|
||||
document.write('<script>videojs.options.techOrder = ["flash"];videojs.options.flash.swf = "../src/swf/video-js.swf";</script>')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,24 @@
|
||||
module.exports = function(grunt) {
|
||||
grunt.registerTask('saucelabs', function() {
|
||||
const exec = require('child_process').exec;
|
||||
const done = this.async();
|
||||
|
||||
if (this.args[0] == 'connect') {
|
||||
exec('curl https://gist.githubusercontent.com/santiycr/5139565/raw/sauce_connect_setup.sh | bash',
|
||||
function(error, stdout, stderr) {
|
||||
if (error) {
|
||||
grunt.log.error(error);
|
||||
return done();
|
||||
}
|
||||
|
||||
grunt.verbose.error(stderr.toString());
|
||||
grunt.verbose.writeln(stdout.toString());
|
||||
grunt.task.run(['karma:saucelabs']);
|
||||
done();
|
||||
});
|
||||
} else {
|
||||
grunt.task.run(['karma:saucelabs']);
|
||||
done();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -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);
|
||||
});
|
||||
};
|
||||
@@ -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);
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,7 @@
|
||||
module.exports = function(grunt) {
|
||||
grunt.registerTask('vjs-version', function() {
|
||||
let version = grunt.vjsVersion.full;
|
||||
grunt.log.writeln(version);
|
||||
return version;
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "video.js",
|
||||
"description": "An HTML5 and Flash video player with a common API and skin for both.",
|
||||
"version": "5.8.5",
|
||||
"keywords": [
|
||||
"videojs",
|
||||
"html5",
|
||||
"flash",
|
||||
"video",
|
||||
"player"
|
||||
],
|
||||
"scripts": ["dist/video-js/video.dev.js"],
|
||||
"styles": ["dist/video-js/video-js.css"],
|
||||
"files": ["dist/video-js/video-js.swf"],
|
||||
"fonts": [
|
||||
"dist/video-js/font/vjs.eot",
|
||||
"dist/video-js/font/vjs.svg",
|
||||
"dist/video-js/font/vjs.ttf",
|
||||
"dist/video-js/font/vjs.woff"
|
||||
],
|
||||
"main": "dist/video-js/video.dev.js"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
+441
-5
@@ -1,6 +1,442 @@
|
||||
{
|
||||
"developmentBranch": "master",
|
||||
"releaseBranch": "stable",
|
||||
"remote": "origin",
|
||||
"upstream": "zencoder"
|
||||
}
|
||||
"meta": {
|
||||
"org": "videojs",
|
||||
"name": "video.js",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "git",
|
||||
"info": "http://git-scm.com"
|
||||
},
|
||||
{
|
||||
"name": "node.js",
|
||||
"info": "http://nodejs.org"
|
||||
}
|
||||
],
|
||||
"urls": {
|
||||
"repo_api": "https://api.github.com/repos/videojs/video.js",
|
||||
"repo_ui": "https://github.com/videojs/video.js"
|
||||
},
|
||||
"branches": {
|
||||
"development": "master",
|
||||
"release": "stable"
|
||||
}
|
||||
},
|
||||
|
||||
"install": {
|
||||
"desc": "Fork, download, and setup the project",
|
||||
"steps": [
|
||||
{ "prompt": "confirm", "desc": "You will now be taken to Github where you will choose an account to fork the project under. Remember which account you choose." },
|
||||
{ "exec": "open https://github.com/{{meta.org}}/{{meta.name}}/fork" },
|
||||
{ "prompt": "text", "desc": "Which account did you choose? (no '@')", "id": "owner" },
|
||||
{ "exec": "git clone https://github.com/{{ owner }}/{{ meta.name }}.git" },
|
||||
{ "exec": "cd {{ meta.name }}", "desc": "Change to the project directory" },
|
||||
{ "include": "setup" }
|
||||
]
|
||||
},
|
||||
|
||||
"setup": {
|
||||
"desc": "Set up version control and install dependencies",
|
||||
"steps": [
|
||||
[ "git fetch origin", "Get all git branches" ],
|
||||
[ "git checkout -b stable origin/stable", "Create the stable branch for patches" ],
|
||||
[ "git remote add upstream https://github.com/{{meta.org}}/{{meta.name}}.git", "Add the upstream project as a remote for pulling changes" ],
|
||||
[ "git fetch upstream", "Get all upstream branches and changes" ],
|
||||
{ "include": "update all" },
|
||||
[ "grunt", "Build the library" ]
|
||||
]
|
||||
},
|
||||
|
||||
"update": {
|
||||
"all": {
|
||||
"steps": [
|
||||
{ "include": "update stable" },
|
||||
{ "include": "update master" },
|
||||
[ "npm install", "Download dependencies"]
|
||||
]
|
||||
},
|
||||
"local": {
|
||||
"master": {
|
||||
"steps": [
|
||||
[ "git checkout master", "Switch to the development branch" ],
|
||||
[ "git pull upstream master", "Get any changes to master in the main project" ]
|
||||
]
|
||||
},
|
||||
"stable": {
|
||||
"steps": [
|
||||
[ "git checkout stable", "Switch to the release branch" ],
|
||||
[ "git pull upstream stable", "Get any changes to stable in the main project" ]
|
||||
]
|
||||
},
|
||||
"patch": {
|
||||
"steps": [
|
||||
[ "git checkout patch", "Switch to the patch branch" ],
|
||||
[ "git pull upstream patch", "Get any changes to patch in the main project" ]
|
||||
]
|
||||
}
|
||||
},
|
||||
"remote": {
|
||||
"master": {
|
||||
"steps": [
|
||||
{ "include": "update local master" },
|
||||
[ "git push origin master", "Push any changes to your copy of the main project" ]
|
||||
]
|
||||
},
|
||||
"stable": {
|
||||
"steps": [
|
||||
{ "include": "update local stable" },
|
||||
[ "git push origin stable", "Push any changes to your copy of the main project" ]
|
||||
]
|
||||
},
|
||||
"patch": {
|
||||
"steps": [
|
||||
{ "include": "update local patch" },
|
||||
[ "git push origin patch", "Push any changes to your copy of the main project" ]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"master": {
|
||||
"steps": [
|
||||
{ "include": "update remote master" }
|
||||
]
|
||||
},
|
||||
"stable": {
|
||||
"steps": [
|
||||
{ "include": "update remote stable" }
|
||||
]
|
||||
},
|
||||
"patch": {
|
||||
"steps": [
|
||||
{ "include": "update remote patch" }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"test": "grunt test" ,
|
||||
"watch": "grunt watch",
|
||||
"server": "grunt connect",
|
||||
|
||||
"feature": {
|
||||
"desc": "Create a new feature or general enhancement",
|
||||
"baseBranch": "master",
|
||||
"start": {
|
||||
"desc": "Start a new feature",
|
||||
"steps": [
|
||||
{ "include": "update {{meta.branches.development}}" },
|
||||
{ "include": "branch start" }
|
||||
]
|
||||
},
|
||||
"save": {
|
||||
"desc": "Save changes to your feature",
|
||||
"steps": [{ "include": "branch save" }]
|
||||
},
|
||||
"submit": {
|
||||
"desc": "Submit a pull request for a feature when it's finished",
|
||||
"steps": [{ "include": "pull_request submit" }]
|
||||
},
|
||||
"delete": {
|
||||
"desc": "Delete the current feature branch",
|
||||
"steps": [{ "include": "branch delete" }]
|
||||
},
|
||||
"review": {
|
||||
"desc": "Review a submitted feature",
|
||||
"steps": [{ "include": "pull_request review" }]
|
||||
},
|
||||
"modify": {
|
||||
"desc": "Modify a submitted feature that you are reviewing",
|
||||
"steps": [{ "include": "pull_request modify" }]
|
||||
},
|
||||
"accept": {
|
||||
"desc": "Merge a submitted feature",
|
||||
"steps": [
|
||||
{ "include": "update {{meta.branches.development}}" },
|
||||
{ "include": "pull_request accept" }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"patch": {
|
||||
"desc": "Create an urgent fix for the latest stable version",
|
||||
"baseBranch": "stable",
|
||||
"start": {
|
||||
"desc": "Start a new patch",
|
||||
"finished": "Make your changes and then run `contrib patch submit`",
|
||||
"steps": [
|
||||
{ "include": "update {{meta.branches.release}}" },
|
||||
{ "include": "branch start" }
|
||||
]
|
||||
},
|
||||
"save": {
|
||||
"desc": "Save changes to your feature",
|
||||
"steps": [{ "include": "branch save" }]
|
||||
},
|
||||
"submit": {
|
||||
"desc": "Submit a pull request for a patch when it's finished",
|
||||
"steps": [{ "include": "pull_request submit" }]
|
||||
},
|
||||
"delete": {
|
||||
"desc": "Delete the current patch branch",
|
||||
"steps": [{ "include": "branch delete" }]
|
||||
},
|
||||
"review": {
|
||||
"desc": "Review a submitted patch",
|
||||
"steps": [{ "include": "pull_request review" }]
|
||||
},
|
||||
"modify": {
|
||||
"desc": "Modify a submitted patch that you are reviewing",
|
||||
"steps": [{ "include": "pull_request modify" }]
|
||||
},
|
||||
"accept": {
|
||||
"desc": "Merge a submitted patch",
|
||||
"steps": [
|
||||
{ "include": "update {{meta.branches.release}}" },
|
||||
{ "include": "pull_request accept" },
|
||||
[ "git checkout master", "Checkout the developmet branch" ],
|
||||
[ "git merge stable", "Merge the patch changes" ],
|
||||
[ "git push upstream master", "Push the development changes" ]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"report": {
|
||||
"desc": "Submit a bug report",
|
||||
"steps": [
|
||||
{ "prompt": "text", "desc": "Create a title that is descriptive of the problem", "id": "title" },
|
||||
{ "prompt": "text", "desc": "What did you do? (steps to reproduce)", "id": "reproduce" },
|
||||
{ "prompt": "text", "desc": "What did you expect to happen?", "id": "expected" },
|
||||
{ "prompt": "text", "desc": "What actually happened?", "id": "actual" },
|
||||
{ "prompt": "text", "desc": "What version of video.js are you using?", "id": "version" },
|
||||
{ "prompt": "text", "desc": "Are you using any video.js plugins?", "id": "plugins" },
|
||||
{ "prompt": "text", "desc": "What browsers/platforms did you experience this in (e.g. Win 7, IE10; Android 4, Chrome;)?", "id": "browsers" },
|
||||
{ "prompt": "text", "desc": "Is there a URL to a live example, or a jsbin (e.g. http://jsbin.com/axedog/9999/edit)?", "id": "example" },
|
||||
{ "prompt": "text", "desc": "Are there any other details you'd like to provide?", "id": "details" },
|
||||
{ "open": "{{meta.urls.repo_ui}}/issues/new?title={{title}}&body=**Steps to reproduce:**\n> {{reproduce}}\n\n**What was expected:**\n> {{expected}}\n\n**What Happened:**\n> {{actual}}\n\n**Video.js Version:**\n> {{version}}\n\n**Plugins:**\n> {{plugins}}\n\n**Browsers experienced on:**\n> {{browsers}}\n\n**Example:**\n> {{example}}\n\n**Other details:**\n> {{details}}" }
|
||||
],
|
||||
"finished": "Thanks for submitting a bug report! One of our contributors will address it as soon as possible."
|
||||
},
|
||||
|
||||
"request": {
|
||||
"desc": "Submit a feature/enhancement request",
|
||||
"steps": [
|
||||
{ "prompt": "text", "desc": "Create a title that is descriptive of the enhancement", "id": "title" },
|
||||
{ "prompt": "text", "desc": "Describe the feature/enhancement (be as detailed as possible so it's clear who, why, and how it would be used)", "id": "describe" },
|
||||
{ "prompt": "text", "desc": "Is there any existing documentation or related specifications?", "id": "docs" },
|
||||
{ "prompt": "text", "desc": "Are there any existing examples?", "id": "examples" },
|
||||
{ "prompt": "confirm", "desc": "You will be redirected to Github where you can submit this issue, OK?" },
|
||||
{ "open": "{{meta.urls.repo_ui}}/issues/new?title={{ title }}&body=**Describe the feature/enhancement:**\n> {{ describe }}\n\n**Existing docs/specs:**\n> {{ docs }}\n\n**Existing examples:**\n> {{ examples }}" }
|
||||
],
|
||||
"finished": "Thanks for submitting a feature request! One of our contributors will address it as soon as possible."
|
||||
},
|
||||
|
||||
"release": {
|
||||
"desc": "Create and publish releases",
|
||||
|
||||
"patch": {
|
||||
"release_type": "patch",
|
||||
"description": "Create a patch release from the release branch (stable)",
|
||||
"steps": [{ "include": "release run" }]
|
||||
},
|
||||
"minor": {
|
||||
"description": "Create a minor release from the development branch (master)",
|
||||
"release_type": "minor",
|
||||
"steps": [
|
||||
{ "include": "update local master" },
|
||||
{ "include": "update local stable" },
|
||||
[ "git merge master", "Copy the latest development changes to the release branch" ],
|
||||
{ "include": "release run" },
|
||||
[ "git checkout master", "Checkout the developmet branch" ],
|
||||
[ "git merge stable", "Merge package changes into the dev brach" ],
|
||||
[ "git push upstream master", "Push the dev branch changes to the repo" ]
|
||||
]
|
||||
},
|
||||
|
||||
"next": {
|
||||
"patch": {
|
||||
"description": "Create a patch release and tag it @next on npm",
|
||||
"release_type": "patch",
|
||||
"steps": [{ "include": "release run_next" }]
|
||||
},
|
||||
"minor": {
|
||||
"description": "Create a minor release and tag it @next on npm",
|
||||
"release_type": "minor",
|
||||
"steps": [{ "include": "release run_next" }]
|
||||
},
|
||||
"major": {
|
||||
"description": "Create a major release and tag it @next on npm",
|
||||
"release_type": "major",
|
||||
"steps": [{ "include": "release run_next" }]
|
||||
}
|
||||
},
|
||||
|
||||
"prerelease": {
|
||||
"release_type": "prerelease",
|
||||
"steps": [{ "include": "release run_next" }]
|
||||
},
|
||||
|
||||
"run_next": {
|
||||
"steps": [
|
||||
{ "include": "branch check" },
|
||||
{ "include": "update local master" },
|
||||
[ "git checkout -b temp-release-branch master","Create a temporary branch for the dist" ],
|
||||
[ "grunt version:{{release_type}}", "Bump package versions" ],
|
||||
[ "./build/bin/version", "Return the current VJS Version from the package.json file", "version" ],
|
||||
[ "grunt chg-release:{{version}}", "Update the changelog with the new release" ],
|
||||
[ "git commit -am 'v{{version}}'", "Add and commit the package changes" ],
|
||||
[ "git checkout master", "Checkout the developmet branch" ],
|
||||
[ "git merge temp-release-branch", "Merge package changes into the dev brach" ],
|
||||
[ "git push upstream master", "Push the dev branch changes to the repo" ],
|
||||
[ "git checkout temp-release-branch", "Checkout the temp branch again" ],
|
||||
[ "grunt dist", "Build the dist" ],
|
||||
[ "git add dist --force", "Add the (otherwise ignored) release files" ],
|
||||
[ "git commit -m 'v{{version}} dist'", "Commit the dist changes" ],
|
||||
[ "git tag -a v{{version}} -m 'v{{version}}'", "Tag the release" ],
|
||||
[ "git push upstream --tags", "Push the new tag to the repo" ],
|
||||
[ "grunt github-release:prerelease", "Create a new pre-release on Github" ],
|
||||
[ "npm publish --tag next", "Publish to npm as 'next'" ],
|
||||
[ "git checkout master", "Checkout the developmet branch" ],
|
||||
[ "git branch -D temp-release-branch", "Delete the temp release branch" ]
|
||||
]
|
||||
},
|
||||
|
||||
"run": {
|
||||
"steps": [
|
||||
{ "include": "branch check" },
|
||||
{ "include": "update local stable" },
|
||||
[ "npm install", "Ensure dependency updates have been installed" ],
|
||||
[ "grunt test", "Run tests" ],
|
||||
[ "grunt version:{{release_type}}", "Bump package versions" ],
|
||||
[ "./build/bin/version", "Return the current VJS Version from the package.json file", "version" ],
|
||||
[ "grunt chg-release:{{version}}", "Update the changelog with the new release" ],
|
||||
[ "git commit -am 'v{{version}}'", "Add and commit the package changes" ],
|
||||
[ "git push upstream stable", "Push the release branch changes to the repo" ],
|
||||
[ "git checkout -b temp-release-branch stable","Create a temporary branch for the dist" ],
|
||||
[ "grunt dist", "Build the dist" ],
|
||||
[ "git add dist --force", "Add the (otherwise ignored) release files" ],
|
||||
[ "git commit -m 'v{{version}} dist'", "Commit the dist changes" ],
|
||||
[ "git tag -a v{{version}} -m 'v{{version}}'", "Tag the release" ],
|
||||
[ "git push upstream --tags", "Push the new tag to the repo" ],
|
||||
[ "npm publish", "Publish to npm" ],
|
||||
[ "grunt github-release:release", "Create a new release on Github" ],
|
||||
[ "git checkout stable", "Checkout the developmet branch" ],
|
||||
[ "git branch -D temp-release-branch", "Delete the temp release branch" ]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"branch": {
|
||||
"private": true,
|
||||
|
||||
"start": {
|
||||
"steps": [
|
||||
{ "prompt": "text", "id": "name", "desc": "Name the branch" },
|
||||
{ "exec": "git checkout -b {{name}} {{baseBranch}}", "desc": "Create the branch" },
|
||||
{ "exec": "git push -u origin {{name}}", "desc": "Push the branch to your remote copy of the project" }
|
||||
]
|
||||
},
|
||||
"save": {
|
||||
"desc": "Commit and push changes made to files in the project",
|
||||
"steps": [
|
||||
{ "include": "branch confirm" },
|
||||
{ "prompt": "text", "id": "message", "desc": "Briefly describe the changes made" },
|
||||
{ "exec": "git add .", "desc": "Add the changes" },
|
||||
{ "exec": "git commit -m '{{message}}'", "desc": "Commit the changes" },
|
||||
{ "exec": "git push origin {{branch_name}}", "desc": "Push the changes to your remote copy of the project" }
|
||||
]
|
||||
},
|
||||
"check": {
|
||||
"private": true,
|
||||
"desc": "Check for unsaved changes",
|
||||
"steps": [
|
||||
{ "exec": "git diff --exit-code", "desc": "Ensure there's no unadded changes", "fail": "Make sure all changes have been saved (added and committed) or stashed" },
|
||||
{ "exec": "git diff --cached --exit-code", "desc": "Ensure there's no uncommitted changes", "fail": "Make sure all changes have been saved (added and committed) or stashed" }
|
||||
]
|
||||
},
|
||||
"name": {
|
||||
"private": true,
|
||||
"steps": [
|
||||
{ "exec": "git rev-parse --abbrev-ref HEAD", "desc": "Get the current branch", "id": "branch_name" }
|
||||
]
|
||||
},
|
||||
"confirm": {
|
||||
"private": true,
|
||||
"steps": [
|
||||
{ "include": "branch name" },
|
||||
{ "prompt": "confirm", "desc": "Are you sure *{{branch_name}}* is the correct branch?" }
|
||||
]
|
||||
},
|
||||
"delete": {
|
||||
"desc": "Delete the current branch",
|
||||
"steps": [
|
||||
{ "include": "branch confirm" },
|
||||
{ "exec": "git checkout master", "desc": "Exit the branch being deleted" },
|
||||
{ "exec": "git branch -D {{branch_name}}", "desc": "Delete the local copy of the branch" },
|
||||
{ "exec": "git push origin :{{branch_name}}", "desc": "Delete the remote copy of the branch" }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"pull_request": {
|
||||
"private": true,
|
||||
"desc": "Pull request related commands",
|
||||
|
||||
"prepare": {
|
||||
"private": true,
|
||||
"steps": [
|
||||
{ "include": "branch check" },
|
||||
{ "include": "branch confirm" },
|
||||
{ "include": "test" },
|
||||
{ "prompt": "text", "desc": "Which github user or org are you submitting from?", "id": "user" }
|
||||
]
|
||||
},
|
||||
"submit": {
|
||||
"desc": "Submit a pull request for when the change is finished",
|
||||
"steps": [
|
||||
{ "include": "pull_request prepare" },
|
||||
{ "open": "{{meta.urls.repo_ui}}/compare/videojs:{{baseBranch}}...{{user}}:{{branch_name}}", "desc": "Open the github pull request page" }
|
||||
]
|
||||
},
|
||||
"review": {
|
||||
"steps": [
|
||||
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" },
|
||||
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
|
||||
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Get the pull request changes but don't merge them" ],
|
||||
[ "git merge-base master FETCH_HEAD", "Get the common ancestor commit", "base" ],
|
||||
[ "git checkout -b review-{{pr.user.login}}-{{pr.head.ref}} {{base}}", "Create a new local branch for the pull request that has a base of the common commit" ],
|
||||
[ "git merge FETCH_HEAD", "Merge in the pull request changes" ],
|
||||
[ "npm install", "Install any new dependencies" ],
|
||||
[ "grunt test", "Build and run tests" ]
|
||||
]
|
||||
},
|
||||
"modify": {
|
||||
"desc": "Submit a modification to a pull request that you are currently reviewing",
|
||||
"steps": [
|
||||
{ "include": "pull_request prepare" },
|
||||
{ "prompt": "text", "desc": "What is the the pull request number?", "id": "prNum" },
|
||||
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
|
||||
{ "exec": "git push -u origin {{branch_name}}", "desc": "Push the changes to the remote repo" },
|
||||
{ "open": "https://github.com/{{user}}/video.js/compare/{{pr.head.label}}...{{user}}:{{branch_name}}", "desc": "Open the github pull request page" }
|
||||
]
|
||||
},
|
||||
"accept": {
|
||||
"steps": [
|
||||
{ "prompt": "text", "id": "prNum", "desc": "What is the the pull request number?" },
|
||||
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}", "desc": "Get the PR information", "id": "pr" },
|
||||
{ "get": "{{meta.urls.repo_api}}/pulls/{{prNum}}/commits", "desc": "Get the PR commits to access author info", "id": "prCommits" },
|
||||
[ "git checkout -b {{pr.user.login}}/{{pr.head.ref}} {{pr.base.ref}}", "Create a new branch for merging the changes" ],
|
||||
[ "git fetch {{pr.head.repo.ssh_url}} {{pr.head.ref}}", "Fetch the changes" ],
|
||||
[ "git merge --no-commit --squash FETCH_HEAD", "Merge the changes in without committing so they can be squashed" ],
|
||||
[ "grunt test", "Run tests to make sure they still pass" ],
|
||||
{ "prompt": "text", "id": "line", "desc": "Describe this change in one line" },
|
||||
[ "grunt chg-add:'{{{line}}} ([view](https\\://github.com/videojs/video.js/pull/{{prNum}}))'", "Add a line to the changelog" ],
|
||||
[ "git add CHANGELOG.md", "Add the changlelog change to be committed" ],
|
||||
[ "git commit -a --author='{{prCommits.[0].commit.author.name}} <{{prCommits.[0].commit.author.email}}>' -m '{{line}}. closes #{{prNum}}'", "Commit the changes" ],
|
||||
{ "prompt": "confirm", "desc": "Does everything look ok?" },
|
||||
[ "git checkout {{pr.base.ref}}", "Check out the base branch" ],
|
||||
[ "git merge {{pr.user.login}}/{{pr.head.ref}}", "Merge the changes" ],
|
||||
[ "git push origin {{pr.base.ref}}", "Push the changes to your remote copy of the project" ],
|
||||
[ "git push upstream {{pr.base.ref}}", "Push the changes to the main project" ],
|
||||
[ "git branch -D {{pr.user.login}}/{{pr.head.ref}}", "Delete the local branch used for merging" ]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-226
@@ -1,226 +0,0 @@
|
||||
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.
|
||||
```js
|
||||
var myPlayer = videojs("example_video_1");
|
||||
```
|
||||
|
||||
(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.
|
||||
```javascript
|
||||
videojs("example_video_1").ready(function(){
|
||||
|
||||
var myPlayer = this;
|
||||
|
||||
// EXAMPLE: Start playing the video.
|
||||
myPlayer.play();
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
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.
|
||||
```js
|
||||
myPlayer.play();
|
||||
```
|
||||
|
||||
|
||||
### pause() ###
|
||||
Pause the video playback. Returns the player object
|
||||
```js
|
||||
myPlayer.pause();
|
||||
```
|
||||
|
||||
|
||||
### paused() ###
|
||||
Returns false if the video is currently playing, or true otherwise. ()
|
||||
```js
|
||||
var isPaused = myPlayer.paused();
|
||||
var isPlaying = !myPlayer.paused();
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
```js
|
||||
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
|
||||
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
|
||||
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" }
|
||||
]);
|
||||
```
|
||||
|
||||
Returns the player object.
|
||||
|
||||
|
||||
### currentTime() ###
|
||||
Returns the current time of the video in seconds.
|
||||
```js
|
||||
var whereYouAt = myPlayer.currentTime();
|
||||
```
|
||||
|
||||
|
||||
### currentTime(seconds) // Type: Integer or Float ###
|
||||
Seek to the supplied time (seconds). Returns the player object.
|
||||
```js
|
||||
myPlayer.currentTime(120); // 2 minutes into the video
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
```js
|
||||
var howLongIsThis = myPlayer.duration();
|
||||
```
|
||||
|
||||
|
||||
### buffered() ###
|
||||
Returns a [TimeRange](glossary.md#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.
|
||||
```js
|
||||
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;
|
||||
```
|
||||
|
||||
|
||||
### bufferedPercent() ###
|
||||
Returns the percent (as a decimal) of the video that's been downloaded. 0 means none, 1 means all.
|
||||
```js
|
||||
var howMuchIsDownloaded = myPlayer.bufferedPercent();
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
```js
|
||||
var howLoudIsIt = myPlayer.volume();
|
||||
```
|
||||
|
||||
|
||||
### volume(percentAsDecimal) ###
|
||||
Set the volume to the supplied percent (as a decimal between 0 and 1).
|
||||
```js
|
||||
myPlayer.volume(0.5); // Set volume to half
|
||||
```
|
||||
|
||||
|
||||
### width() ###
|
||||
Returns the current width of the video in pixels.
|
||||
```js
|
||||
var howWideIsIt = myPlayer.width();
|
||||
```
|
||||
|
||||
|
||||
### width(pixels) ###
|
||||
Change the width of the video to the supplied width in pixels. Returns the player object
|
||||
```js
|
||||
myPlayer.width(640);
|
||||
```
|
||||
|
||||
|
||||
### height() ###
|
||||
Returns the current height of the video in pixels.
|
||||
```js
|
||||
var howTallIsIt = myPlayer.height();
|
||||
```
|
||||
|
||||
|
||||
### height(pixels) ###
|
||||
Change the height of the video to the supplied height in pixels. Returns the player object
|
||||
```js
|
||||
myPlayer.height(480);
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
```js
|
||||
myPlayer.size(640,480);
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
```js
|
||||
myPlayer.requestFullScreen();
|
||||
```
|
||||
|
||||
|
||||
### cancelFullScreen() ###
|
||||
Return the video to its normal size after having been in full screen mode. Returns the player object.
|
||||
```js
|
||||
myPlayer.cancelFullScreen();
|
||||
```
|
||||
|
||||
|
||||
Events
|
||||
------
|
||||
You can attach event listeners to the player similarly to how you would for a video element.
|
||||
|
||||
```js
|
||||
var myFunc = function(){
|
||||
var myPlayer = this;
|
||||
// Do something when the event is fired
|
||||
};
|
||||
myPlayer.on("eventName", myFunc);
|
||||
```
|
||||
|
||||
You can also remove the listeners later.
|
||||
```js
|
||||
myPlayer.off("eventName", myFunc);
|
||||
```
|
||||
|
||||
|
||||
### 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>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
||||
<head>
|
||||
<title>Video.js | HTML5 Video Player</title>
|
||||
<link href="http://vjs.zencdn.net/5.0.2/video-js.css" rel="stylesheet">
|
||||
<script src="http://vjs.zencdn.net/ie8/1.1.0/videojs-ie8.min.js"></script>
|
||||
<script src="http://vjs.zencdn.net/5.0.2/video.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
</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>
|
||||
@@ -0,0 +1,44 @@
|
||||
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.
|
||||
|
||||
```js
|
||||
var myPlayer = videojs('example_video_1');
|
||||
```
|
||||
|
||||
(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.
|
||||
|
||||
```js
|
||||
videojs("example_video_1").ready(function(){
|
||||
var myPlayer = this;
|
||||
|
||||
// EXAMPLE: Start playing the video.
|
||||
myPlayer.play();
|
||||
|
||||
});
|
||||
```
|
||||
|
||||
API Methods
|
||||
-----------
|
||||
Now that you have access to a ready player, you can control the video, get values, or respond to video events. The Video.js API function names follow the [HTML5 media API](http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html). The main difference is that getter/setter functions are used for video properties.
|
||||
|
||||
```js
|
||||
|
||||
// setting a property on a bare HTML5 video element
|
||||
myVideoElement.currentTime = "120";
|
||||
|
||||
// setting a property on a Video.js player
|
||||
myPlayer.currentTime(120);
|
||||
|
||||
```
|
||||
|
||||
The full list of player API methods and events can be found in the [player API docs](http://docs.videojs.com/docs/api/index.html).
|
||||
@@ -1,15 +1,13 @@
|
||||
Components
|
||||
===
|
||||
The Video.js player is built on top of a simple, custom UI components architecture. The player class and all control classes inherit from the Component class, or a subclass of Component.
|
||||
The Video.js player is built on top of a simple, custom UI components architecture. The player class and all control classes inherit from the `Component` class, or a subclass of `Component`.
|
||||
|
||||
```js
|
||||
videojs.Control = videojs.Component.extend({});
|
||||
videojs.Button = videojs.Control.extend({});
|
||||
videojs.PlayToggle = videojs.Button.extend({});
|
||||
videojs.registerComponent('Control', videojs.extends(Component));
|
||||
videojs.registerComponent('Button', videojs.extends(videojs.getComponent('Control')));
|
||||
videojs.registerComponent('PlayToggle', videojs.extends(videojs.getComponent('Button')));
|
||||
```
|
||||
|
||||
(The Class interface itself is provided using John Resig's [simple class inheritance](http://ejohn.org/blog/simple-javascript-inheritance/) also found in [JSNinja](http://jsninja.com).
|
||||
|
||||
The UI component architecture makes it easier to add child components to a parent component and build up an entire user interface, like the controls for the Video.js player.
|
||||
|
||||
```js
|
||||
@@ -59,33 +57,3 @@ Player
|
||||
VolumeHandle
|
||||
MuteToggle
|
||||
```
|
||||
|
||||
Component Methods
|
||||
-----------------
|
||||
|
||||
### addChild() ###
|
||||
Add a child component to myComponent. This will also insert the child component's DOM element into myComponent's element.
|
||||
|
||||
|
||||
|
||||
```js
|
||||
myComponent.addChild('');
|
||||
```
|
||||
|
||||
|
||||
myPlayer.addChild('BigPlayButton');
|
||||
myPlayer.removeChild('BigPlayButton');
|
||||
myPlayer.getChild('BiPlayButton');
|
||||
myPlayer.children();
|
||||
|
||||
|
||||
myPlayer.getChildById('biPlayButton');
|
||||
myPlayer.removeChildById('my-player-big-play-button');
|
||||
|
||||
el();
|
||||
getContentEl();
|
||||
getChildren();
|
||||
|
||||
getParent();
|
||||
|
||||
#home_player_big-play-button
|
||||
@@ -0,0 +1,335 @@
|
||||
Languages
|
||||
=========
|
||||
|
||||
Multiple language support allows for users of non-English locales to natively interact with the displayed player. Video.js will compile multiple language files (see below) and instantiate with a global dictionary of language key/value support. Video.js player instances can be created with per-player language support that amends/overrides these default values. Player instances can also hard-set default languages to values other than English as of version 4.7.
|
||||
|
||||
Creating the Language File
|
||||
--------------------------
|
||||
Video.js uses key/value object dictionaries in JSON form.
|
||||
|
||||
An English lang file is at [/lang/en.json](https://github.com/videojs/video.js/tree/master/lang/en.json) which should be used as a template for new files. This will be kept up to date with strings in the core player that need localizations.
|
||||
|
||||
A sample dictionary for Spanish `['es']` would look as follows:
|
||||
|
||||
```JSON
|
||||
{
|
||||
"Play": "Reproducción",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Tiempo reproducido",
|
||||
"Duration Time": "Duración total",
|
||||
"Remaining Time": "Tiempo restante",
|
||||
"Stream Type": "Tipo de secuencia",
|
||||
"LIVE": "DIRECTO",
|
||||
"Loaded": "Cargado",
|
||||
"Progress": "Progreso",
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
"Captions": "Subtítulos especiales",
|
||||
"captions off": "Subtítulos especiales desactivados",
|
||||
"Chapters": "Capítulos",
|
||||
"You aborted the video playback": "Ha interrumpido la reproducción del vídeo.",
|
||||
"A network error caused the video download to fail part-way.": "Un error de red ha interrumpido la descarga del vídeo.",
|
||||
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "No se ha podido cargar el vídeo debido a un fallo de red o del servidor o porque el formato es incompatible.",
|
||||
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproducción de vídeo se ha interrumpido por un problema de corrupción de datos o porque el vídeo precisa funciones que su navegador no ofrece.",
|
||||
"No compatible source was found for this video.": "No se ha encontrado ninguna fuente compatible con este vídeo."
|
||||
}
|
||||
```
|
||||
|
||||
Notes:
|
||||
|
||||
- The file name should always be in the format `XX.json`, where `XX` is the language code. This should be a two letter code (for options see the bottom of this document) except for cases where a more specific code with sub-code is appropriate, e.g. `zh-CN.lang`.
|
||||
- For automatic inclusion at build time, add your language file to the `/lang` directory (see 'Adding Languages to Video.js below').
|
||||
|
||||
Adding Languages to Video.js
|
||||
----------------------------
|
||||
Additional language support can be added to Video.js in multiple ways.
|
||||
|
||||
1. Create language scripts out of your JSON objects by using our custom grunt task `vjslanguages`. This task is automatically run as part of the default grunt task in Video.JS, but can be configured to match your `src`/`dist` directories if different. Once these scripts are created, just add them to your DOM like any other script.
|
||||
|
||||
NOTE: These need to be added after the core Video.js script.
|
||||
|
||||
|
||||
2. Add your JSON objects via the videojs.addLanguage API. Preferably in the HEAD element of your DOM or otherwise prior to player instantiation.
|
||||
|
||||
```html
|
||||
<head>
|
||||
<script>
|
||||
videojs.options.flash.swf = '../node_modules/videojs-swf/dist/video-js.swf';
|
||||
videojs.addLanguage('es', {
|
||||
"Play": "Reproducción",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Tiempo reproducido",
|
||||
"Duration Time": "Duración total",
|
||||
"Remaining Time": "Tiempo restante",
|
||||
"Stream Type": "Tipo de secuencia",
|
||||
"LIVE": "DIRECTO",
|
||||
"Loaded": "Cargado",
|
||||
"Progress": "Progreso",
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
"Captions": "Subtítulos especiales",
|
||||
"captions off": "Subtítulos especiales desactivados",
|
||||
"Chapters": "Capítulos",
|
||||
"You aborted the video playback": "Ha interrumpido la reproducción del vídeo.",
|
||||
"A network error caused the video download to fail part-way.": "Un error de red ha interrumpido la descarga del vídeo.",
|
||||
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "No se ha podido cargar el vídeo debido a un fallo de red o del servidor o porque el formato es incompatible.",
|
||||
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproducción de vídeo se ha interrumpido por un problema de corrupción de datos o porque el vídeo precisa funciones que su navegador no ofrece.",
|
||||
"No compatible source was found for this video.": "No se ha encontrado ninguna fuente compatible con este vídeo."
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
```
|
||||
|
||||
3. During a Video.js player instantiation. Adding the languages to the configuration object provided in the `data-setup` attribute.
|
||||
|
||||
```html
|
||||
<video id="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"languages":{"es":{"Play":"Juego"}}}'>
|
||||
<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>
|
||||
```
|
||||
|
||||
Notes:
|
||||
- This will add your language key/values to the Video.js player instances individually. If these values already exist in the global dictionary via the process above, those will be overridden for the player instance in question.
|
||||
|
||||
|
||||
Setting Default Language in a Video.js Player
|
||||
---------------------------------------------
|
||||
During a Video.js player instantiation you can force it to localize to a specific language by including the locale value into the configuration object via the `data-setup` attribute. Valid options listed at the bottom of the page for reference.
|
||||
|
||||
```html
|
||||
<video id="example_video_1" class="video-js vjs-default-skin"
|
||||
controls preload="auto" width="640" height="264"
|
||||
data-setup='{"language":"es"}'>
|
||||
<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>
|
||||
```
|
||||
|
||||
Determining Player Language
|
||||
---------------------------
|
||||
|
||||
The player language is set to one of the following in descending priority
|
||||
|
||||
* The language set in setup options as above
|
||||
* The document language (`lang` attribute of the `html` element)
|
||||
* Browser language preference
|
||||
* 'en'
|
||||
|
||||
That can be overridden after instantiation with `language('fr')`.
|
||||
|
||||
Language selection
|
||||
------------------
|
||||
|
||||
* Language codes are considered case-insensitively (`en-US` == `en-us`).
|
||||
* If there is no match for a language code with a subcode (`en-us`), a match for the primary code (`en`) is used if available.
|
||||
|
||||
Localization in Plugins
|
||||
-----------------------
|
||||
|
||||
When you're developing a plugin, you can also introduce new localized strings. Simply wrap the string with the player's `localize` function:
|
||||
|
||||
```js
|
||||
var details = '<div class="vjs-errors-details">' + player.localize('Technical details') + '</div>';
|
||||
```
|
||||
|
||||
Language Codes
|
||||
--------------
|
||||
The following is a list of official language codes.
|
||||
|
||||
**NOTE:** For supported language translations, please see the [Languages Folder (/lang)](https://github.com/videojs/video.js/tree/master/lang) folder located in the project root.
|
||||
|
||||
<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>
|
||||
@@ -88,11 +88,11 @@ or
|
||||
|
||||
|
||||
### 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.
|
||||
The loop attribute causes the video to start over as soon as it ends. This could be used for a visual effect like clouds in the background.
|
||||
```html
|
||||
<video loop ...>
|
||||
or
|
||||
{ "loop": "true" }
|
||||
{ "loop": true }
|
||||
```
|
||||
|
||||
|
||||
@@ -112,3 +112,27 @@ The height attribute sets the display height of the video.
|
||||
or
|
||||
{ "height": 480 }
|
||||
```
|
||||
|
||||
Component Options
|
||||
-----------------
|
||||
|
||||
You can set the options for any single player component. For instance, if you wanted to remove the `muteToggle` button, which
|
||||
is a child of `controlBar`, you can just set that component to false:
|
||||
|
||||
```js
|
||||
var player = videojs('video-id', {
|
||||
controlBar: {
|
||||
muteToggle: false
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
This also works using the `data-setup` attribute on the video element, just remember the options need to use proper JSON
|
||||
notation.
|
||||
|
||||
```html
|
||||
<video ... data-setup='{ "controlBar": { "muteToggle": false } }'></video>
|
||||
```
|
||||
|
||||
The [components guide](./components.md) has an excellent breakdown of the structure of a player, you
|
||||
just need to remember to nest child components in a `children` array for each level.
|
||||
@@ -1,24 +1,33 @@
|
||||
Plugins
|
||||
=======
|
||||
If you've built something cool with Video.js, you can easily share it with the rest of the world by creating a plugin.
|
||||
If you've built something cool with Video.js, you can easily share it with the rest of the world by creating a plugin. Although, you can roll your own, you can also use [generator-videojs-plugin](https://github.com/dmlap/generator-videojs-plugin), a [Yeoman](http://yeoman.io) generator that provides scaffolding for video.js plugins including:
|
||||
* [Grunt](http://gruntjs.com) for build management
|
||||
* [npm](https://www.npmjs.org) for dependency management
|
||||
* [QUnit](http://qunitjs.com) for testing
|
||||
|
||||
|
||||
|
||||
Step 1: Write Some Javascript
|
||||
-----------------------------
|
||||
You may have already done this step. Code up something interesting and then wrap it in a function. At the most basic level, that's all a video.js plugin is. By convention, plugins take a hash of options as their first argument:
|
||||
|
||||
```js
|
||||
function examplePlugin(options) {
|
||||
this.on('play', function(e) {
|
||||
console.log('playback has started!');
|
||||
});
|
||||
};
|
||||
```
|
||||
|
||||
When it's activated, `this` will be the Video.js player your plugin is attached to. You can use anything you'd like in the [Video.js API](api.md) when you're writing a plugin: change the `src`, mess up the DOM, or listen for and emit your own events.
|
||||
When it's activated, `this` will be the Video.js player your plugin is attached to. You can use anything you'd like in the [Video.js API](./api.md) when you're writing a plugin: change the `src`, mess up the DOM, or listen for and emit your own events.
|
||||
|
||||
Step 2: Registering A Plugin
|
||||
-------------------------------
|
||||
It's time to give the rest of the world the opportunity to be awed by your genius. When your plugin is loaded, it needs to let Video.js know this amazing new functionality is now available:
|
||||
|
||||
vjs.plugin('examplePlugin', examplePlugin);
|
||||
```js
|
||||
videojs.plugin('examplePlugin', examplePlugin);
|
||||
```
|
||||
|
||||
From this point on, your plugin will be added to the Video.js prototype and will show up as a property on every instance created. Make sure you choose a unique name that doesn't clash with any of the properties already in Video.js. Which leads us to...
|
||||
|
||||
@@ -26,16 +35,25 @@ Step 3: Using A Plugin
|
||||
----------------------
|
||||
There are two ways to initialize a plugin. If you're creating your video tag dynamically, you can specify the plugins you'd like to initialize with it and any options you want to pass to them:
|
||||
|
||||
vjs('vidId', {
|
||||
```js
|
||||
videojs('vidId', {
|
||||
plugins: {
|
||||
examplePlugin: {
|
||||
exampleOption: true
|
||||
}
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
If you've already initialized your video tag, you can activate a plugin at any time by calling its setup function directly:
|
||||
|
||||
```js
|
||||
var video = videojs('cool-vid');
|
||||
video.examplePlugin({ exampleOption: true });
|
||||
```
|
||||
|
||||
That's it. Head on over to the Video.js wiki and add your plugin to the list so everyone else can check it out.
|
||||
That's it. Head on over to the [Video.js wiki](https://github.com/videojs/video.js/wiki/Plugins) and add your plugin to the list so everyone else can check it out.
|
||||
|
||||
## How should I use the Video.js icons in my plugin?
|
||||
|
||||
If you'd like to use any of the icons available in the [Video.js icon set](http://videojs.github.io/font/), please target them via the CSS class names instead of codepoints. The codepoints *may* change between versions of the font, so using the class names ensures that your plugin will stay up to date with any font changes.
|
||||
@@ -0,0 +1,41 @@
|
||||
Removing Players
|
||||
================
|
||||
|
||||
Sometimes, you want to remove players after page load (in single page apps or modals, for instance). It's easy to manage, but there are some simple rules you need to follow.
|
||||
|
||||
Call `.dispose()`
|
||||
-----------------
|
||||
|
||||
To remove the html associated with your videojs player from the page always call the player's [`dispose()`](http://docs.videojs.com/docs/api/player.html#Methodsdispose) method:
|
||||
|
||||
```js
|
||||
var oldPlayer = document.getElementById('my-player');
|
||||
videojs(oldPlayer).dispose();
|
||||
```
|
||||
|
||||
This method will:
|
||||
|
||||
1. reset the internal state of videojs
|
||||
2. remove the player's dom from the page
|
||||
|
||||
Showing / Hiding a Player
|
||||
-------------------------
|
||||
|
||||
For instance, if you have a modal that a player appears in, you should create the player when the modal pops up. When the modal hides, dispose the player. If you try to hide the Flash tech, things will go poorly. Even with other tech, calling `dispose()` on a player that's not needed will free up resources for the browser.
|
||||
|
||||
Why Is This Needed?
|
||||
-------------------
|
||||
|
||||
VideoJS internally tracks all players and their associated data by html id attribute. If you plan to create new players with the same id as previously created players, you'll need to call the player's dispose() method to clear VideoJS's internal state before creating the new player.
|
||||
|
||||
Signs You Did It Wrong
|
||||
-------------------------
|
||||
|
||||
```
|
||||
TypeError: this.el_.vjs_getProperty is not a function
|
||||
"VIDEOJS:" "Video.js: buffered unavailable on Hls playback technology element." TypeError: this.el_.vjs_getProperty is not a function
|
||||
Stack trace:
|
||||
...
|
||||
```
|
||||
|
||||
If you encounter a console error in the browser similar to the above, you've probably forgotten to `dispose()` a player before removing it from the dom. This would happen when using the [contrib-hls](https://github.com/videojs/videojs-contrib-hls) plugin.
|
||||
@@ -0,0 +1,123 @@
|
||||
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. As of Video.js 5.0, the source is [transpiled from ES2015](http://babeljs.io/) (formerly known as ES6) to [ES5](https://es5.github.io/), but IE8 only supports ES3. In order to continue to support IE8, we've bundled an [ES5 shim and sham](https://github.com/es-shims/es5-shim) together and hosted it on the CDN.
|
||||
|
||||
```html
|
||||
<script src="//vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
|
||||
```
|
||||
|
||||
### CDN Version ###
|
||||
```html
|
||||
<link href="//vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet">
|
||||
<script src="//vjs.zencdn.net/5.4.6/video.min.js"></script>
|
||||
```
|
||||
|
||||
Alternatively you can always [go here](http://videojs.com/getting-started/) to get the latest URL for videojs CDN.
|
||||
|
||||
We include a stripped down Google Analytics pixel that tracks a random percentage (currently 1%) of players loaded from the CDN. This allows us to see (roughly) what browsers are in use in the wild, along with other useful metrics such as OS and device. If you'd like to disable analytics, you can simply include the following global **before** including Video.js:
|
||||
|
||||
```js
|
||||
window.HELP_IMPROVE_VIDEOJS = false;
|
||||
```
|
||||
|
||||
## Install via package manager
|
||||
|
||||
### NPM
|
||||
```
|
||||
$ npm install --save video.js
|
||||
```
|
||||
|
||||
### Bower
|
||||
```
|
||||
$ bower install --save video.js
|
||||
```
|
||||
|
||||
|
||||
### Self Hosted. ###
|
||||
To entirely self-host, you'll need to pull in the font files and let Video.js know where the swf is located. If you simply copy the dist folder or zip file contents into your project everything
|
||||
should Just Work™, but the paths can easily be changed by editing the LESS file and re-building, or by modifying the generated CSS file.
|
||||
|
||||
```html
|
||||
<link href="//example.com/path/to/video-js.min.css" rel="stylesheet">
|
||||
<script src="//example.com/path/to/video.min.js"></script>
|
||||
<script>
|
||||
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
|
||||
</script>
|
||||
```
|
||||
|
||||
|
||||
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.
|
||||
|
||||
> Note: The `data-setup` attribute described here should not be used if you use the alternative setup described in the next section.
|
||||
|
||||
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 (see [options](./options.md)). 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.*
|
||||
```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" />
|
||||
<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>
|
||||
```
|
||||
|
||||
By default, the big play button is located in the upper left hand corner so it doesn't cover up the interesting parts of the poster. If you'd prefer to center the big play button, you can add an additional `vjs-big-play-centered` class to your video element. For example:
|
||||
|
||||
```html
|
||||
<video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered"
|
||||
controls preload="auto" width="640" height="264"
|
||||
poster="http://video-js.zencoder.com/oceans-clip.png"
|
||||
data-setup='{"example_option":true}'>
|
||||
...
|
||||
</video>
|
||||
```
|
||||
|
||||
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.
|
||||
```js
|
||||
videojs("example_video_1", {}, function(){
|
||||
// Player (this) is initialized and ready.
|
||||
});
|
||||
```
|
||||
|
||||
The first argument in the `videojs` 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.
|
||||
|
||||
Instead of using an element ID, you can also pass a reference to the element itself.
|
||||
|
||||
```js
|
||||
videojs(document.getElementById('example_video_1'), {}, function() {
|
||||
// This is functionally the same as the previous example.
|
||||
});
|
||||
```
|
||||
|
||||
```js
|
||||
videojs(document.getElementsByClassName('awesome_video_class')[0], {}, function() {
|
||||
// You can grab an element by class if you'd like, just make sure
|
||||
// if it's an array that you pick one (here we chose the first).
|
||||
});
|
||||
```
|
||||
|
||||
\* If you have trouble playing back content you know is in the [correct format](http://blog.zencoder.com/2013/09/13/what-formats-do-i-need-for-html5-video/), your HTTP server might not be delivering the content with the correct [MIME type](http://en.wikipedia.org/wiki/Internet_media_type#Type_video). Please double check your content's headers before opening an [issue](https://github.com/videojs/video.js/blob/master/CONTRIBUTING.md).
|
||||
@@ -0,0 +1,29 @@
|
||||
Skins
|
||||
=====
|
||||
|
||||
The base Video.js skin is made using HTML and CSS (although we use the [Sass preprocessor](http://sass-lang.com)), and by default these styles are added to the dom for you! That means you can build a custom skin by simply taking advantage of the cascading aspect of CSS and overriding
|
||||
the styles you'd like to change.
|
||||
|
||||
If you don't want Video.js to inject the base styles for you, you can disable it by setting `window.VIDEOJS_NO_BASE_THEME = false` before Video.js is loaded. Keep in mind that without these base styles
|
||||
enabled, you'll need to manually include them.
|
||||
|
||||
## Icons
|
||||
|
||||
You can view all of the icons available in the base theme by renaming and viewing [`icons.html.example`](https://github.com/videojs/video.js/blob/master/sandbox/icons.html.example) in the sandbox directory.
|
||||
|
||||
## Customization
|
||||
|
||||
When you create a new skin, the easiest way to get started is to simply override the base Video.js theme. You should include a new class matching the
|
||||
name of your theme, then just start overriding!
|
||||
|
||||
```css
|
||||
.vjs-skin-hotdog-stand { color: #FF0000; }
|
||||
.vjs-skin-hotdog-stand .vjs-control-bar { background: #FFFF00; }
|
||||
.vjs-skin-hotdog-stand .vjs-play-progress { background: #FF0000; }
|
||||
```
|
||||
|
||||
This would take care of the major areas of the skin (play progress, the control bar background, and icon colors), but you can skin any other aspect.
|
||||
Our suggestion is to use a browser such as Firefox and Chrome, and use the developer tools to inspect the different elements and see what you'd like to change and what classes
|
||||
to target when you do so.
|
||||
|
||||
More custom skins will be available for download soon. If you have one you like you can share it by forking [this example on CodePen.io](http://codepen.io/heff/pen/EarCt), and adding a link on the [Skins wiki page](https://github.com/videojs/video.js/wiki/Skins).
|
||||
@@ -0,0 +1,102 @@
|
||||
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
|
||||
|
||||
Adding Playback Technology
|
||||
==================
|
||||
When adding additional Tech to a video player, make sure to add the supported tech to the video object.
|
||||
|
||||
### Tag Method: ###
|
||||
<video data-setup='{"techOrder": ["html5", "flash", "other supported tech"]}'
|
||||
|
||||
### Object Method: ###
|
||||
videojs("videoID", {
|
||||
techOrder: ["html5", "flash", "other supported tech"]
|
||||
});
|
||||
|
||||
Technology Ordering
|
||||
==================
|
||||
By default Video.js performs "Tech-first" ordering when it searches for a source/tech combination to play videos. This means that if you have two sources and two techs, video.js will try to play each video with the first tech in the `techOrder` option property before moving on to try the next playback technology.
|
||||
|
||||
Tech-first ordering can present a problem if you have a `sourceHandler` that supports both `Html5` and `Flash` techs such as videojs-contrib-hls.
|
||||
|
||||
For example, given the following video element:
|
||||
|
||||
<video data-setup='{"techOrder": ["html5", "flash"]}'>
|
||||
<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>
|
||||
|
||||
There is a good chance that the mp4 source will be selected on platforms that do not have media source extensions. Video.js will try all sources against the first playback technology, in this case `Html5`, and select the first source that can play - in this case MP4.
|
||||
|
||||
In "Tech-first" mode, the tests run something like this:
|
||||
Can video.m3u8 play with Html5? No...
|
||||
Can video.mp4 play with Html5? Yes! Use the second source.
|
||||
|
||||
Video.js now provides another method of selecting the source - "Source-first" ordering. In this mode, Video.js tries the first source against every tech in `techOrder` before moving onto the next source.
|
||||
|
||||
With a player setup as follows:
|
||||
|
||||
<video data-setup='{"techOrder": ["html5", "flash"], "sourceOrder": true}'>
|
||||
<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 Flash-based HLS support will be tried before falling back to the MP4 source.
|
||||
|
||||
In "Source-first" mode, the tests run something like this:
|
||||
Can video.m3u8 play with Html5? No...
|
||||
Can video.m3u8 play with Flash? Yes! Use the first source.
|
||||
|
||||
Flash Technology
|
||||
==================
|
||||
The Flash playback tech is a part of the default `techOrder`. You may notice undesirable playback behavior in browsers that are subject to using this playback tech, in particular when scrubbing and seeking within a video. This behavior is a result of Flash's progressive video playback.
|
||||
|
||||
Enabling 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:
|
||||
|
||||
<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:
|
||||
|
||||
<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).
|
||||
@@ -11,27 +11,32 @@ Text Tracks are a function of HTML5 video for providing time triggered text to t
|
||||
|
||||
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.
|
||||
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](https://dev.modern.ie/testdrive/demos/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 ]
|
||||
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 ]. If you'd like a more in depth style guide for captioning, you can reference 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 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.
|
||||
Once you have your WebVTT file created, you can add it to Video.js using the track tag. Put your track tag after all the source elements, and before any fallback content.
|
||||
|
||||
```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' />
|
||||
<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>
|
||||
```
|
||||
|
||||
Subtitles from Another Domain
|
||||
-----------------------------
|
||||
Because we're pulling in 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/) in order to do so.
|
||||
|
||||
Track Attributes
|
||||
----------------
|
||||
Additional settings for track tags.
|
||||
@@ -51,8 +56,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
|
||||
<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>
|
||||
@@ -91,12 +94,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<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>
|
||||
@@ -134,12 +131,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<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>
|
||||
@@ -177,12 +168,6 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<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>
|
||||
@@ -219,7 +204,5 @@ The two-letter code (valid BCP 47 language tag) for the language of the text tra
|
||||
<tr><th>yo<th><td>Yoruba</td></tr>
|
||||
<tr><th>zu<th><td>Zulu</td></tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
+22
-12
@@ -2,26 +2,36 @@
|
||||
|
||||
<h1>Video.js Documentation</h1>
|
||||
|
||||
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).
|
||||
There are two categories of docs: [Guides](./guides/) and [API docs](./api/). 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.
|
||||
|
||||
## Getting Started
|
||||
(Corrections and additions welcome)
|
||||
|
||||
* [Setup](setup.md) - Check out the [5 second setup](http://videojs.com/#section5) 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.
|
||||
## Guides
|
||||
|
||||
* [Options](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.
|
||||
### Getting Started
|
||||
|
||||
* [Tracks](tracks.md) - Text Tracks are used to display subtitles and captions, and add a menu for navigating between chapters in a video.
|
||||
* [Setup](./guides/setup.md) - The setup documentation gives a deeper view of the additional methods you can use to trigger the player setup.
|
||||
|
||||
## Customizing
|
||||
* [Options](./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.
|
||||
|
||||
* [API](api.md) - 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.
|
||||
* [Tracks](./guides/tracks.md) - Text Tracks are used to display subtitles and captions, and add a menu for navigating between chapters in a video.
|
||||
|
||||
* [Skins](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.
|
||||
### Customizing
|
||||
|
||||
* [Tech](tech.md) - 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.
|
||||
* [API](./guides/api.md) - 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.
|
||||
|
||||
* [Plugins](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.
|
||||
* [Skins](./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.
|
||||
|
||||
## Resources
|
||||
* [Tech](./guides/tech.md) - 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.
|
||||
|
||||
* [Glossary](glossary.md) - Some helpful definitions.
|
||||
* [Plugins](./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.
|
||||
|
||||
### Resources
|
||||
|
||||
* [Glossary](./guides/glossary.md) - Some helpful definitions.
|
||||
|
||||
* [Removing Players](./guides/removing-players.md) - Helpful for using VideoJS in single page apps.
|
||||
|
||||
## API Docs
|
||||
- The most relevant API doc is the [player API doc](./api/vjs.Player.md).
|
||||
- [Full list of API Docs](./api/)
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
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 (</body>) instead of the head (<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 ###
|
||||
```html
|
||||
<link href="http://vjs.zencdn.net/4.0/video-js.css" rel="stylesheet">
|
||||
<script src="http://vjs.zencdn.net/4.0/video.js"></script>
|
||||
```
|
||||
|
||||
### Self Hosted. ###
|
||||
With the self hosted option you'll also want to update the location of the video-js.swf file.
|
||||
```html
|
||||
<link href="http://example.com/path/to/video-js.css" rel="stylesheet">
|
||||
<script src="http://example.com/path/to/video.js"></script>
|
||||
<script>
|
||||
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
|
||||
</script>
|
||||
```
|
||||
|
||||
|
||||
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](options.md)). 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.
|
||||
|
||||
```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>
|
||||
```
|
||||
|
||||
|
||||
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.
|
||||
```js
|
||||
videojs("example_video_1", {}, function(){
|
||||
// Player (this) is initialized and ready.
|
||||
});
|
||||
```
|
||||
|
||||
The first argument in the `videojs` 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.
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
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/videojs/video.js/blob/master/src/css/video-js.css) on Github.
|
||||
|
||||
You can either override styles in the default skin:
|
||||
|
||||
```css
|
||||
.vjs-default-skin .vjs-play-progress { background: #900; }
|
||||
```
|
||||
|
||||
Or remove the 'vjs-default-skin' class from the video tag and create your own skin.
|
||||
|
||||
```html
|
||||
<video class="video-js my-custom-skin" ...>
|
||||
```
|
||||
|
||||
More custom skins will be available for download soon. If you have one you'd like to contribute back, please email it to skins at videojs.
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
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
|
||||
|
||||
Adding Playback Technology
|
||||
==================
|
||||
When adding additional Tech to a video player, make sure to add the supported tech to the video object.
|
||||
|
||||
### Tag Method: ###
|
||||
<video data-setup='{"techOrder": ["html5", "flash", "other supported tech"]}'
|
||||
|
||||
### Object Method: ###
|
||||
videojs("videoID", {
|
||||
techOrder: ["html5", "flash", "other supported tech"]
|
||||
});
|
||||
|
||||
Youtube Technology
|
||||
==================
|
||||
To add a youtube source to your video tag, use the following source:
|
||||
|
||||
<source src="http://www.youtube.com/watch?v=[ytVideoId]" type="video/youtube"
|
||||
|
||||
Important Note:
|
||||
------------------
|
||||
> You can simply copy and paste the url of the youtube page from the browser and
|
||||
> the Youtube Tech will be able to find the video id by itself. This is just the
|
||||
> minimum needed to get the video working. (Useful for data storage)
|
||||
|
||||
|
||||
Youtube Technology - Extra Options
|
||||
----------------------------------
|
||||
|
||||
In Addition to the natively supported options, the Youtube API supports the following
|
||||
added options:
|
||||
|
||||
### ytcontrols ###
|
||||
Type: Boolean (T/F)
|
||||
Default: False
|
||||
|
||||
Determines whether to show Youtube's basic Red/Black default play bar skin or to hide
|
||||
it and use the native video-js play bar.
|
||||
|
||||
### hd ###
|
||||
Type: Boolean (T/F)
|
||||
Default: False
|
||||
|
||||
Determines whether or not to play back the video in HD.
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "تشغيل",
|
||||
"Pause": "ايقاف",
|
||||
"Current Time": "الوقت الحالي",
|
||||
"Duration Time": "Dauer",
|
||||
"Remaining Time": "الوقت المتبقي",
|
||||
"Stream Type": "نوع التيار",
|
||||
"LIVE": "مباشر",
|
||||
"Loaded": "تم التحميل",
|
||||
"Progress": "التقدم",
|
||||
"Fullscreen": "ملء الشاشة",
|
||||
"Non-Fullscreen": "غير ملء الشاشة",
|
||||
"Mute": "صامت",
|
||||
"Unmute": "غير الصامت",
|
||||
"Playback Rate": "معدل التشغيل",
|
||||
"Subtitles": "الترجمة",
|
||||
"subtitles off": "ايقاف الترجمة",
|
||||
"Captions": "التعليقات",
|
||||
"captions off": "ايقاف التعليقات",
|
||||
"Chapters": "فصول",
|
||||
"You aborted the media playback": "لقد ألغيت تشغيل الفيديو",
|
||||
"A network error caused the media download to fail part-way.": "تسبب خطأ في الشبكة بفشل تحميل الفيديو بالكامل.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "لا يمكن تحميل الفيديو بسبب فشل في الخادم أو الشبكة ، أو فشل بسبب عدم امكانية قراءة تنسيق الفيديو.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "تم ايقاف تشغيل الفيديو بسبب مشكلة فساد أو لأن الفيديو المستخدم يستخدم ميزات غير مدعومة من متصفحك.",
|
||||
"No compatible source was found for this media.": "فشل العثور على أي مصدر متوافق مع هذا الفيديو."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Pusti",
|
||||
"Pause": "Pauza",
|
||||
"Current Time": "Trenutno vrijeme",
|
||||
"Duration Time": "Vrijeme trajanja",
|
||||
"Remaining Time": "Preostalo vrijeme",
|
||||
"Stream Type": "Način strimovanja",
|
||||
"LIVE": "UŽIVO",
|
||||
"Loaded": "Učitan",
|
||||
"Progress": "Progres",
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
"Captions": "Titlovi",
|
||||
"captions off": "Titlovi deaktivirani",
|
||||
"Chapters": "Poglavlja",
|
||||
"You aborted the media playback": "Isključili ste reprodukciju videa.",
|
||||
"A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.",
|
||||
"No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Възпроизвеждане",
|
||||
"Pause": "Пауза",
|
||||
"Current Time": "Текущо време",
|
||||
"Duration Time": "Продължителност",
|
||||
"Remaining Time": "Оставащо време",
|
||||
"Stream Type": "Тип на потока",
|
||||
"LIVE": "НА ЖИВО",
|
||||
"Loaded": "Заредено",
|
||||
"Progress": "Прогрес",
|
||||
"Fullscreen": "Цял екран",
|
||||
"Non-Fullscreen": "Спиране на цял екран",
|
||||
"Mute": "Без звук",
|
||||
"Unmute": "Със звук",
|
||||
"Playback Rate": "Скорост на възпроизвеждане",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Спряни субтитри",
|
||||
"Captions": "Аудио надписи",
|
||||
"captions off": "Спряни аудио надписи",
|
||||
"Chapters": "Глави",
|
||||
"You aborted the media playback": "Спряхте възпроизвеждането на видеото",
|
||||
"A network error caused the media download to fail part-way.": "Грешка в мрежата провали изтеглянето на видеото.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Видеото не може да бъде заредено заради проблем със сървъра или мрежата или защото този формат не е поддържан.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Възпроизвеждането на видеото беше прекъснато заради проблем с файла или защото видеото използва опции които браузърът Ви не поддържа.",
|
||||
"No compatible source was found for this media.": "Не беше намерен съвместим източник за това видео."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Reproducció",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Temps reproduït",
|
||||
"Duration Time": "Durada total",
|
||||
"Remaining Time": "Temps restant",
|
||||
"Stream Type": "Tipus de seqüència",
|
||||
"LIVE": "EN DIRECTE",
|
||||
"Loaded": "Carregat",
|
||||
"Progress": "Progrés",
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silencia",
|
||||
"Unmute": "Amb so",
|
||||
"Playback Rate": "Velocitat de reproducció",
|
||||
"Subtitles": "Subtítols",
|
||||
"subtitles off": "Subtítols desactivats",
|
||||
"Captions": "Llegendes",
|
||||
"captions off": "Llegendes desactivades",
|
||||
"Chapters": "Capítols",
|
||||
"You aborted the media playback": "Heu interromput la reproducció del vídeo.",
|
||||
"A network error caused the media download to fail part-way.": "Un error de la xarxa ha interromput la baixada del vídeo.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "No s'ha pogut carregar el vídeo perquè el servidor o la xarxa han fallat, o bé perquè el seu format no és compatible.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La reproducció de vídeo s'ha interrumput per un problema de corrupció de dades o bé perquè el vídeo demanava funcions que el vostre navegador no ofereix.",
|
||||
"No compatible source was found for this media.": "No s'ha trobat cap font compatible amb el vídeo."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Přehrát",
|
||||
"Pause": "Pauza",
|
||||
"Current Time": "Aktuální čas",
|
||||
"Duration Time": "Doba trvání",
|
||||
"Remaining Time": "Zbývající čas",
|
||||
"Stream Type": "Stream Type",
|
||||
"LIVE": "ŽIVĚ",
|
||||
"Loaded": "Načteno",
|
||||
"Progress": "Stav",
|
||||
"Fullscreen": "Celá obrazovka",
|
||||
"Non-Fullscreen": "Zmenšená obrazovka",
|
||||
"Mute": "Ztlumit zvuk",
|
||||
"Unmute": "Přehrát zvuk",
|
||||
"Playback Rate": "Rychlost přehrávání",
|
||||
"Subtitles": "Titulky",
|
||||
"subtitles off": "Titulky vypnuty",
|
||||
"Captions": "Popisky",
|
||||
"captions off": "Popisky vypnuty",
|
||||
"Chapters": "Kapitoly",
|
||||
"You aborted the media playback": "Přehrávání videa je přerušeno.",
|
||||
"A network error caused the media download to fail part-way.": "Video nemohlo být načteno, kvůli chybě v síti.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video nemohlo být načteno, buď kvůli chybě serveru nebo sítě nebo proto, že daný formát není podporován.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Váš prohlížeč nepodporuje formát videa.",
|
||||
"No compatible source was found for this media.": "Špatně zadaný zdroj videa."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Afspil",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuel tid",
|
||||
"Duration Time": "Varighed",
|
||||
"Remaining Time": "Resterende tid",
|
||||
"Stream Type": "Stream-type",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Indlæst",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fuldskærm",
|
||||
"Non-Fullscreen": "Luk fuldskærm",
|
||||
"Mute": "Uden lyd",
|
||||
"Unmute": "Med lyd",
|
||||
"Playback Rate": "Afspilningsrate",
|
||||
"Subtitles": "Undertekster",
|
||||
"subtitles off": "Uden undertekster",
|
||||
"Captions": "Undertekster for hørehæmmede",
|
||||
"captions off": "Uden undertekster for hørehæmmede",
|
||||
"Chapters": "Kapitler",
|
||||
"You aborted the media playback": "Du afbrød videoafspilningen.",
|
||||
"A network error caused the media download to fail part-way.": "En netværksfejl fik download af videoen til at fejle.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke indlæses, enten fordi serveren eller netværket fejlede, eller fordi formatet ikke er understøttet.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoafspilningen blev afbrudt på grund af ødelagte data eller fordi videoen benyttede faciliteter som din browser ikke understøtter.",
|
||||
"No compatible source was found for this media.": "Fandt ikke en kompatibel kilde for denne media."
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Play": "Wiedergabe",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktueller Zeitpunkt",
|
||||
"Duration Time": "Dauer",
|
||||
"Remaining Time": "Verbleibende Zeit",
|
||||
"Stream Type": "Streamtyp",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Geladen",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Vollbild",
|
||||
"Non-Fullscreen": "Kein Vollbild",
|
||||
"Mute": "Ton aus",
|
||||
"Unmute": "Ton ein",
|
||||
"Playback Rate": "Wiedergabegeschwindigkeit",
|
||||
"Subtitles": "Untertitel",
|
||||
"subtitles off": "Untertitel aus",
|
||||
"Captions": "Untertitel",
|
||||
"captions off": "Untertitel aus",
|
||||
"Chapters": "Kapitel",
|
||||
"You aborted the media playback": "Sie haben die Videowiedergabe abgebrochen.",
|
||||
"A network error caused the media download to fail part-way.": "Der Videodownload ist aufgrund eines Netzwerkfehlers fehlgeschlagen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Die Videowiedergabe wurde entweder wegen eines Problems mit einem beschädigten Video oder wegen verwendeten Funktionen, die vom Browser nicht unterstützt werden, abgebrochen.",
|
||||
"No compatible source was found for this media.": "Für dieses Video wurde keine kompatible Quelle gefunden.",
|
||||
"Play video": "Video abspielen",
|
||||
"Close": "Schließen",
|
||||
"Modal Window": "Modales Fenster",
|
||||
"This is a modal window": "Dies ist ein modales Fenster",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Durch Drücken der Esc-Taste bzw. Betätigung der Schaltfläche \"Schließen\" wird dieses modale Fenster geschlossen.",
|
||||
", opens captions settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", opens subtitles settings dialog": ", öffnet Einstellungen für Untertitel",
|
||||
", selected": " (ausgewählt)"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Play": "Play",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Current Time",
|
||||
"Duration Time": "Duration Time",
|
||||
"Remaining Time": "Remaining Time",
|
||||
"Stream Type": "Stream Type",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Loaded",
|
||||
"Progress": "Progress",
|
||||
"Fullscreen": "Fullscreen",
|
||||
"Non-Fullscreen": "Non-Fullscreen",
|
||||
"Mute": "Mute",
|
||||
"Unmute": "Unmute",
|
||||
"Playback Rate": "Playback Rate",
|
||||
"Subtitles": "Subtitles",
|
||||
"subtitles off": "subtitles off",
|
||||
"Captions": "Captions",
|
||||
"captions off": "captions off",
|
||||
"Chapters": "Chapters",
|
||||
"You aborted the media playback": "You aborted the media playback",
|
||||
"A network error caused the media download to fail part-way.": "A network error caused the media download to fail part-way.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "The media could not be loaded, either because the server or network failed or because the format is not supported.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",
|
||||
"No compatible source was found for this media.": "No compatible source was found for this media.",
|
||||
"Play video": "Play video",
|
||||
"Close": "Close",
|
||||
"Modal Window": "Modal Window",
|
||||
"This is a modal window": "This is a modal window",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "This modal can be closed by pressing the Escape key or activating the close button.",
|
||||
", opens captions settings dialog": ", opens captions settings dialog",
|
||||
", opens subtitles settings dialog": ", opens subtitles settings dialog",
|
||||
", selected": ", selected"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Reproducción",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Tiempo reproducido",
|
||||
"Duration Time": "Duración total",
|
||||
"Remaining Time": "Tiempo restante",
|
||||
"Stream Type": "Tipo de secuencia",
|
||||
"LIVE": "DIRECTO",
|
||||
"Loaded": "Cargado",
|
||||
"Progress": "Progreso",
|
||||
"Fullscreen": "Pantalla completa",
|
||||
"Non-Fullscreen": "Pantalla no completa",
|
||||
"Mute": "Silenciar",
|
||||
"Unmute": "No silenciado",
|
||||
"Playback Rate": "Velocidad de reproducción",
|
||||
"Subtitles": "Subtítulos",
|
||||
"subtitles off": "Subtítulos desactivados",
|
||||
"Captions": "Subtítulos especiales",
|
||||
"captions off": "Subtítulos especiales desactivados",
|
||||
"Chapters": "Capítulos",
|
||||
"You aborted the media playback": "Ha interrumpido la reproducción del vídeo.",
|
||||
"A network error caused the media download to fail part-way.": "Un error de red ha interrumpido la descarga del vídeo.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "No se ha podido cargar el vídeo debido a un fallo de red o del servidor o porque el formato es incompatible.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La reproducción de vídeo se ha interrumpido por un problema de corrupción de datos o porque el vídeo precisa funciones que su navegador no ofrece.",
|
||||
"No compatible source was found for this media.": "No se ha encontrado ninguna fuente compatible con este vídeo."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "پخش",
|
||||
"Pause": "وقفه",
|
||||
"Current Time": "زمان کنونی",
|
||||
"Duration Time": "مدت زمان",
|
||||
"Remaining Time": "زمان باقیمانده",
|
||||
"Stream Type": "نوع استریم",
|
||||
"LIVE": "زنده",
|
||||
"Loaded": "فراخوانی شده",
|
||||
"Progress": "پیشرفت",
|
||||
"Fullscreen": "تمام صفحه",
|
||||
"Non-Fullscreen": "نمایش عادی",
|
||||
"Mute": "بی صدا",
|
||||
"Unmute": "بهمراه صدا",
|
||||
"Playback Rate": "سرعت پخش",
|
||||
"Subtitles": "زیرنویس",
|
||||
"subtitles off": "بدون زیرنویس",
|
||||
"Captions": "عنوان",
|
||||
"captions off": "بدون عنوان",
|
||||
"Chapters": "فصل",
|
||||
"You aborted the media playback": "شما پخش را متوقف کردید.",
|
||||
"A network error caused the media download to fail part-way.": "مشکل در دریافت ویدئو ...",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "فرمت پشتیبانی نمیشود یا خطایی روی داده است.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "مشکل در دریافت ویدئو ...",
|
||||
"No compatible source was found for this media.": "هیچ ورودی ای برای این رسانه شناسایی نشد."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Toisto",
|
||||
"Pause": "Tauko",
|
||||
"Current Time": "Tämänhetkinen aika",
|
||||
"Duration Time": "Kokonaisaika",
|
||||
"Remaining Time": "Jäljellä oleva aika",
|
||||
"Stream Type": "Lähetystyyppi",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Ladattu",
|
||||
"Progress": "Edistyminen",
|
||||
"Fullscreen": "Koko näyttö",
|
||||
"Non-Fullscreen": "Koko näyttö pois",
|
||||
"Mute": "Ääni pois",
|
||||
"Unmute": "Ääni päällä",
|
||||
"Playback Rate": "Toistonopeus",
|
||||
"Subtitles": "Tekstitys",
|
||||
"subtitles off": "Tekstitys pois",
|
||||
"Captions": "Tekstitys",
|
||||
"captions off": "Tekstitys pois",
|
||||
"Chapters": "Kappaleet",
|
||||
"You aborted the media playback": "Olet keskeyttänyt videotoiston.",
|
||||
"A network error caused the media download to fail part-way.": "Verkkovirhe keskeytti videon latauksen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videon lataus ei onnistunut joko palvelin- tai verkkovirheestä tai väärästä formaatista johtuen.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videon toisto keskeytyi, koska media on vaurioitunut tai käyttää käyttää toimintoja, joita selaimesi ei tue.",
|
||||
"No compatible source was found for this media.": "Tälle videolle ei löytynyt yhteensopivaa lähdettä."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Lecture",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Temps actuel",
|
||||
"Duration Time": "Durée",
|
||||
"Remaining Time": "Temps restant",
|
||||
"Stream Type": "Type de flux",
|
||||
"LIVE": "EN DIRECT",
|
||||
"Loaded": "Chargé",
|
||||
"Progress": "Progression",
|
||||
"Fullscreen": "Plein écran",
|
||||
"Non-Fullscreen": "Fenêtré",
|
||||
"Mute": "Sourdine",
|
||||
"Unmute": "Son activé",
|
||||
"Playback Rate": "Vitesse de lecture",
|
||||
"Subtitles": "Sous-titres",
|
||||
"subtitles off": "Sous-titres désactivés",
|
||||
"Captions": "Sous-titres",
|
||||
"captions off": "Sous-titres désactivés",
|
||||
"Chapters": "Chapitres",
|
||||
"You aborted the media playback": "Vous avez interrompu la lecture de la vidéo.",
|
||||
"A network error caused the media download to fail part-way.": "Une erreur de réseau a interrompu le téléchargement de la vidéo.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Cette vidéo n'a pas pu être chargée, soit parce que le serveur ou le réseau a échoué ou parce que le format n'est pas reconnu.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La lecture de la vidéo a été interrompue à cause d'un problème de corruption ou parce que la vidéo utilise des fonctionnalités non prises en charge par votre navigateur.",
|
||||
"No compatible source was found for this media.": "Aucune source compatible n'a été trouvée pour cette vidéo."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Pusti",
|
||||
"Pause": "Pauza",
|
||||
"Current Time": "Trenutno vrijeme",
|
||||
"Duration Time": "Vrijeme trajanja",
|
||||
"Remaining Time": "Preostalo vrijeme",
|
||||
"Stream Type": "Način strimovanja",
|
||||
"LIVE": "UŽIVO",
|
||||
"Loaded": "Učitan",
|
||||
"Progress": "Progres",
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
"Captions": "Titlovi",
|
||||
"captions off": "Titlovi deaktivirani",
|
||||
"Chapters": "Poglavlja",
|
||||
"You aborted the media playback": "Isključili ste reprodukciju videa.",
|
||||
"A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.",
|
||||
"No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Lejátszás",
|
||||
"Pause": "Szünet",
|
||||
"Current Time": "Aktuális időpont",
|
||||
"Duration Time": "Hossz",
|
||||
"Remaining Time": "Hátralévő idő",
|
||||
"Stream Type": "Adatfolyam típusa",
|
||||
"LIVE": "ÉLŐ",
|
||||
"Loaded": "Betöltve",
|
||||
"Progress": "Állapot",
|
||||
"Fullscreen": "Teljes képernyő",
|
||||
"Non-Fullscreen": "Normál méret",
|
||||
"Mute": "Némítás",
|
||||
"Unmute": "Némítás kikapcsolva",
|
||||
"Playback Rate": "Lejátszási sebesség",
|
||||
"Subtitles": "Feliratok",
|
||||
"subtitles off": "Feliratok kikapcsolva",
|
||||
"Captions": "Magyarázó szöveg",
|
||||
"captions off": "Magyarázó szöveg kikapcsolva",
|
||||
"Chapters": "Fejezetek",
|
||||
"You aborted the media playback": "Leállította a lejátszást",
|
||||
"A network error caused the media download to fail part-way.": "Hálózati hiba miatt a videó részlegesen töltődött le.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "A videó nem tölthető be hálózati vagy kiszolgálói hiba miatt, vagy a formátuma nem támogatott.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "A lejátszás adatsérülés miatt leállt, vagy a videó egyes tulajdonságait a böngészője nem támogatja.",
|
||||
"No compatible source was found for this media.": "Nincs kompatibilis forrás ehhez a videóhoz."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Play",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Orario attuale",
|
||||
"Duration Time": "Durata",
|
||||
"Remaining Time": "Tempo rimanente",
|
||||
"Stream Type": "Tipo del Streaming",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Caricato",
|
||||
"Progress": "Stato",
|
||||
"Fullscreen": "Schermo intero",
|
||||
"Non-Fullscreen": "Chiudi schermo intero",
|
||||
"Mute": "Muto",
|
||||
"Unmute": "Audio",
|
||||
"Playback Rate": "Tasso di riproduzione",
|
||||
"Subtitles": "Sottotitoli",
|
||||
"subtitles off": "Senza sottotitoli",
|
||||
"Captions": "Sottotitoli non udenti",
|
||||
"captions off": "Senza sottotitoli non udenti",
|
||||
"Chapters": "Capitolo",
|
||||
"You aborted the media playback": "La riproduzione del filmato è stata interrotta.",
|
||||
"A network error caused the media download to fail part-way.": "Il download del filmato è stato interrotto a causa di un problema rete.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Il filmato non può essere caricato a causa di un errore nel server o nella rete o perché il formato non viene supportato.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "La riproduzione del filmato è stata interrotta a causa di un file danneggiato o per l’utilizzo di impostazioni non supportate dal browser.",
|
||||
"No compatible source was found for this media.": "Non ci sono fonti compatibili per questo filmato."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "再生",
|
||||
"Pause": "一時停止",
|
||||
"Current Time": "現在の時間",
|
||||
"Duration Time": "長さ",
|
||||
"Remaining Time": "残りの時間",
|
||||
"Stream Type": "ストリームの種類",
|
||||
"LIVE": "ライブ",
|
||||
"Loaded": "ロード済み",
|
||||
"Progress": "進行状況",
|
||||
"Fullscreen": "フルスクリーン",
|
||||
"Non-Fullscreen": "フルスクリーン以外",
|
||||
"Mute": "ミュート",
|
||||
"Unmute": "ミュート解除",
|
||||
"Playback Rate": "再生レート",
|
||||
"Subtitles": "サブタイトル",
|
||||
"subtitles off": "サブタイトル オフ",
|
||||
"Captions": "キャプション",
|
||||
"captions off": "キャプション オフ",
|
||||
"Chapters": "チャプター",
|
||||
"You aborted the media playback": "動画再生を中止しました",
|
||||
"A network error caused the media download to fail part-way.": "ネットワーク エラーにより動画のダウンロードが途中で失敗しました",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "サーバーまたはネットワークのエラー、またはフォーマットがサポートされていないため、動画をロードできませんでした",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "破損の問題、またはお使いのブラウザがサポートしていない機能が動画に使用されていたため、動画の再生が中止されました",
|
||||
"No compatible source was found for this media.": "この動画に対して互換性のあるソースが見つかりませんでした"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "재생",
|
||||
"Pause": "일시중지",
|
||||
"Current Time": "현재 시간",
|
||||
"Duration Time": "지정 기간",
|
||||
"Remaining Time": "남은 시간",
|
||||
"Stream Type": "스트리밍 유형",
|
||||
"LIVE": "라이브",
|
||||
"Loaded": "로드됨",
|
||||
"Progress": "진행",
|
||||
"Fullscreen": "전체 화면",
|
||||
"Non-Fullscreen": "전체 화면 해제",
|
||||
"Mute": "음소거",
|
||||
"Unmute": "음소거 해제",
|
||||
"Playback Rate": "재생 비율",
|
||||
"Subtitles": "서브타이틀",
|
||||
"subtitles off": "서브타이틀 끄기",
|
||||
"Captions": "자막",
|
||||
"captions off": "자막 끄기",
|
||||
"Chapters": "챕터",
|
||||
"You aborted the media playback": "비디오 재생을 취소했습니다.",
|
||||
"A network error caused the media download to fail part-way.": "네트워크 오류로 인하여 비디오 일부를 다운로드하지 못 했습니다.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "비디오를 로드할 수 없습니다. 서버 혹은 네트워크 오류 때문이거나 지원되지 않는 형식 때문일 수 있습니다.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "비디오 재생이 취소됐습니다. 비디오가 손상되었거나 비디오가 사용하는 기능을 브라우저에서 지원하지 않는 것 같습니다.",
|
||||
"No compatible source was found for this media.": "비디오에 호환되지 않는 소스가 있습니다."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Spill",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varighet",
|
||||
"Remaining Time": "Gjenstående tid",
|
||||
"Stream Type": "Type strøm",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lastet inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Lukk fullskjerm",
|
||||
"Mute": "Lyd av",
|
||||
"Unmute": "Lyd på",
|
||||
"Playback Rate": "Avspillingsrate",
|
||||
"Subtitles": "Undertekst på",
|
||||
"subtitles off": "Undertekst av",
|
||||
"Captions": "Undertekst for hørselshemmede på",
|
||||
"captions off": "Undertekst for hørselshemmede av",
|
||||
"Chapters": "Kapitler",
|
||||
"You aborted the media playback": "Du avbrøt avspillingen.",
|
||||
"A network error caused the media download to fail part-way.": "En nettverksfeil avbrøt nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikke lastes ned, på grunn av nettverksfeil eller serverfeil, eller fordi formatet ikke er støttet.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspillingen ble avbrudt på grunn av ødelagte data eller fordi videoen ville gjøre noe som nettleseren din ikke har støtte for.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Afspelen",
|
||||
"Pause": "Pauze",
|
||||
"Current Time": "Huidige tijd",
|
||||
"Duration Time": "Looptijd",
|
||||
"Remaining Time": "Resterende tijd",
|
||||
"Stream Type": "Streamtype",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Geladen",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Volledig scherm",
|
||||
"Non-Fullscreen": "Geen volledig scherm",
|
||||
"Mute": "Geluid uit",
|
||||
"Unmute": "Geluid aan",
|
||||
"Playback Rate": "Weergavesnelheid",
|
||||
"Subtitles": "Ondertiteling",
|
||||
"subtitles off": "Ondertiteling uit",
|
||||
"Captions": "Ondertiteling",
|
||||
"captions off": "Ondertiteling uit",
|
||||
"Chapters": "Hoofdstukken",
|
||||
"You aborted the media playback": "U hebt de mediaweergave afgebroken.",
|
||||
"A network error caused the media download to fail part-way.": "De mediadownload is mislukt door een netwerkfout.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "De media kon niet worden geladen, vanwege een server- of netwerkfout of doordat het formaat niet wordt ondersteund.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "De mediaweergave is afgebroken vanwege beschadigde data of het mediabestand gebruikt functies die niet door uw browser worden ondersteund.",
|
||||
"No compatible source was found for this media.": "Voor deze media is geen ondersteunde bron gevonden."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Spel",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Varigheit",
|
||||
"Remaining Time": "Tid attende",
|
||||
"Stream Type": "Type straum",
|
||||
"LIVE": "DIREKTE",
|
||||
"Loaded": "Lasta inn",
|
||||
"Progress": "Status",
|
||||
"Fullscreen": "Fullskjerm",
|
||||
"Non-Fullscreen": "Stenga fullskjerm",
|
||||
"Mute": "Ljod av",
|
||||
"Unmute": "Ljod på",
|
||||
"Playback Rate": "Avspelingsrate",
|
||||
"Subtitles": "Teksting på",
|
||||
"subtitles off": "Teksting av",
|
||||
"Captions": "Teksting for høyrselshemma på",
|
||||
"captions off": "Teksting for høyrselshemma av",
|
||||
"Chapters": "Kapitel",
|
||||
"You aborted the media playback": "Du avbraut avspelinga.",
|
||||
"A network error caused the media download to fail part-way.": "Ein nettverksfeil avbraut nedlasting av videoen.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Videoen kunne ikkje lastas ned, på grunn av ein nettverksfeil eller serverfeil, eller av di formatet ikkje er stoda.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Videoavspelinga blei broten på grunn av øydelagde data eller av di videoen ville gjera noe som nettlesaren din ikkje stodar.",
|
||||
"No compatible source was found for this media.": "Fant ikke en kompatibel kilde for dette mediainnholdet."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Tocar",
|
||||
"Pause": "Pause",
|
||||
"Current Time": "Tempo",
|
||||
"Duration Time": "Duração",
|
||||
"Remaining Time": "Tempo Restante",
|
||||
"Stream Type": "Tipo de Stream",
|
||||
"LIVE": "AO VIVO",
|
||||
"Loaded": "Carregado",
|
||||
"Progress": "Progresso",
|
||||
"Fullscreen": "Tela Cheia",
|
||||
"Non-Fullscreen": "Tela Normal",
|
||||
"Mute": "Mudo",
|
||||
"Unmute": "Habilitar Som",
|
||||
"Playback Rate": "Velocidade",
|
||||
"Subtitles": "Legendas",
|
||||
"subtitles off": "Sem Legendas",
|
||||
"Captions": "Anotações",
|
||||
"captions off": "Sem Anotações",
|
||||
"Chapters": "Capítulos",
|
||||
"You aborted the media playback": "Você parou a execução de vídeo.",
|
||||
"A network error caused the media download to fail part-way.": "Um erro na rede fez o vídeo parar parcialmente.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "O vídeo não pode ser carregado, ou porque houve um problema com sua rede ou pelo formato do vídeo não ser suportado.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "A Execução foi interrompida por um problema com o vídeo ou por seu navegador não dar suporte ao seu formato.",
|
||||
"No compatible source was found for this media.": "Não foi encontrada fonte de vídeo compatível."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Воспроизвести",
|
||||
"Pause": "Приостановить",
|
||||
"Current Time": "Текущее время",
|
||||
"Duration Time": "Продолжительность",
|
||||
"Remaining Time": "Оставшееся время",
|
||||
"Stream Type": "Тип потока",
|
||||
"LIVE": "ОНЛАЙН",
|
||||
"Loaded": "Загрузка",
|
||||
"Progress": "Прогресс",
|
||||
"Fullscreen": "Полноэкранный режим",
|
||||
"Non-Fullscreen": "Неполноэкранный режим",
|
||||
"Mute": "Без звука",
|
||||
"Unmute": "Со звуком",
|
||||
"Playback Rate": "Скорость воспроизведения",
|
||||
"Subtitles": "Субтитры",
|
||||
"subtitles off": "Субтитры выкл.",
|
||||
"Captions": "Подписи",
|
||||
"captions off": "Подписи выкл.",
|
||||
"Chapters": "Главы",
|
||||
"You aborted the media playback": "Вы прервали воспроизведение видео",
|
||||
"A network error caused the media download to fail part-way.": "Ошибка сети вызвала сбой во время загрузки видео.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Невозможно загрузить видео из-за сетевого или серверного сбоя либо формат не поддерживается.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Воспроизведение видео было приостановлено из-за повреждения либо в связи с тем, что видео использует функции, неподдерживаемые вашим браузером.",
|
||||
"No compatible source was found for this media.": "Совместимые источники для этого видео отсутствуют."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Pusti",
|
||||
"Pause": "Pauza",
|
||||
"Current Time": "Trenutno vrijeme",
|
||||
"Duration Time": "Vrijeme trajanja",
|
||||
"Remaining Time": "Preostalo vrijeme",
|
||||
"Stream Type": "Način strimovanja",
|
||||
"LIVE": "UŽIVO",
|
||||
"Loaded": "Učitan",
|
||||
"Progress": "Progres",
|
||||
"Fullscreen": "Puni ekran",
|
||||
"Non-Fullscreen": "Mali ekran",
|
||||
"Mute": "Prigušen",
|
||||
"Unmute": "Ne-prigušen",
|
||||
"Playback Rate": "Stopa reprodukcije",
|
||||
"Subtitles": "Podnaslov",
|
||||
"subtitles off": "Podnaslov deaktiviran",
|
||||
"Captions": "Titlovi",
|
||||
"captions off": "Titlovi deaktivirani",
|
||||
"Chapters": "Poglavlja",
|
||||
"You aborted the media playback": "Isključili ste reprodukciju videa.",
|
||||
"A network error caused the media download to fail part-way.": "Video se prestao preuzimati zbog greške na mreži.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video se ne može reproducirati zbog servera, greške u mreži ili je format ne podržan.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Reprodukcija videa je zaustavljenja zbog greške u formatu ili zbog verzije vašeg pretraživača.",
|
||||
"No compatible source was found for this media.": "Nije nađen nijedan kompatibilan izvor ovog videa."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Spela",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Aktuell tid",
|
||||
"Duration Time": "Total tid",
|
||||
"Remaining Time": "Återstående tid",
|
||||
"Stream Type": "Strömningstyp",
|
||||
"LIVE": "LIVE",
|
||||
"Loaded": "Laddad",
|
||||
"Progress": "Förlopp",
|
||||
"Fullscreen": "Fullskärm",
|
||||
"Non-Fullscreen": "Ej fullskärm",
|
||||
"Mute": "Ljud av",
|
||||
"Unmute": "Ljud på",
|
||||
"Playback Rate": "Uppspelningshastighet",
|
||||
"Subtitles": "Text på",
|
||||
"subtitles off": "Text av",
|
||||
"Captions": "Text på",
|
||||
"captions off": "Text av",
|
||||
"Chapters": "Kapitel",
|
||||
"You aborted the media playback": "Du har avbrutit videouppspelningen.",
|
||||
"A network error caused the media download to fail part-way.": "Ett nätverksfel gjorde att nedladdningen av videon avbröts.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Det gick inte att ladda videon, antingen på grund av ett server- eller nätverksfel, eller för att formatet inte stöds.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Uppspelningen avbröts på grund av att videon är skadad, eller också för att videon använder funktioner som din webbläsare inte stöder.",
|
||||
"No compatible source was found for this media.": "Det gick inte att hitta någon kompatibel källa för den här videon."
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Play": "Oynat",
|
||||
"Pause": "Duraklat",
|
||||
"Current Time": "Süre",
|
||||
"Duration Time": "Toplam Süre",
|
||||
"Remaining Time": "Kalan Süre",
|
||||
"Stream Type": "Yayın Tipi",
|
||||
"LIVE": "CANLI",
|
||||
"Loaded": "Yüklendi",
|
||||
"Progress": "Yükleniyor",
|
||||
"Fullscreen": "Tam Ekran",
|
||||
"Non-Fullscreen": "Küçük Ekran",
|
||||
"Mute": "Ses Kapa",
|
||||
"Unmute": "Ses Aç",
|
||||
"Playback Rate": "Oynatma Hızı",
|
||||
"Subtitles": "Altyazı",
|
||||
"subtitles off": "Altyazı Kapalı",
|
||||
"Captions": "Ek Açıklamalar",
|
||||
"captions off": "Ek Açıklamalar Kapalı",
|
||||
"Chapters": "Bölümler",
|
||||
"You aborted the media playback": "Video oynatmayı iptal ettiniz",
|
||||
"A network error caused the media download to fail part-way.": "Video indirilirken bağlantı sorunu oluştu.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video oynatılamadı, ağ ya da sunucu hatası veya belirtilen format desteklenmiyor.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Tarayıcınız desteklemediği için videoda hata oluştu.",
|
||||
"No compatible source was found for this media.": "Video için kaynak bulunamadı.",
|
||||
"Play video": "Videoyu Oynat",
|
||||
"Close": "Kapat",
|
||||
"Modal Window": "Modal Penceresi",
|
||||
"This is a modal window": "Bu bir modal penceresidir",
|
||||
"This modal can be closed by pressing the Escape key or activating the close button.": "Bu modal ESC tuşuna basarak ya da kapata tıklanarak kapatılabilir.",
|
||||
", opens captions settings dialog": ", ek açıklama ayarları menüsünü açar",
|
||||
", opens subtitles settings dialog": ", altyazı ayarları menüsünü açar",
|
||||
", selected": ", seçildi"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Відтворити",
|
||||
"Pause": "Призупинити",
|
||||
"Current Time": "Поточний час",
|
||||
"Duration Time": "Тривалість",
|
||||
"Remaining Time": "Час, що залишився",
|
||||
"Stream Type": "Тип потоку",
|
||||
"LIVE": "НАЖИВО",
|
||||
"Loaded": "Завантаження",
|
||||
"Progress": "Прогрес",
|
||||
"Fullscreen": "Повноекранний режим",
|
||||
"Non-Fullscreen": "Неповноекранний режим",
|
||||
"Mute": "Без звуку",
|
||||
"Unmute": "Зі звуком",
|
||||
"Playback Rate": "Швидкість відтворення",
|
||||
"Subtitles": "Субтитри",
|
||||
"subtitles off": "Без субтитрів",
|
||||
"Captions": "Підписи",
|
||||
"captions off": "Без підписів",
|
||||
"Chapters": "Розділи",
|
||||
"You aborted the media playback": "Ви припинили відтворення відео",
|
||||
"A network error caused the media download to fail part-way.": "Помилка мережі викликала збій під час завантаження відео.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Неможливо завантажити відео через мережевий чи серверний збій або формат не підтримується.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Відтворення відео було припинено через пошкодження або у зв'язку з тим, що відео використовує функції, які не підтримуються вашим браузером.",
|
||||
"No compatible source was found for this media.": "Сумісні джерела для цього відео відсутні."
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"Play": "Phát",
|
||||
"Pause": "Tạm dừng",
|
||||
"Current Time": "Thời gian hiện tại",
|
||||
"Duration Time": "Độ dài",
|
||||
"Remaining Time": "Thời gian còn lại",
|
||||
"Stream Type": "Kiểu Stream",
|
||||
"LIVE": "TRỰC TIẾP",
|
||||
"Loaded": "Đã tải",
|
||||
"Progress": "Tiến trình",
|
||||
"Fullscreen": "Toàn màn hình",
|
||||
"Non-Fullscreen": "Thoát toàn màn hình",
|
||||
"Mute": "Tắt tiếng",
|
||||
"Unmute": "Bật âm thanh",
|
||||
"Playback Rate": "Tốc độ phát",
|
||||
"Subtitles": "Phụ đề",
|
||||
"subtitles off": "Tắt phụ đề",
|
||||
"Captions": "Chú thích",
|
||||
"captions off": "Tắt chú thích",
|
||||
"Chapters": "Chương",
|
||||
"You aborted the media playback": "Bạn đã hủy việc phát media.",
|
||||
"A network error caused the media download to fail part-way.": "Một lỗi mạng dẫn đến việc tải media bị lỗi.",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "Video không tải được, mạng hay server có lỗi hoặc định dạng không được hỗ trợ.",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "Phát media đã bị hủy do một sai lỗi hoặc media sử dụng những tính năng trình duyệt không hỗ trợ.",
|
||||
"No compatible source was found for this media.": "Không có nguồn tương thích cho media này."
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"Play": "播放",
|
||||
"Pause": "暂停",
|
||||
"Current Time": "当前时间",
|
||||
"Duration Time": "时长",
|
||||
"Remaining Time": "剩余时间",
|
||||
"Stream Type": "媒体流类型",
|
||||
"LIVE": "直播",
|
||||
"Loaded": "加载完毕",
|
||||
"Progress": "进度",
|
||||
"Fullscreen": "全屏",
|
||||
"Non-Fullscreen": "退出全屏",
|
||||
"Mute": "静音",
|
||||
"Unmute": "取消静音",
|
||||
"Playback Rate": "播放码率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "字幕关闭",
|
||||
"Captions": "内嵌字幕",
|
||||
"captions off": "内嵌字幕关闭",
|
||||
"Chapters": "节目段落",
|
||||
"You aborted the media playback": "视频播放被终止",
|
||||
"A network error caused the media download to fail part-way.": "网络错误导致视频下载中途失败。",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "视频因格式不支持或者服务器或网络的问题无法加载。",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。",
|
||||
"No compatible source was found for this media.": "无法找到此视频兼容的源。",
|
||||
"The media is encrypted and we do not have the keys to decrypt it.": "视频已加密,无法解密。"
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Play": "播放",
|
||||
"Pause": "暫停",
|
||||
"Current Time": "目前時間",
|
||||
"Duration Time": "總共時間",
|
||||
"Remaining Time": "剩餘時間",
|
||||
"Stream Type": "串流類型",
|
||||
"LIVE": "直播",
|
||||
"Loaded": "載入完畢",
|
||||
"Progress": "進度",
|
||||
"Fullscreen": "全螢幕",
|
||||
"Non-Fullscreen": "退出全螢幕",
|
||||
"Mute": "靜音",
|
||||
"Unmute": "取消靜音",
|
||||
"Playback Rate": " 播放速率",
|
||||
"Subtitles": "字幕",
|
||||
"subtitles off": "關閉字幕",
|
||||
"Captions": "內嵌字幕",
|
||||
"captions off": "關閉內嵌字幕",
|
||||
"Chapters": "章節",
|
||||
"You aborted the media playback": "影片播放已終止",
|
||||
"A network error caused the media download to fail part-way.": "網路錯誤導致影片下載失敗。",
|
||||
"The media could not be loaded, either because the server or network failed or because the format is not supported.": "影片因格式不支援或者伺服器或網路的問題無法載入。",
|
||||
"The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "由於影片檔案損毀或是該影片使用了您的瀏覽器不支援的功能,播放終止。",
|
||||
"No compatible source was found for this media.": "無法找到相容此影片的來源。",
|
||||
"The media is encrypted and we do not have the keys to decrypt it.": "影片已加密,無法解密。"
|
||||
}
|
||||
|
||||
+82
-33
@@ -1,53 +1,102 @@
|
||||
{
|
||||
"name": "video.js",
|
||||
"description": "An HTML5 and Flash video player with a common API and skin for both.",
|
||||
"version": "4.0.2",
|
||||
"copyright": "Copyright 2013 Brightcove, Inc. https://github.com/videojs/video.js/blob/master/LICENSE",
|
||||
"version": "5.9.0-1",
|
||||
"copyright": "Copyright Brightcove, Inc. <https://www.brightcove.com/>",
|
||||
"license": "Apache-2.0",
|
||||
"keywords": [
|
||||
"html5",
|
||||
"flash",
|
||||
"html5",
|
||||
"player",
|
||||
"video",
|
||||
"player"
|
||||
"videojs"
|
||||
],
|
||||
"homepage": "http://videojs.com",
|
||||
"author": "Steve Heffernan",
|
||||
"scripts": {
|
||||
"test": "grunt test --verbose"
|
||||
"test": "grunt test && if [ '$TRAVIS' ]; then grunt coveralls; fi;"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/zencoder/video-js.git"
|
||||
"url": "https://github.com/videojs/video.js.git"
|
||||
},
|
||||
"main": "./dist/video.js",
|
||||
"style": "./dist/video-js.css",
|
||||
"dependencies": {
|
||||
"global": "^4.3.0",
|
||||
"lodash-compat": "^3.9.3",
|
||||
"object.assign": "^4.0.1",
|
||||
"safe-json-parse": "^4.0.0",
|
||||
"tsml": "1.0.1",
|
||||
"videojs-font": "1.5.1",
|
||||
"videojs-ie8": "1.1.2",
|
||||
"videojs-swf": "5.0.1",
|
||||
"videojs-vtt.js": "^0.12.1",
|
||||
"xhr": "~2.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt-cli": "~0.1.0",
|
||||
"grunt": "~0.4.0",
|
||||
"grunt-contrib-jshint": "~0.4.3",
|
||||
"grunt-contrib-watch": "~0.1.4",
|
||||
"grunt-contrib-qunit": "~0.2.1",
|
||||
"calcdeps": "~0.1.7",
|
||||
"babel": "^5.2.2",
|
||||
"babelify": "^6.0.1",
|
||||
"blanket": "^1.1.6",
|
||||
"browserify-derequire": "^0.9.4",
|
||||
"browserify-istanbul": "^0.2.1",
|
||||
"browserify-versionify": "^1.0.4",
|
||||
"chg": "^0.3.2",
|
||||
"css": "^2.2.0",
|
||||
"es5-shim": "^4.1.3",
|
||||
"grunt": "^0.4.4",
|
||||
"grunt-aws-s3": "^0.12.1",
|
||||
"grunt-banner": "^0.4.0",
|
||||
"grunt-browserify": "3.5.1",
|
||||
"grunt-cli": "~0.1.13",
|
||||
"grunt-concurrent": "^1.0.0",
|
||||
"grunt-contrib-clean": "~0.4.0a",
|
||||
"grunt-contrib-copy": "~0.3.2",
|
||||
"mocha": "~1.8.1",
|
||||
"contribflow": "~0.2.0",
|
||||
"grunt-s3": "~0.2.0-alpha",
|
||||
"semver": "~1.1.4",
|
||||
"grunt-contrib-cssmin": "~0.6.0"
|
||||
"grunt-contrib-concat": "^0.5.1",
|
||||
"grunt-contrib-connect": "~0.7.1",
|
||||
"grunt-contrib-copy": "^0.8.0",
|
||||
"grunt-contrib-cssmin": "~0.6.0",
|
||||
"grunt-contrib-jshint": "~0.11.3",
|
||||
"grunt-contrib-less": "~0.6.4",
|
||||
"grunt-contrib-uglify": "^0.8.0",
|
||||
"grunt-contrib-watch": "~0.1.4",
|
||||
"grunt-coveralls": "^1.0.0",
|
||||
"grunt-exorcise": "^1.0.1",
|
||||
"grunt-fastly": "^0.1.3",
|
||||
"grunt-github-releaser": "^0.1.17",
|
||||
"grunt-karma": "^0.8.3",
|
||||
"grunt-sass": "^1.0.0",
|
||||
"grunt-version": "~0.3.0",
|
||||
"grunt-videojs-languages": "0.0.4",
|
||||
"grunt-zip": "0.10.2",
|
||||
"karma": "^0.12.36",
|
||||
"karma-browserify": "^4.0.0",
|
||||
"karma-browserstack-launcher": "^0.1.4",
|
||||
"karma-chrome-launcher": "^0.1.3",
|
||||
"karma-coverage": "^0.4.0",
|
||||
"karma-detect-browsers": "^2.0.2",
|
||||
"karma-firefox-launcher": "^0.1.3",
|
||||
"karma-ie-launcher": "^0.1.5",
|
||||
"karma-opera-launcher": "~0.1.0",
|
||||
"karma-qunit": "^0.1.2",
|
||||
"karma-safari-launcher": "^0.1.1",
|
||||
"karma-sinon": "^1.0.3",
|
||||
"load-grunt-tasks": "^3.1.0",
|
||||
"proxyquireify": "^3.0.0",
|
||||
"qunitjs": "^1.18.0",
|
||||
"sinon": "^1.16.1",
|
||||
"time-grunt": "^1.1.1",
|
||||
"uglify-js": "~2.3.6",
|
||||
"videojs-doc-generator": "0.0.1"
|
||||
},
|
||||
"testling": {
|
||||
"browsers": [
|
||||
"ie6",
|
||||
"ie7",
|
||||
"ie8",
|
||||
"ie9",
|
||||
"firefox/15",
|
||||
"chrome/22",
|
||||
"opera/12",
|
||||
"safari/5.1"
|
||||
],
|
||||
"harness": "mocha-qunit",
|
||||
"scripts": [
|
||||
"src/js/*.js",
|
||||
"test/unit/*.js"
|
||||
"standard": {
|
||||
"ignore": [
|
||||
"**/Gruntfile.js",
|
||||
"**/build/**",
|
||||
"**/dist/**",
|
||||
"**/docs/**",
|
||||
"**/lang/**",
|
||||
"**/sandbox/**",
|
||||
"**/test/**"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Video.js Icons Sandbox</title>
|
||||
|
||||
<link href="../build/temp/video-js.css" rel="stylesheet" type="text/css">
|
||||
|
||||
<style>
|
||||
.icon-list li span { font-size: 150% }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Video.js Icons</h1>
|
||||
<p>This is a list of all of the icons available in the Video.js base stylesheet. The appropriate class is to the right of each icon.</p>
|
||||
|
||||
<ul class="icon-list">
|
||||
<li><span class="vjs-icon-play"></span> <code>.vjs-icon-play</code></li>
|
||||
<li><span class="vjs-icon-pause"></span> <code>.vjs-icon-pause</code></li>
|
||||
<li><span class="vjs-icon-volume-mute"></span> <code>.vjs-icon-volume-mute</code></li>
|
||||
<li><span class="vjs-icon-volume-low"></span> <code>.vjs-icon-volume-low</code></li>
|
||||
<li><span class="vjs-icon-volume-mid"></span> <code>.vjs-icon-volume-mid</code></li>
|
||||
<li><span class="vjs-icon-volume-high"></span> <code>.vjs-icon-volume-high</code></li>
|
||||
<li><span class="vjs-icon-fullscreen-enter"></span> <code>.vjs-icon-fullscreen-enter</code></li>
|
||||
<li><span class="vjs-icon-fullscreen-exit"></span> <code>.vjs-icon-fullscreen-exit</code></li>
|
||||
<li><span class="vjs-icon-square"></span> <code>.vjs-icon-square</code></li>
|
||||
<li><span class="vjs-icon-spinner"></span> <code>.vjs-icon-spinner</code></li>
|
||||
<li><span class="vjs-icon-subtitles"></span> <code>.vjs-icon-subtitles</code></li>
|
||||
<li><span class="vjs-icon-captions"></span> <code>.vjs-icon-captions</code></li>
|
||||
<li><span class="vjs-icon-chapters"></span> <code>.vjs-icon-chapters</code></li>
|
||||
<li><span class="vjs-icon-share"></span> <code>.vjs-icon-share</code></li>
|
||||
<li><span class="vjs-icon-cog"></span> <code>.vjs-icon-cog</code></li>
|
||||
<li><span class="vjs-icon-circle"></span> <code>.vjs-icon-circle</code></li>
|
||||
<li><span class="vjs-icon-circle-outline"></span> <code>.vjs-icon-circle-outline</code></li>
|
||||
<li><span class="vjs-icon-circle-inner-circle"></span> <code>.vjs-icon-circle-inner-circle</code></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,26 +4,40 @@
|
||||
<meta charset="utf-8" />
|
||||
<title>Video.js Sandbox</title>
|
||||
|
||||
<link href="../src/css/video-js.css" rel="stylesheet" type="text/css">
|
||||
<!-- Add ES5 shim and sham for IE8 -->
|
||||
<script src="../build/temp/ie8/videojs-ie8.js"></script>
|
||||
|
||||
<!-- LOAD VIDEO.JS SOURCE FILES IN ORDER -->
|
||||
<script src="../build/source-loader.js"></script>
|
||||
<!-- Load the source files -->
|
||||
<link href="../build/temp/video-js.css" rel="stylesheet" type="text/css">
|
||||
<script src="../build/temp/video.js"></script>
|
||||
|
||||
<!-- Set the location of the flash SWF -->
|
||||
<script>
|
||||
videojs.options.flash.swf = '../build/temp/video-js.swf';
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p style="background-color:#eee; border: 1px solid #777; padding: 10px; font-size: .8em; line-height: 1.5em; font-family: Verdana, sans-serif;">You can use /sandbox/ for writing and testing your own code. Nothing in /sandbox/ will get checked into the repo, except files that end in .example, so please don't edit or add those files. To get started make a copy of index.html.example and rename it to index.html.</p>
|
||||
<div style="background-color:#eee; border: 1px solid #777; padding: 10px; margin-bottom: 20px; font-size: .8em; line-height: 1.5em; font-family: Verdana, sans-serif;">
|
||||
<p>You can use /sandbox/ for writing and testing your own code. Nothing in /sandbox/ will get checked into the repo, except files that end in .example (so don't edit or add those files). To get started make a copy of index.html.example and rename it to index.html.</p>
|
||||
<pre>cp sandbox/index.html.example sandbox/index.html</pre>
|
||||
<pre>grunt watch</pre>
|
||||
<pre>grunt connect</pre>
|
||||
<pre>open http://localhost:9999/sandbox/index.html</pre>
|
||||
</div>
|
||||
|
||||
<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"
|
||||
poster="http://vjs.zencdn.net/v/oceans.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>
|
||||
<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="../docs/examples/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>
|
||||
|
||||
<script>
|
||||
vid = document.getElementById("vid1");
|
||||
var vid = document.getElementById("vid1");
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Set Page Language Here -->
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>VideoJS Languages Demo</title>
|
||||
|
||||
<!-- Add ES5 shim and sham for IE8 -->
|
||||
<script src="../build/temp/ie8/videojs-ie8.js"></script>
|
||||
|
||||
<!-- Load the source files -->
|
||||
<link href="../build/temp/video-js.css" rel="stylesheet" type="text/css">
|
||||
<script src="../build/temp/video.js"></script>
|
||||
|
||||
<!-- Set the location of the flash SWF -->
|
||||
<script>
|
||||
videojs.options.flash.swf = '../build/temp/video-js.swf';
|
||||
</script>
|
||||
|
||||
<!-- Add support for Spanish 'es' -->
|
||||
<script>
|
||||
videojs.addLanguage('es', {
|
||||
"Play": "Juego",
|
||||
"Pause": "Pausa",
|
||||
"Current Time": "Tiempo Actual",
|
||||
"Duration Time": "Tiempo de Duracion",
|
||||
"Remaining Time": "Tiempo Restante",
|
||||
"Stream Type": "Tipo de Transmision",
|
||||
"LIVE": "En Vivo",
|
||||
"Loaded": "Cargado",
|
||||
"Progress": "Progreso",
|
||||
"Fullscreen": "Pantalla Completa",
|
||||
"Non-Fullscreen": "No Pantalla Completa",
|
||||
"Mute": "Mudo",
|
||||
"Unmute": "Activar sonido",
|
||||
"Playback Rate": "Reproduccion Cambio",
|
||||
"Subtitles": "Subtitulos",
|
||||
"subtitles off": "subtitulos fuera",
|
||||
"Captions": "Subtitulos",
|
||||
"captions off": "subtitulos fuera",
|
||||
"Chapters": "Capitulos",
|
||||
"You aborted the video playback": "Ha anulado la reproduccion de video",
|
||||
"A network error caused the video download to fail part-way.": "Un error en la red hizo que la descarga de video falle parte del camino.",
|
||||
"The video could not be loaded, either because the server or network failed or because the format is not supported.": "El video no se puede cargar, ya sea porque el servidor o la red fracasaron o porque el formato no es compatible.",
|
||||
"The video playback was aborted due to a corruption problem or because the video used features your browser did not support.": "La reproduccion de video se ha cancelado debido a un problema de corrupcion o porque el video utilizado cuenta con su navegador no soporta.",
|
||||
"No compatible source was found for this video.": "Ninguna fuente compatible se encontro para este video."
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<video id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" 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'>
|
||||
-->
|
||||
</video>
|
||||
|
||||
<script>
|
||||
var player = videojs("vid1");
|
||||
player.controlBar.show();
|
||||
player.error(1);
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,19 +4,26 @@
|
||||
<meta charset="utf-8" />
|
||||
<title>Video.js Plugin Example</title>
|
||||
|
||||
<link href="../src/css/video-js.css" rel="stylesheet" type="text/css">
|
||||
<!-- Add ES5 shim and sham for IE8 -->
|
||||
<script src="../build/temp/ie8/videojs-ie8.js"></script>
|
||||
|
||||
<!-- LOAD VIDEO.JS SOURCE FILES IN ORDER -->
|
||||
<script src="../build/source-loader.js"></script>
|
||||
<!-- Load the source files -->
|
||||
<link href="../build/temp/video-js.css" rel="stylesheet" type="text/css">
|
||||
<script src="../build/temp/video.js"></script>
|
||||
|
||||
<!-- Set the location of the flash SWF -->
|
||||
<script>
|
||||
videojs.options.flash.swf = '../build/temp/video-js.swf';
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p style="background-color:#eee; border: 1px solid #777; padding: 10px; font-size: .8em; line-height: 1.5em; font-family: Verdana, sans-serif;">This page shows you how to create, register and initialize a Video.js plugin.</p>
|
||||
|
||||
<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">
|
||||
<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 id="vid1" class="video-js vjs-default-skin" controls preload="auto" width="640" height="264" poster="http://vjs.zencdn.net/v/oceans.png">
|
||||
<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">
|
||||
<p>Video Playback Not Supported</p>
|
||||
</video>
|
||||
|
||||
@@ -34,10 +41,10 @@
|
||||
};
|
||||
|
||||
// register the plugin
|
||||
vjs.plugin('progressed', progressed);
|
||||
videojs.plugin('progressed', progressed);
|
||||
|
||||
// initialize it
|
||||
vid1 = vjs('vid1');
|
||||
vid1 = videojs('vid1');
|
||||
vid1.progressed();
|
||||
})();
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// Text, icons, hover states
|
||||
$primary-foreground-color: #fff !default;
|
||||
|
||||
// Control backgrounds (control bar, big play, menus)
|
||||
$primary-background-color: #2B333F !default;
|
||||
$primary-background-transparency: 0.7 !default;
|
||||
|
||||
// Hover states, slider backgrounds
|
||||
$secondary-background-color: lighten($primary-background-color, 33%) !default;
|
||||
$secondary-background-transparency: 0.5 !default;
|
||||
|
||||
$text-font-family: Arial, Helvetica, sans-serif !default;
|
||||
|
||||
// Using the '--' naming for component-specific styles
|
||||
$big-play-button--width: 3em !default;
|
||||
$big-play-button--height: 1.5em !default;
|
||||
$big-play-button--transparency: 0.8 !default;
|
||||
@@ -0,0 +1,118 @@
|
||||
@import "utilities/linear-gradient";
|
||||
|
||||
@mixin background-color-with-alpha($color, $alpha) {
|
||||
background-color: $color;
|
||||
background-color: rgba($color, $alpha);
|
||||
}
|
||||
|
||||
@mixin transform($transform) {
|
||||
-moz-transform: $transform;
|
||||
-ms-transform: $transform;
|
||||
-o-transform: $transform;
|
||||
-webkit-transform: $transform;
|
||||
transform: $transform;
|
||||
}
|
||||
|
||||
@mixin transition($string: $transition--default) {
|
||||
-webkit-transition: $string;
|
||||
-moz-transition: $string;
|
||||
-o-transition: $string;
|
||||
transition: $string;
|
||||
}
|
||||
|
||||
@mixin hide-visually {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
@mixin border-radius($radius) {
|
||||
-webkit-border-radius: $radius;
|
||||
-moz-border-radius: $radius;
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
@mixin animation($string: spin 1s infinite linear) {
|
||||
-webkit-animation: $string;
|
||||
-moz-animation: $string;
|
||||
-o-animation: $string;
|
||||
animation: $string;
|
||||
}
|
||||
|
||||
@mixin display-flex($alignment: '', $justification: '') {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
||||
@if $alignment != '' {
|
||||
-webkit-box-align: $alignment;
|
||||
-webkit-align-items: $alignment;
|
||||
-ms-flex-align: $alignment;
|
||||
align-items: $alignment;
|
||||
}
|
||||
|
||||
@if $justification != '' {
|
||||
-webkit-box-pack: $justification;
|
||||
-webkit-justify-content: $justification;
|
||||
-ms-flex-pack: $justification;
|
||||
justify-content: $justification;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin flex($value) {
|
||||
// @include context('.video-js', '.video-js.vjs-no-flex') {
|
||||
// display: table-cell;
|
||||
// vertical-align: middle;
|
||||
// @if ($value == 'auto') {
|
||||
// width: auto;
|
||||
// }
|
||||
// }
|
||||
|
||||
-webkit-box-flex: $value;
|
||||
-moz-box-flex: $value;
|
||||
-webkit-flex: $value;
|
||||
-ms-flex: $value;
|
||||
flex: $value;
|
||||
}
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
|
||||
@mixin user-select($string: none) {
|
||||
-webkit-user-select: $string;
|
||||
-moz-user-select: $string;
|
||||
-ms-user-select: $string;
|
||||
user-select: $string
|
||||
}
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
|
||||
@mixin box-shadow ($string: 0 0 1em rgba(0, 0, 0, 0.25)) {
|
||||
-webkit-box-shadow: $string;
|
||||
-moz-box-shadow: $string;
|
||||
box-shadow: $string;
|
||||
}
|
||||
|
||||
@mixin order($value) {
|
||||
-webkit-box-ordinal-group: $value;
|
||||
-moz-box-ordinal-group: $value;
|
||||
-ms-flex-order: $value;
|
||||
-webkit-order: $value;
|
||||
order: $value;
|
||||
}
|
||||
|
||||
%fill-parent {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
%icon-default {
|
||||
@extend %fill-parent;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
$icon-font-path: 'font' !default;
|
||||
$icon-codepoints: false !default;
|
||||
@@ -0,0 +1,37 @@
|
||||
// When the player is absurdly tiny, display nothing but:
|
||||
// - Play button
|
||||
// - Fullscreen Button
|
||||
.video-js.vjs-layout-tiny:not(.vjs-fullscreen) {
|
||||
.vjs-custom-control-spacer { @include flex(auto); }
|
||||
&.vjs-no-flex .vjs-custom-control-spacer { width: auto; }
|
||||
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate, .vjs-progress-control,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-volume-menu-button,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
|
||||
// When the player is x-small, display nothing but:
|
||||
// - Play button
|
||||
// - Progress bar
|
||||
// - Fullscreen Button
|
||||
.video-js.vjs-layout-x-small:not(.vjs-fullscreen) {
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control, .vjs-volume-menu-button,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
|
||||
|
||||
// When the player is small, display nothing but:
|
||||
// - Play button
|
||||
// - Progress bar
|
||||
// - Volume menu button
|
||||
// - Captions Button
|
||||
// - Fullscreen button
|
||||
.video-js.vjs-layout-small:not(.vjs-fullscreen) {
|
||||
.vjs-current-time, .vjs-time-divider, .vjs-duration, .vjs-remaining-time,
|
||||
.vjs-playback-rate,
|
||||
.vjs-mute-control, .vjs-volume-control,
|
||||
.vjs-chapters-button, .vjs-captions-button, .vjs-subtitles-button { display: none; }
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
.video-js .vjs-big-play-button {
|
||||
font-size: 3em;
|
||||
line-height: $big-play-button--height;
|
||||
height: $big-play-button--height;
|
||||
width: $big-play-button--width; // Firefox bug: For some reason without width the icon wouldn't show up. Switched to using width and removed padding.
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
opacity: 1;
|
||||
border: 0.06666em solid $primary-foreground-color;
|
||||
|
||||
// Need a slightly gray bg so it can be seen on black backgrounds
|
||||
@include background-color-with-alpha($primary-background-color, $primary-background-transparency);
|
||||
@include border-radius(0.3em);
|
||||
@include transition(all 0.4s);
|
||||
|
||||
@extend .vjs-icon-play;
|
||||
|
||||
// Since the big play button doesn't inherit from vjs-control, we need to specify a bit more than
|
||||
// other buttons for the icon.
|
||||
&:before {
|
||||
@extend %icon-default;
|
||||
}
|
||||
}
|
||||
|
||||
// Allow people that hate their poster image to center the big play button.
|
||||
.vjs-big-play-centered .vjs-big-play-button {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -($big-play-button--height / 2);
|
||||
margin-left: -($big-play-button--width / 2);
|
||||
}
|
||||
|
||||
.video-js:hover .vjs-big-play-button,
|
||||
.video-js .vjs-big-play-button:focus {
|
||||
outline: 0;
|
||||
border-color: $primary-foreground-color;
|
||||
|
||||
@include background-color-with-alpha($secondary-background-color, $secondary-background-transparency);
|
||||
@include transition(all 0s);
|
||||
}
|
||||
|
||||
// Hide if controls are disabled, the video is playing, or native controls are used.
|
||||
.vjs-controls-disabled .vjs-big-play-button,
|
||||
.vjs-has-started .vjs-big-play-button,
|
||||
.vjs-using-native-controls .vjs-big-play-button,
|
||||
.vjs-error .vjs-big-play-button {
|
||||
display: none;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
.video-js button {
|
||||
background: none;
|
||||
border: none;
|
||||
color: inherit;
|
||||
display: inline-block;
|
||||
|
||||
overflow: visible; // IE8
|
||||
font-size: inherit; // IE in general. WTF.
|
||||
line-height: inherit;
|
||||
text-transform: none;
|
||||
text-decoration: none;
|
||||
transition: none;
|
||||
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
.vjs-caption-settings {
|
||||
position: relative;
|
||||
top: 1em;
|
||||
background-color: $primary-background-color;
|
||||
background-color: rgba($primary-background-color, 0.75);
|
||||
color: $primary-foreground-color;
|
||||
margin: 0 auto;
|
||||
padding: 0.5em;
|
||||
height: 15em;
|
||||
font-size: 12px;
|
||||
width: 40em;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksettings {
|
||||
top: 0;
|
||||
bottom: 2em;
|
||||
left: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksettings-colors,
|
||||
.vjs-caption-settings .vjs-tracksettings-font {
|
||||
float: left;
|
||||
}
|
||||
.vjs-caption-settings .vjs-tracksettings-colors:after,
|
||||
.vjs-caption-settings .vjs-tracksettings-font:after,
|
||||
.vjs-caption-settings .vjs-tracksettings-controls:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksettings-controls {
|
||||
position: absolute;
|
||||
bottom: 1em;
|
||||
right: 1em;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksetting {
|
||||
margin: 5px;
|
||||
padding: 3px;
|
||||
min-height: 40px;
|
||||
}
|
||||
.vjs-caption-settings .vjs-tracksetting label {
|
||||
display: block;
|
||||
width: 100px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksetting span {
|
||||
display: inline;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksetting > div {
|
||||
margin-bottom: 5px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
.vjs-caption-settings .vjs-tracksetting > div:last-child {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.vjs-caption-settings label > input {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.vjs-caption-settings input[type="button"] {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
.video-js .vjs-captions-button {
|
||||
@extend .vjs-icon-captions;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
.video-js .vjs-chapters-button {
|
||||
@extend .vjs-icon-chapters;
|
||||
}
|
||||
|
||||
.vjs-chapters-button .vjs-menu ul {
|
||||
width: 24em;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
.video-js .vjs-control.vjs-close-button {
|
||||
@extend .vjs-icon-cancel;
|
||||
cursor: pointer;
|
||||
height: 3em;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0.5em;
|
||||
z-index: 2;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
.video-js .vjs-control-bar {
|
||||
display: none;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 3.0em;
|
||||
|
||||
@include background-color-with-alpha($primary-background-color, $primary-background-transparency);
|
||||
}
|
||||
|
||||
// Video has started playing
|
||||
.vjs-has-started .vjs-control-bar {
|
||||
@include display-flex;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
|
||||
$trans: visibility 0.1s, opacity 0.1s; // Var needed because of comma
|
||||
@include transition($trans);
|
||||
}
|
||||
|
||||
// Video has started playing AND user is inactive
|
||||
.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
|
||||
$trans: visibility 1.0s, opacity 1.0s;
|
||||
@include transition($trans);
|
||||
}
|
||||
|
||||
.vjs-controls-disabled .vjs-control-bar,
|
||||
.vjs-using-native-controls .vjs-control-bar,
|
||||
.vjs-error .vjs-control-bar {
|
||||
// !important is ok in this context.
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
// Don't hide the control bar if it's audio
|
||||
.vjs-audio.vjs-has-started.vjs-user-inactive.vjs-playing .vjs-control-bar {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
// IE8 is flakey with fonts, and you have to change the actual content to force
|
||||
// fonts to show/hide properly.
|
||||
// - "\9" IE8 hack didn't work for this
|
||||
// Found in XP IE8 from http://modern.ie. Does not show up in "IE8 mode" in IE9
|
||||
$ie8screen: "\0screen";
|
||||
.vjs-user-inactive.vjs-playing .vjs-control-bar :before {
|
||||
@media #{$ie8screen} { content: ""; }
|
||||
}
|
||||
|
||||
// IE 8 + 9 Support
|
||||
.vjs-has-started.vjs-no-flex .vjs-control-bar {
|
||||
display: table;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
.video-js .vjs-custom-control-spacer {
|
||||
display: none;
|
||||
}
|
||||
Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais
Referência em uma Nova Issue
Bloquear um usuário