video-dev/hls.js

Name: hls.js

Owner: video-dev

Description: JavaScript HLS client using Media Source Extension

Created: 2015-01-30 09:06:27.0

Updated: 2018-01-19 07:11:23.0

Pushed: 2018-01-18 23:43:40.0

Homepage: http://video-dev.github.io/hls.js/demo

Size: 37025

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Build Status npm Greenkeeper badge

Join the discussion on Slack#hlsjs Slack Status

hls.js

hls.js is a JavaScript library which implements an HTTP Live Streaming client. It relies on HTML5 video and MediaSource Extensions for playback.

It works by transmuxing MPEG-2 Transport Stream and AAC/MP3 streams into ISO BMFF (MP4) fragments. This transmuxing could be performed asynchronously using Web Worker if available in the browser. hls.js also supports HLS + fmp4, as announced during WWDC2016

hls.js does not need any player, it works directly on top of a standard HTML`<video>`element.

hls.js is written in ECMAScript6, and transpiled in ECMAScript5 using Babel.

API docs and usage guide
Demo

http://video-dev.github.io/hls.js/demo

Getting Started
ipt src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
eo id="video"></video>
ipt>
(Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
  video.play();
;

hls.js is not supported on platforms that do not have Media Source Extensions (MSE) enabled.
When the browser has built-in HLS support (check using `canPlayType`), we can provide an HLS manifest (i.e. .m3u8 URL) directly to the video element throught the `src` property.
This is using the built-in support of the plain video element, without using hls.js.
se if (video.canPlayType('application/vnd.apple.mpegurl')) {
video.src = 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8';
video.addEventListener('canplay',function() {
  video.play();
});

ript>
Video Control

Video is controlled through HTML `<video>` element.

HTMLVideoElement control and events could be used seamlessly.

they use hls.js in production !

||||| |—|—|—|—| ||||| ||||| ||||| ||||| ||||| |||||

Player Integration

hls.js is (being) integrated in the following players:

Chrome/Firefox integration

made by gramk, plays hls from address bar and m3u8 links

Dependencies

No external JS libs are needed. Prepackaged build is included in the dist folder:

If you want to bundle the application yourself, use node

install hls.js

NOTE: hls.light.*.js dist files do not include subtitling and alternate-audio features.

Installation

Either directly include dist/hls.js or dist/hls.min.js

Or type

install --save hls.js

Optionally there is a declaration file available to help with code completion and hinting within your IDE for the hls.js api

install --save-dev @types/hls.js
Compatibility

hls.js is compatible with browsers supporting MediaSource extensions (MSE) API with 'video/MP4' mimetypes inputs.

Find a support matrix of the MediaSource API here: https://developer.mozilla.org/en-US/docs/Web/API/MediaSource

As of today, it is supported on:

Please note: iOS Safari “Mobile” does not support the MediaSource API. Safari browsers have however built-in HLS support through the plain video “tag” source URL. See the example above (Getting Started) to run appropriate feature detection and choose between using Hls.js or natively built-in HLS support.

When a platform has neither MediaSource nor native HLS support, you will not be able to play HLS.

CORS

All HLS resources must be delivered with CORS headers permitting GET requests.

Features
Not Supported (Yet)
Supported M3U8 tags
License

hls.js is released under Apache 2.0 License

Contributing

Pull requests are welcome. Here is a quick guide on how to start.

Design

Click here for details.

Tested With

Browser Stack Logo


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.