# videojs-media-sources A [Media Source Extensions](https://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html) shim for video.js. Media Source Extensions (MSE) is a W3C draft specification that makes it possible to feed data directly to a video element. MSE allows video developers to build functionality like adaptive streaming directly in javascript. Lead Maintainer: Jon-Carlos Rivera [@imbcmdth](https://github.com/imbcmdth) Maintenance Status: Stable **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [Getting Started](#getting-started) - [Options](#options) - [mode](#mode) - [Release History](#release-history) - [License](#license) ## Getting Started On browsers that natively support Media Source Extensions, the HTML implementation will be used. If you're running in an environment without MSE, a Flash-backed polyfill will be used. Currently, the Flash polyfill only supports video content encoded in the FLV file format. For information on how FLVs are structured, Adobe hosts the [latest version of the spec](http://www.adobe.com/devnet/f4v.html) on their site. The Flash polyfill attempts to balance throughput to the FLV with end-user responsiveness by asynchronously feeding bytes to the SWF at a fixed rate. By default, that rate is capped at 4MB/s. If you'd like to play higher bitrate content, you can adjust that setting: ```javascript // 8MB/s at 60fps videojs.MediaSource.BYTES_PER_SECOND_GOAL = 8 * 1024 * 1024; ``` Setting the `BYTES_PER_SECOND_GOAL` too high may lead to dropped frames during playback on slower computers. Check out an example of the plugin in use in [example.html](example.html). ## Options You can configure some aspects of the MediaSource polyfill by specifying a hash of options when you construct it: ```js var mediaSource = new videojs.MediaSource({ mode: 'html5' }); ``` ### mode Type: `string` Values: `'auto'`, `'html5'`, `'flash'` Default Value: `'auto'` How to determine the MediaSources implementation to use. With the default value of `auto`, the presence of native MediaSources is detected at construction time and they're used if available. Choosing `html5` or `flash` will force the use of that respective MediaSource implementation, even if it does not appear the browser supports it. ## Release History * 1.0.0: throw an error if appends are called during an update * 0.3.0: Delegate SourceBuffer.abort() calls to the SWF * 0.2.0: Improve interactivity by batching communication with Flash. * 0.1.0: Initial release ## License See [LICENSE-APACHE2](LICENSE-APACHE2).