@firstcoders/hls-web-audio
Version:
49 lines (36 loc) • 1.77 kB
Markdown
A package allowing for steaming multiple audio tracks with precision.
It uses the [HLS protocol](https://en.wikipedia.org/wiki/HTTP_Live_Streaming), however it will play any audio format that is supported by the relevant browser
and the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API).
> This repo is a subtree split of our monorepo which will be made public in due course. We cannot process any pull-requests to this repo. Please contact us for help.
```JS
import { Controller, HLS } from '@soundws/hls-web-audio';
// Create a controller to control playback
const controller = new Controller();
// register the HLS tracks with the controller
const drums = new HLS({ controller });
const piano = new HLS({ controller });
const vocal = new HLS({ controller });
// Load all the tracks
Promise.all([
drums.load('http://my-server.com/drums.m3u8').promise,
piano.load('http://my-server.com/piano.m3u8').promise,
vocal.load('http://my-server.com/vocal.m3u8').promise
]).then(() => {
controller.play()
}).catch((err) => {
console.error(err)
})
// seek
controller.currentTime = 30 // seconds
controller.pct = 50 // percent
// events
controller.on('start', () => { /*..*/ }) // when playback starts
controller.on('pause', () => { /*..*/ }) // when playback pauses
controller.on('pause-start', () => { /*..*/ }) // when pausing (due to buffering) starts
controller.on('pause-end', () => { /*..*/ }) // when pausing (due to buffering) ends
controller.on('timeupdate', ({ t, pct }) => { /*..*/ }) // progress events, emitted ongoing
controller.on('seek', ({ t, pct }) => { /*..*/ }) // seek event, when currentTime is changed via setting either controller.currentTime or controller.pct
```