etro-node
Version:
A wrapper to run Etro in Node
55 lines (39 loc) • 2.59 kB
Markdown
# Etro for Node
Sometimes it's useful to use [Etro] in Node. This package is a wrapper of Etro that serves that purpose.
## Usage
```js
etroNode(() => {
// You can access inputs as html elements and pass them to Etro as usual.
const image = document.getElementById('input1') // <img> element
...
movie.exportRaw()
.then(window.done)
// Tell Etro Node what inputs to load with { id: path }
}, { input1: 'path/to/image.png' }, 'output.mp4')
```
## Documentation
**etroNode(etroFunction, inputSources, resultCallbackOrPath[, page])**
- `etroFunction` ([string]) - Function to run in the puppeteer page. etro and done are exposed as globals (accessed as properties of window)
- `window.done(exportedBytes)` - Process the exported movie (resolved value of Movie#exportRaw), by either writing to resultCallbackOrPath if it's a string or executing it if it's a function
- `inputSources` ([Object]<[string], <[string]|[Object]>>) - the input assets, mapped from id to path or raw data. If the input is provided as raw data, it should be an object with the following properties:
- `type` ([string]) - the MIME type of the input source
- `data` ([Buffer])
- `resultCallbackOrPath` ([function]|[string]) - Determines what to do when window.done is alled in etroFunction. If it's a string, it is treated as a path and the movie is written to it. If it's a function, it is called with one argument exportedBytes.
- `page` ([Page]) - the puppeteer Page to use. Defaults to a page created by a new browser.
Runs `etroFunction` in a puppeteer page. Each input source is converted to an html element (`<img>`, `<audio>` or `<video>`). The output is either written to the path or the callback is executed, depending on the type of `resultCallbackOrPath`.
## Changelog
### [0.1.0] - 2020-09-30
**Added**:
- `etroNode` - the etro wrapper
- `Movie#recordRaw` - a convenience method for recording in the etro wrapper
[0.1.0]: https://github.com/etro-js/etro-node/releases/tag/v0.1.0
## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
## License
[GPLv3](https://choosealicense.com/licenses/gpl-3.0/)
[Etro]: https://github.com/etro-js/etro
[Object]: https://developer.mozilla.org/en-US/docs/Glossary/Object
[string]: https://developer.mozilla.org/en-US/docs/Glossary/String
[function]: https://developer.mozilla.org/en-US/docs/Glossary/Function
[Buffer]: https://nodejs.org/api/buffer.html#buffer_buffer
[Page]: https://github.com/puppeteer/puppeteer/blob/v1.19.0/docs/api.md#class-page