Skip to content

Commit

Permalink
Merge branch 'master' into feature/mpeg-audio-support
Browse files Browse the repository at this point in the history
Conflicts:
	src/demux/tsdemuxer.js
	src/remux/mp4-remuxer.js
  • Loading branch information
nochev committed Nov 11, 2016
2 parents ccf2635 + 1e760cd commit 6f142f6
Show file tree
Hide file tree
Showing 30 changed files with 1,105 additions and 671 deletions.
68 changes: 40 additions & 28 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,49 @@
language: node_js
node_js:
- 5.4.1
script: npm install && npm run build && npm run testfunc
# don't connect to sauce labs unless running functional tests
before_install: if [ "${TRAVIS_MODE}" != "funcTests" ]; then unset SAUCE_USERNAME && unset SAUCE_ACCESS_KEY; fi
before_script: chmod +x ./scripts/*.sh
script: ./scripts/travis.sh
env:
global:
- SAUCE_USERNAME=mangui
matrix:
- TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
- TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
- TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
- TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=arte
- TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=arte
- TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
- TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
- TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
- TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=bigBuckBunnyABR
- TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=bigBuckBunnyABR
- TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
- TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
- TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
- TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=bigBuckBunny480p
- TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=bigBuckBunny480p
- TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
- TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
- TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
- TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=issue666
- TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=issue666
- TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
- TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
- TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
- TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=nasa
- TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=nasa
addons:
- TRAVIS_MODE=buildLib
- TRAVIS_MODE=buildDist
- TRAVIS_MODE=unitTests
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=arte
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=arte
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=arte TEST_BROWSER_VERSION="9.0"
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunnyABR
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=bigBuckBunnyABR
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=bigBuckBunnyABR TEST_BROWSER_VERSION="9.0"
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=bigBuckBunny480p
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=bigBuckBunny480p
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=bigBuckBunny480p TEST_BROWSER_VERSION="9.0"
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=issue666
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=issue666
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=issue666 TEST_BROWSER_VERSION="9.0"
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=nasa
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=nasa
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=nasa TEST_BROWSER_VERSION="9.0"
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=chrome TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=closedcaptions
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=MicrosoftEdge TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=closedcaptions
- TRAVIS_MODE=funcTests TEST_BROWSER_NAME=firefox TEST_BROWSER_PLATFORM="Windows 10" TEST_STREAM_ID=closedcaptions
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME="internet explorer" TEST_BROWSER_PLATFORM="Windows 8.1" TEST_STREAM_ID=closedcaptions
# - TRAVIS_MODE=funcTests TEST_BROWSER_NAME=safari TEST_BROWSER_PLATFORM="OS X 10.11" TEST_STREAM_ID=closedcaptions TEST_BROWSER_VERSION="9.0"

addons:
sauce_connect: true
jwt:
secure: TxJT041jqRf4raCwtNJRb0rz2gGvEaADZjWO41UQND2+YIZ//S9qB2C4YyrL1BBsn8/ebdHr0cd18PwCzoBSEmoCdoAWXmqBaaLvM1DOeQkKJbU3+pFmWtv1qGqRXJLEAysNvzhG0sLdvBc0M7a/CWxqRfx1O3lGhLnTlAW33LlQndjJ8vh3SGQm8HxFR1503ujPd7V1jGwduVwaQp4zbAKTnQ4MLugmJf6UKiTc+YILMrVWOwipOIyYHh2GqbChd/v1PXff26XCNJXcaRZKJ8JosWyBpq5t4zlPO0qDfHpqbEuYK44xm4vzbZS94P/KF8BYzdtxQYLrxoS1UlnUYU7RmzqgL3y3AM7nzX/cXvJcoNXfUK2BpsB754XNyQfRmXOdRiHoC8+wwPqGkH/KCrmS4UIOqv4THfmDbrtewfcDTgKOzHxGcT1IsUq9BTxMNtxSwpHTHUXTXrzpS/UBDvrlc+9qPTqf+e6QL1aG+JT5sOg5REm2hMy0j18/Kr+HLXkehxEgJ6JrybyHUkkJrfcuWgVDu7Lv3cxlrtSMXi7TIwSB75NMoM8AE71GEVjXwpOw/0giwnmGsJNNi01ztod0UFe2V2rS+yPI1WNZIJ7Fw66U0oOKJ1rb4Iksl86n5Y2snHsxK8q5jhKaAaiWgGK5kVTAgF89t/GXYyNH6cI=
secure: TxJT041jqRf4raCwtNJRb0rz2gGvEaADZjWO41UQND2+YIZ//S9qB2C4YyrL1BBsn8/ebdHr0cd18PwCzoBSEmoCdoAWXmqBaaLvM1DOeQkKJbU3+pFmWtv1qGqRXJLEAysNvzhG0sLdvBc0M7a/CWxqRfx1O3lGhLnTlAW33LlQndjJ8vh3SGQm8HxFR1503ujPd7V1jGwduVwaQp4zbAKTnQ4MLugmJf6UKiTc+YILMrVWOwipOIyYHh2GqbChd/v1PXff26XCNJXcaRZKJ8JosWyBpq5t4zlPO0qDfHpqbEuYK44xm4vzbZS94P/KF8BYzdtxQYLrxoS1UlnUYU7RmzqgL3y3AM7nzX/cXvJcoNXfUK2BpsB754XNyQfRmXOdRiHoC8+wwPqGkH/KCrmS4UIOqv4THfmDbrtewfcDTgKOzHxGcT1IsUq9BTxMNtxSwpHTHUXTXrzpS/UBDvrlc+9qPTqf+e6QL1aG+JT5sOg5REm2hMy0j18/Kr+HLXkehxEgJ6JrybyHUkkJrfcuWgVDu7Lv3cxlrtSMXi7TIwSB75NMoM8AE71GEVjXwpOw/0giwnmGsJNNi01ztod0UFe2V2rS+yPI1WNZIJ7Fw66U0oOKJ1rb4Iksl86n5Y2snHsxK8q5jhKaAaiWgGK5kVTAgF89t/GXYyNH6cI=
21 changes: 19 additions & 2 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ Configuration parameters could be provided to hls.js upon instantiation of `Hls`
capLevelToPlayerSize: false,
debug: false,
defaultAudioCodec: undefined,
initialLiveManifestSize: 1,
maxBufferLength: 30,
maxMaxBufferLength: 600,
maxBufferSize: 60*1000*1000,
Expand Down Expand Up @@ -221,7 +222,8 @@ Configuration parameters could be provided to hls.js upon instantiation of `Hls`
abrEwmaSlowVoD: 15.0,
abrEwmaDefaultEstimate: 500000,
abrBandWidthFactor: 0.8,
abrBandWidthUpFactor: 0.7
abrBandWidthUpFactor: 0.7,
minAutoBitrate: 0
};

var hls = new Hls(config);
Expand Down Expand Up @@ -270,6 +272,11 @@ A logger object could also be provided for custom logging: `config.debug = custo
- `mp4a.40.5` (HE-AAC) or
- `undefined` (guess based on sampling rate)
#### ```initialLiveManifestSize```
(default 1)
number of segments needed to start a playback of Live stream.
#### `maxBufferLength`
(default: `30` seconds)
Expand Down Expand Up @@ -304,7 +311,11 @@ hls.js will jump over this buffer hole to reach the beginning of this following
ABR algorithm will always try to choose a quality level that should avoid rebuffering.
In case no quality level with this criteria can be found (lets say for example that buffer length is 1s, but fetching a fragment at lowest quality is predicted to take around 2s ... ie we can forecast around 1s of rebuffering ...) then ABR algorithm will try to find a level that should guarantee less than ```maxStarvationDelay``` of buffering.
this max delay is also used in automatic start level selection : in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level + the time to fetch the fragment at the appropriate quality level is less than ```maxStarvationDelay``` )
#### ```maxLoadingDelay```
(default 4s)
max video loading delay used in automatic start level selection : in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level + the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )
#### ```seekHoleNudgeDuration```
(default 0.01s)
Expand Down Expand Up @@ -686,6 +697,12 @@ If `abrBandWidthFactor * bandwidth average < level.bitrate` then ABR can switch
Scale factor to be applied against measured bandwidth average, to determine whether we can switch up to a higher quality level.
If `abrBandWidthUpFactor * bandwidth average < level.bitrate` then ABR can switch up to that quality level.
#### `minAutoBitrate`
(default: `0`)
Return the capping/min bandwidth value that could be used by automatic level selection algorithm.
Useful when browser or tab of the browser is not in the focus and bandwidth drops
## Video Binding/Unbinding API
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Join the discussion: [![Slack Status](https://hlsjs.herokuapp.com/badge.svg)](https://hlsjs.herokuapp.com/)

# hls.js
# ![hls.js](https://cloud.githubusercontent.com/assets/616833/19739063/e10be95a-9bb9-11e6-8100-2896f8500138.png)
hls.js is a JavaScript library which implements an [HTTP Live Streaming] client.
It relies on [HTML5 video][] and [MediaSource Extensions][] for playback.

Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hls.js",
"version": "0.6.6",
"version": "0.6.9",
"license": "Apache-2.0",
"description": "Media Source Extension - HLS library, by/for Dailymotion",
"homepage": "https://github.com/dailymotion/hls.js",
Expand Down
9 changes: 7 additions & 2 deletions demo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,12 @@
<body>
<div class="header-container">
<header class="wrapper clearfix">
<h1 class="title"><a target=_blank href="https://github.com/dailymotion/hls.js">hls.js</a> demo page</h1>
<h1>
<a target="_blank" href="https://github.com/dailymotion/hls.js">
<img src="https://cloud.githubusercontent.com/assets/616833/19739063/e10be95a-9bb9-11e6-8100-2896f8500138.png"/>
</a>
</h1>
<h2 class="title">demo page</h2>
</header>
</div>

Expand Down Expand Up @@ -229,7 +234,7 @@ <h4> Stats Display </h4>
$('#levelCapping').val(levelCapping);
$('#defaultAudioCodec').val(defaultAudioCodec || "undefined");

$('h1').append(' <a target=_blank href=https://github.com/dailymotion/hls.js/releases/tag/v' + Hls.version + '>v' + Hls.version + '</a>');
$('h2').append(' <a target=_blank href=https://github.com/dailymotion/hls.js/releases/tag/v' + Hls.version + '>v' + Hls.version + '</a>');

});

Expand Down
Loading

0 comments on commit 6f142f6

Please sign in to comment.