HLS.js is written in ECMAScript6 ( *.js) and TypeScript ( *.ts) (strongly typed superset of ES6), and transpiled in ECMAScript5 using Babel and the TypeScript compiler. HLS.js works directly on top of a standard HTML element. HLS.js also supports HLS + fmp4, as announced during WWDC2016. Transmuxing is performed asynchronously using a Web Worker when available in the browser. It works by transmuxing MPEG-2 Transport Stream and AAC/MP3 streams into ISO BMFF (MP4) fragments. It relies on HTML5 video and MediaSource Extensions for playback. HLS.js is a JavaScript library that implements an HTTP Live Streaming client.