# WebM Writer ESM
This project is a fork of [webm-writer-js][]. The library can convert browser canvas frames into WebM movies. This project adds support for native ESModule exports, WebCodec's EncodedVideoChunks, and the VP9 video codec (with WebCodecs).

## Compatibility
Canvas frames are converted to WebM frames by using [canvas.`toDataUrl('image/webp')`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) which currently [only Firefox and Chromium-based browsers support](https://caniuse.com/mdn-api_htmlcanvaselement_todataurl_type_parameter_webp).

## Installing and Usage

### In Browser

WebM Writer ESM can be included through a script tag in browser through a CDN:
```
<script src="https://unpkg.com/@framekit/webm-writer-esm/"></script>
```

Or if locally downloaded:
```
<script src="path/to/dist/webm-writer.js"></script>
```

The library is exported to the `WebMWriter` object.

### In Node

From the command-line:
```
npm install @framekit/webm-writer-esm
```

Then in your files:
```js
import { WebMWriter } from '@framekit/webm-writer-esm';
```

### Usage

As an Encoder:
```js
var writer = new WebMWriter({
  quality: 0.95, // (Encoder Only) Image Quality from 0.0 to 0.99999, 1 is not supported
  frameRate: 60  // Frames Per Second
});
async function run() {
  for (let i = 0; i < 300; i++) {
    writer.addFrame(canvas);
  }
  var blob = await writer.complete();
  // do something with `blob`;
}
run();
```

### Changes from [webm-writer-js][]
  * Reformatting
  * Conversion to ES Modules (and bundling via rollup)
  * Adds the function `addChunk` that can take EncodedVideoChunks provided by [the WebCodecs API](https://developer.mozilla.org/en-US/docs/Web/API/WebCodecs_API)
  * Adds support for the VP9 Codec (with WebCodecs)

### License
This project is licensed under the BSD 3-Clause License. The [project this is forked from][webm-writer-js] was licensed under [WTFPLv2](https://en.wikipedia.org/wiki/WTFPL).

[webm-writer-js]: https://github.com/thenickdude/webm-writer-js