{"_id":"videojs-contrib-quality-menu","_rev":"15-c180b760975124fe5cc93b3abfd7b0fb","name":"videojs-contrib-quality-menu","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"videojs-contrib-quality-menu","version":"1.0.0","keywords":["videojs","videojs-plugin"],"author":{"name":"Brightcove, Inc"},"license":"Apache-2.0","_id":"videojs-contrib-quality-menu@1.0.0","maintainers":[{"name":"misteroneill","email":"pgoneill@gmail.com"}],"dist":{"shasum":"f5e8f855358e20854de23d7607634b5aabf4e9ac","tarball":"https://registry.npmjs.org/videojs-contrib-quality-menu/-/videojs-contrib-quality-menu-1.0.0.tgz","fileCount":18,"integrity":"sha512-kGEmtrTBrs+MOvSvzICRHHNau/OiOwq835vz9J+BatDcnvuJAexI6uGjnh6Ig2t0PhU8K2FusEIVkbenekdmhA==","signatures":[{"sig":"MEMCIHIvsxfLKYU18pgI/1aSr+cJVjs3bHgxeZf+Yq3elQeUAh8fDIHM/Ct6RedFsHj4MMWZA7/wwlyDuRSOGkcTvuRH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147367},"main":"dist/videojs-contrib-quality-menu.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"style":"dist/videojs-contrib-quality-menu.css","module":"dist/videojs-contrib-quality-menu.es.js","gitHead":"0a74ab864790907eafdabf3788e9156b96469c92","scripts":{"docs":"npm-run-all docs:*","lint":"vjsstandard","test":"karma start scripts/karma.conf.js","build":"npm-run-all -p build:*","clean":"shx rm -rf ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","pretest":"npm-run-all lint build","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","docs:toc":"doctoc README.md","posttest":"shx cat test/dist/coverage/text.txt","prebuild":"npm run clean","watch:js":"npm run build:js -- -w","build:css":"sass src/plugin.scss dist/videojs-contrib-quality-menu.css -s compressed","postclean":"shx mkdir -p ./dist ./test/dist","watch:css":"npm run build:css -- -w","build:lang":"vjslang --dir dist/lang","prepublish":"not-in-install && npm run build && pkg-ok || in-install","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"misteroneill","email":"pgoneill@gmail.com"},"_npmVersion":"9.5.1","description":"Adds a button to the Video.js control bar for Video.js 8+","directories":{},"jsnext:main":"src/js/index.js","lint-staged":{"*.js":["vjsstandard --fix","git add"],"README.md":["npm run docs:toc","git add"]},"vjsstandard":{"ignore":["dist","docs","test/dist"]},"_nodeVersion":"18.16.0","dependencies":{"global":"^4.4.0","video.js":"^8"},"_hasShrinkwrap":false,"videojs-plugin":{"style":"dist/videojs-contrib-quality-menu.css","script":"dist/videojs-contrib-quality-menu.min.js"},"devDependencies":{"shx":"^0.3.4","sass":"^1.70.0","husky":"^7.0.4","karma":"^6.4.2","sinon":"^11.1.2","doctoc":"^2.2.1","pkg-ok":"^3.0.0","rollup":"^2.79.1","@babel/cli":"^7.23.9","in-publish":"^2.0.1","lint-staged":"^11.2.6","npm-run-all":"^4.1.5","not-prerelease":"^1.0.1","videojs-standard":"^9.0.1","videojs-languages":"^2.0.0","npm-merge-driver-install":"^2.0.2","conventional-changelog-cli":"^4.1.0","videojs-generate-karma-config":"^8.0.1","conventional-changelog-videojs":"^3.0.2","videojs-generate-rollup-config":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/videojs-contrib-quality-menu_1.0.0_1708198089141_0.9387528825265603","host":"s3://npm-registry-packages"},"generator-videojs-plugin":{"version":"7.2.4"}},"1.0.1":{"name":"videojs-contrib-quality-menu","version":"1.0.1","keywords":["videojs","videojs-plugin"],"author":{"name":"Brightcove, Inc"},"license":"Apache-2.0","_id":"videojs-contrib-quality-menu@1.0.1","maintainers":[{"name":"misteroneill","email":"pgoneill@gmail.com"}],"dist":{"shasum":"991f641afabf1b346088f290efcf689688e42368","tarball":"https://registry.npmjs.org/videojs-contrib-quality-menu/-/videojs-contrib-quality-menu-1.0.1.tgz","fileCount":37,"integrity":"sha512-7Ane7uCQbw74N0KZRiP3RJipD1s8aNI3tTZ4z42AYBKVKiVa+lFBY1z5GbmvnxYLkKaI9VWKvppjrp1aVGxNbQ==","signatures":[{"sig":"MEUCIQDrpeZO2o+BLzpYfcGdEiDRXTV6vAjtwit2K7baQknaMwIgMqMsstvsFulfXkQnrOanHR0ydFYpKCWk4KNhO+xj+Q0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250788},"main":"dist/videojs-contrib-quality-menu.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"style":"dist/videojs-contrib-quality-menu.css","module":"dist/videojs-contrib-quality-menu.es.js","gitHead":"8339bcfae9fc8ea272b12a8346e281197aeb0764","scripts":{"docs":"npm-run-all docs:*","lint":"vjsstandard","test":"karma start scripts/karma.conf.js","build":"npm-run-all -p build:*","clean":"shx rm -rf ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","pretest":"npm-run-all lint build","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","docs:toc":"doctoc README.md","posttest":"shx cat test/dist/coverage/text.txt","prebuild":"npm run clean","watch:js":"npm run build:js -- -w","build:css":"sass src/plugin.scss dist/videojs-contrib-quality-menu.css -s compressed","postclean":"shx mkdir -p ./dist ./test/dist","watch:css":"npm run build:css -- -w","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm run build","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"misteroneill","email":"pgoneill@gmail.com"},"_npmVersion":"8.19.4","description":"Adds a button to the Video.js control bar for Video.js 8+","directories":{},"jsnext:main":"src/js/index.js","lint-staged":{"*.js":["vjsstandard --fix","git add"],"README.md":["npm run docs:toc","git add"]},"vjsstandard":{"ignore":["dist","docs","test/dist"]},"_nodeVersion":"16.20.0","dependencies":{"global":"^4.4.0"},"_hasShrinkwrap":false,"videojs-plugin":{"style":"dist/videojs-contrib-quality-menu.css","script":"dist/videojs-contrib-quality-menu.min.js"},"devDependencies":{"shx":"^0.3.4","sass":"^1.70.0","husky":"^7.0.4","karma":"^6.4.2","sinon":"^11.1.2","doctoc":"^2.2.1","rollup":"^2.79.1","video.js":"^8.10.0","@babel/cli":"^7.23.9","lint-staged":"^11.2.6","npm-run-all":"^4.1.5","not-prerelease":"^1.0.1","videojs-standard":"^9.0.1","videojs-languages":"^2.0.0","npm-merge-driver-install":"^2.0.2","conventional-changelog-cli":"^4.1.0","videojs-generate-karma-config":"^8.0.1","conventional-changelog-videojs":"^3.0.2","videojs-generate-rollup-config":"^7.0.2"},"peerDependencies":{"video.js":"^8"},"_npmOperationalInternal":{"tmp":"tmp/videojs-contrib-quality-menu_1.0.1_1710358668910_0.3869624741033708","host":"s3://npm-registry-packages"},"generator-videojs-plugin":{"version":"7.2.4"}},"1.0.3":{"name":"videojs-contrib-quality-menu","version":"1.0.3","keywords":["videojs","videojs-plugin"],"author":{"name":"Brightcove, Inc"},"license":"Apache-2.0","_id":"videojs-contrib-quality-menu@1.0.3","maintainers":[{"name":"phale","email":"phale@brightcove.com"},{"name":"ddashkevich","email":"ddashkevich@brightcove.com"},{"name":"roman-bc","email":"rpougatchev@brightcove.com"},{"name":"walterseymourbc","email":"wseymour@brightcove.com"},{"name":"videojs-user","email":"videojs@gkatsev.com"},{"name":"usmanonazim","email":"usmanonazim@gmail.com"},{"name":"mmcclure","email":"npm@htbx.net"},{"name":"misteroneill","email":"pgoneill@gmail.com"},{"name":"misterben","email":"npm@misterben.me"},{"name":"lday","email":"ldayananda@brightcove.com"},{"name":"imbcmdth","email":"jon.carlos.rivera@gmail.com"},{"name":"hswaminathan","email":"hswaminathan@brightcove.com"},{"name":"heff","email":"npm@heff.me"},{"name":"gkatsev","email":"me@gkatsev.com"},{"name":"gesinger","email":"gesinger@gmail.com"},{"name":"essk","email":"sarah@teaandbiscuits.net"},{"name":"dmlap","email":"dlapalomento@gmail.com"},{"name":"brandonocasey","email":"brandonocasey@gmail.com"},{"name":"awaldron","email":"awaldron@brightcove.com"},{"name":"abarstow","email":"alexander.barstow@gmail.com"}],"dist":{"shasum":"a15daff78170a332e5d1cd67601c82af2cd4c6da","tarball":"https://registry.npmjs.org/videojs-contrib-quality-menu/-/videojs-contrib-quality-menu-1.0.3.tgz","fileCount":37,"integrity":"sha512-JjoadkfdPBOiVv4Jm+ckVpls3m37bPGHhpNGOW+cF1NyK44y7RcHSO5qKHXbQlU/HLlcGCTIZDTvZTJ0Dzlicg==","signatures":[{"sig":"MEUCIQDGAMpVVmk9ufylfQbQaDMB7KpHIplGNEtvmHZshfzfywIgQbb4ZDdUvcdvaT+zt8BtL2uRvD9hUfx2Mw41Ty2sZw0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265072},"main":"dist/videojs-contrib-quality-menu.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"style":"dist/videojs-contrib-quality-menu.css","module":"dist/videojs-contrib-quality-menu.es.js","gitHead":"356341602d796a93cd1e305c1c8136b776a602b4","scripts":{"docs":"npm-run-all docs:*","lint":"vjsstandard","test":"karma start scripts/karma.conf.js","build":"npm-run-all -p build:*","clean":"shx rm -rf ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","pretest":"npm-run-all lint build","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","docs:toc":"doctoc README.md","posttest":"shx cat test/dist/coverage/text.txt","prebuild":"npm run clean","watch:js":"npm run build:js -- -w","build:css":"sass src/plugin.scss dist/videojs-contrib-quality-menu.css -s compressed","postclean":"shx mkdir -p ./dist ./test/dist","watch:css":"npm run build:css -- -w","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm run build","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"abarstow","email":"alexander.barstow@gmail.com"},"_npmVersion":"8.19.4","description":"Adds a button to the Video.js control bar for Video.js 8+","directories":{},"jsnext:main":"src/js/index.js","lint-staged":{"*.js":["vjsstandard --fix","git add"],"README.md":["npm run docs:toc","git add"]},"vjsstandard":{"ignore":["dist","docs","test/dist"]},"_nodeVersion":"16.20.2","dependencies":{"global":"^4.4.0"},"_hasShrinkwrap":false,"videojs-plugin":{"style":"dist/videojs-contrib-quality-menu.css","script":"dist/videojs-contrib-quality-menu.min.js"},"devDependencies":{"shx":"^0.3.4","sass":"^1.70.0","husky":"^7.0.4","karma":"^6.4.2","sinon":"^11.1.2","doctoc":"^2.2.1","rollup":"^2.79.1","video.js":"^8.10.0","@babel/cli":"^7.23.9","lint-staged":"^11.2.6","npm-run-all":"^4.1.5","not-prerelease":"^1.0.1","videojs-standard":"^9.0.1","videojs-languages":"^2.0.0","npm-merge-driver-install":"^2.0.2","conventional-changelog-cli":"^4.1.0","videojs-generate-karma-config":"^8.0.1","conventional-changelog-videojs":"^3.0.2","videojs-generate-rollup-config":"^7.0.2"},"peerDependencies":{"video.js":"^8.5.3"},"_npmOperationalInternal":{"tmp":"tmp/videojs-contrib-quality-menu_1.0.3_1718124833429_0.5497710917293028","host":"s3://npm-registry-packages"},"generator-videojs-plugin":{"version":"7.2.4"}},"1.0.4":{"name":"videojs-contrib-quality-menu","version":"1.0.4","keywords":["videojs","videojs-plugin"],"author":{"name":"Brightcove, Inc"},"license":"Apache-2.0","_id":"videojs-contrib-quality-menu@1.0.4","maintainers":[{"name":"abarstow","email":"alexander.barstow@gmail.com"},{"name":"awaldron","email":"awaldron@brightcove.com"},{"name":"brandonocasey","email":"brandonocasey@gmail.com"},{"name":"essk","email":"sarah@teaandbiscuits.net"},{"name":"gesinger","email":"gesinger@gmail.com"},{"name":"gkatsev","email":"me@gkatsev.com"},{"name":"heff","email":"npm@heff.me"},{"name":"hswaminathan","email":"hswaminathan@brightcove.com"},{"name":"imbcmdth","email":"jon.carlos.rivera@gmail.com"},{"name":"lday","email":"ldayananda@brightcove.com"},{"name":"misteroneill","email":"pgoneill@gmail.com"},{"name":"mmcclure","email":"npm@htbx.net"},{"name":"usmanonazim","email":"usmanonazim@gmail.com"},{"name":"videojs-user","email":"videojs@gkatsev.com"},{"name":"walterseymourbc","email":"wseymour@brightcove.com"},{"name":"roman-bc","email":"rpougatchev@brightcove.com"},{"name":"ddashkevich","email":"ddashkevich@brightcove.com"},{"name":"phale","email":"phale@brightcove.com"}],"dist":{"shasum":"8379fcd1767ae042ba77e0c80d9463e458a39abd","tarball":"https://registry.npmjs.org/videojs-contrib-quality-menu/-/videojs-contrib-quality-menu-1.0.4.tgz","fileCount":37,"integrity":"sha512-dRYbTYiq/NPrvcE4B3mrokd0GvWpLpDnPenNNWeQ//4K/l6ZJl3KFJff33q2lB+NUEJyEGZhoTiQLaSNDROdlg==","signatures":[{"sig":"MEUCIQCBIf4sme6QFBjQodPyb5w0UrEMmKscCTCGYxV4DnVB/AIgf3l3r5Kxug4sQ06bQpbprXb/t1eAA8mAmHhfLYnaKdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266093},"main":"dist/videojs-contrib-quality-menu.cjs.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"style":"dist/videojs-contrib-quality-menu.css","module":"dist/videojs-contrib-quality-menu.es.js","gitHead":"4d608eedf2e2def6c1e76d13a5129af91b67dec1","scripts":{"docs":"npm-run-all docs:*","lint":"vjsstandard","test":"karma start scripts/karma.conf.js","build":"npm-run-all -p build:*","clean":"shx rm -rf ./dist ./test/dist","start":"npm-run-all -p server watch","watch":"npm-run-all -p watch:*","server":"karma start scripts/karma.conf.js --singleRun=false --auto-watch","pretest":"npm-run-all lint build","version":"is-prerelease || npm run update-changelog && git add CHANGELOG.md","build:js":"rollup -c scripts/rollup.config.js","docs:toc":"doctoc README.md","posttest":"shx cat test/dist/coverage/text.txt","prebuild":"npm run clean","watch:js":"npm run build:js -- -w","build:css":"sass src/plugin.scss dist/videojs-contrib-quality-menu.css -s compressed","postclean":"shx mkdir -p ./dist ./test/dist","watch:css":"npm run build:css -- -w","build:lang":"vjslang --dir dist/lang","prepublishOnly":"npm run build","update-changelog":"conventional-changelog -p videojs -i CHANGELOG.md -s"},"_npmUser":{"name":"essk","email":"sarah@teaandbiscuits.net"},"_npmVersion":"8.19.4","description":"Adds a button to the Video.js control bar for Video.js 8+","directories":{},"jsnext:main":"src/js/index.js","lint-staged":{"*.js":["vjsstandard --fix","git add"],"README.md":["npm run docs:toc","git add"]},"vjsstandard":{"ignore":["dist","docs","test/dist"]},"_nodeVersion":"16.20.2","dependencies":{"global":"^4.4.0"},"_hasShrinkwrap":false,"videojs-plugin":{"style":"dist/videojs-contrib-quality-menu.css","script":"dist/videojs-contrib-quality-menu.min.js"},"devDependencies":{"shx":"^0.3.4","sass":"^1.70.0","husky":"^7.0.4","karma":"^6.4.2","sinon":"^11.1.2","doctoc":"^2.2.1","rollup":"^2.79.1","video.js":"^8.10.0","@babel/cli":"^7.23.9","lint-staged":"^11.2.6","npm-run-all":"^4.1.5","not-prerelease":"^1.0.1","videojs-standard":"^9.0.1","videojs-languages":"^2.0.0","npm-merge-driver-install":"^2.0.2","conventional-changelog-cli":"^4.1.0","videojs-generate-karma-config":"^8.0.1","conventional-changelog-videojs":"^3.0.2","videojs-generate-rollup-config":"^7.0.2"},"peerDependencies":{"video.js":"^8.5.3"},"_npmOperationalInternal":{"tmp":"tmp/videojs-contrib-quality-menu_1.0.4_1744708931696_0.021693925853365936","host":"s3://npm-registry-packages-npm-production"},"generator-videojs-plugin":{"version":"7.2.4"}}},"time":{"created":"2024-02-17T19:28:09.140Z","modified":"2026-09-09T18:49:40.913Z","1.0.0":"2024-02-17T19:28:09.324Z","1.0.1":"2024-03-13T19:37:49.104Z","1.0.3":"2024-06-11T16:53:53.674Z","1.0.4":"2025-04-15T09:22:11.887Z"},"author":{"name":"Brightcove, Inc"},"license":"Apache-2.0","keywords":["videojs","videojs-plugin"],"description":"Adds a button to the Video.js control bar for Video.js 8+","maintainers":[{"email":"cpillsbury@mux.com","name":"cpillsburymux"},{"email":"alexander.barstow@gmail.com","name":"abarstow"},{"email":"awaldron@brightcove.com","name":"awaldron"},{"email":"brandonocasey@gmail.com","name":"brandonocasey"},{"email":"sarah@teaandbiscuits.net","name":"essk"},{"email":"gesinger@gmail.com","name":"gesinger"},{"email":"me@gkatsev.com","name":"gkatsev"},{"email":"npm@heff.me","name":"heff"},{"email":"hswaminathan@brightcove.com","name":"hswaminathan"},{"email":"jon.carlos.rivera@gmail.com","name":"imbcmdth"},{"email":"ldayananda@brightcove.com","name":"lday"},{"email":"npm@htbx.net","name":"mmcclure"},{"email":"usmanonazim@gmail.com","name":"usmanonazim"},{"email":"videojs@gkatsev.com","name":"videojs-user"},{"email":"ddashkevich@brightcove.com","name":"ddashkevich"},{"email":"phale@brightcove.com","name":"phale"},{"email":"de.cepulis@gmail.com","name":"decepulis"},{"email":"me@wesleyluyten.com","name":"luwes"},{"email":"pgoneill@gmail.com","name":"misteroneill"}],"readme":"# videojs-contrib-quality-menu\n\nQuality Selection Menu UI\n\nvideojs-contrib-quality-menu provides a menu button the the player's control bar which allows you to manually select the playback quality in HLS or Dash sources. If resolution information is available on all renditions, the UI will display quality options by the lines of horizontal resolution (e.g. 360p, 480p, 720p, 1080p). If resolution information is not available, it will fallback to show options `SD` and `HD` for Standard Definition and High Definition respectively. The plugin will use bitrate information for each rendition to determine whether it is SD or HD, using a configurable dividing line.\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n\n\n- [Installation](#installation)\n- [Options](#options)\n  - [`defaultResolution`](#defaultresolution)\n  - [`sdBitrateLimit`](#sdbitratelimit)\n  - [`useResolutionLabels`](#useresolutionlabels)\n  - [`resolutionLabelBitrates`](#resolutionlabelbitrates)\n- [Usage](#usage)\n  - [`<script>` Tag](#script-tag)\n  - [Browserify](#browserify)\n  - [RequireJS/AMD](#requirejsamd)\n- [License](#license)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n## Installation\n\n```sh\nnpm install --save videojs-contrib-quality-menu\n```\n\n## Options\n\n### `defaultResolution`\n> Type: `String`, Default: `none`\n\nDefines the default resolution or resolution mapping to use. Pass it either the horizontal resolution or `SD`/`HD`\n\n### `sdBitrateLimit`\n\n> Type: `Number`, Default: `2000000`\n\nDefines the upper bitrate limit (exclusive) for considering a rendition `SD`.\n\n### `useResolutionLabels`\n\n> Type: `boolean` Default: `true`\n\nWhen `true`, the plugin will attempt to categorize renditions by lines of horizontal resolution when available. Set to `false` to always use `SD`/`HD` categorization.\n\n### `resolutionLabelBitrates`\n\n> Type: `boolean` Default: `false`\n\nWhen `true`, the plugin will attach bitrate information to the resolution labels (e.g. `720p @ 13806 kbps`). This option has no effect when `useResolutionLabels` is `false` or when resolution information is unavailable.\n\n## Usage\n\nTo include videojs-contrib-quality-menu on your website or web application, use any of the following methods.\n\n### `<script>` Tag\n\nThis is the simplest case. Get the script in whatever way you prefer and include the plugin _after_ you include [video.js][videojs], so that the `videojs` global is available.\n\n```html\n<script src=\"//path/to/video.min.js\"></script>\n<script src=\"//path/to/videojs-contrib-quality-menu.min.js\"></script>\n<script>\n  var player = videojs('my-video');\n\n  player.qualityMenu();\n</script>\n```\n\n### Browserify\n\nWhen using with Browserify, install videojs-contrib-quality-menu via npm and `require` the plugin as you would any other module.\n\n```js\nvar videojs = require('video.js');\n\n// The actual plugin function is exported by this module, but it is also\n// attached to the `Player.prototype`; so, there is no need to assign it\n// to a variable.\nrequire('videojs-contrib-quality-menu');\n\nvar player = videojs('my-video');\n\nplayer.qualityMenu();\n```\n\n### RequireJS/AMD\n\nWhen using with RequireJS (or another AMD library), get the script in whatever way you prefer and `require` the plugin as you normally would:\n\n```js\nrequire(['video.js', 'videojs-contrib-quality-menu'], function(videojs) {\n  var player = videojs('my-video');\n\n  player.qualityMenu();\n});\n```\n\n## License\n\n[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). Copyright (c) Brightcove, Inc\n\n\n[videojs]: http://videojs.com/\n","readmeFilename":"README.md"}