Skip to content

Releases: shaka-project/shaka-player

v1.3.0

17 Apr 00:41
Compare
Choose a tag to compare

1.3.0 (2015-04-16)

Feature release, introducing live streaming and offline playback.

Bugfixes:

  • Fixed playback and buffering of streams whose index is inaccurate.
  • Fixed EME spec compliance.
  • Fixed FakeEventTarget exception handling.
  • Fixed aggressive dead code stripping by the compiler.
  • Fixed a bug in which subtitles were enabled by default without a subtitle
    language match.

Features:

  • Added offline playback support.
  • Added offline support for encrypted content (on platforms which support
    persistent licenses).
  • Added live stream support.
  • Added support for header-based clock synchronization.
  • Added support for inheriting Segment{Base,List,Template} across levels in
    MPDs.
  • Add polyfill support for fullscreen events.
  • Updated EME usage to the March 12 draft.
  • Added Player.getAdaptationEnabled().
  • Added support for bandwidth restrictions and restrictions not based on
    license responses.
  • Added support for requireJS and improved support for commonJS.
  • Sped up integration tests and improved test robustness.
  • Bandwidth estimates can now be persisted across playbacks.
  • Custom bandwidth estimator objects can now be injected into the Player.
  • Improved EME v0.1b polyfill consistency with native EME in Chrome.
  • Improved buffering and underflow mechanisms.
  • Improved error reporting if DRM info is missing.
  • Improved robustness in the face of HTTP 404 and 410 errors during segment
    fetch.
  • Improved documentation for Role tags and multilingual assets.

Test app features:

  • Example player controls in the test app.

Deprecated:

  • The following methods on Player are deprecated. They will be removed in
    v1.4.0:
    • getCurrentResolution() (replace with video.videoWidth & video.videoHeight)
    • getCurrentTime()/seek() (replace with video.currentTime)
    • getDuration() (replace with video.duration)
    • getMuted()/setMuted() (replace with video.muted)
    • getVolume()/setVolume() (replace with video.volume)
    • play() (replace with video.play)
    • pause() (replace with video.pause)
    • requestFullscreen() (replace with video.requestFullscreen())

Broken compatibility:

  • The license postprocessor callback is no longer given a Restrictions
    argument. See Player.getRestrictions()/setRestrictions().
  • The suppressMultipleEvents flag has been dropped from DrmSchemeInfo, which
    changes the constructor signature. This flag interfered with key rotation.

v1.2.4

17 Apr 00:41
Compare
Choose a tag to compare

1.2.4 (2015-04-16)

Bugfixes backported from v1.3.0 to the v1.2.x branch.

Bugfixes:

  • Fixed FakeEventTarget exception handling.
  • Fixed aggressive dead code stripping by the compiler.
  • Fixed a bug in which subtitles were enabled by default without a subtitle
    language match.

Features:

  • Added support for requireJS and improved support for commonJS.
  • Improved documentation for Role tags and multilingual assets.

v1.2.3

07 Apr 23:24
Compare
Choose a tag to compare

1.2.3 (2015-04-07)

A roll-up of recent bugfixes.

Bugfixes:

  • Fixed consistency of setPlaybackRate(0).
  • Fixed support for mp4a.40.5 audio content.
  • Improved rewind accuracy.
  • Fixed decode of query parameters in content URLs.
  • Fixed FakeEventTarget for Chrome 43+.
  • Removed flaky assertion in EME polyfill.
  • Made AbrManager less aggressive.
  • Fixed EME spec compatibility and encrypted playback in Chrome 43+.

Features:

  • Added support for module.exports.

Test app features:

  • Added a new 4k test asset.

v1.2.2

12 Mar 01:03
Compare
Choose a tag to compare

1.2.2 (2015-03-11)

Bugfixes:

  • Version 1.2.1 had multiple issues with its version numbering. These
    are now corrected, but npm requires unique version numbers to publish.
    Version 1.2.1 has been pulled from npm.

Features:

  • Added getAdaptationEnabled() to Player.

v1.2.1

11 Mar 01:27
Compare
Choose a tag to compare

1.2.1 (2015-03-10)

A roll-up of recent bugfixes, plus a few minor additions to the test app.
Branched from v1.2.0.

Bugfixes:

  • Try to recover from a streaming failure. (#28)
  • Ignore spurious error events from the video tag.
  • Update docs WRT content restrictions and folder organization.
  • Fix clearkey errors in Chrome 42+.
  • Fix computation of the number of segments in MpdProcessor.
    • Only affects assets which use SegmentTemplate with a duration attribute.

Test app features:

  • Rename a confusing asset.
  • Add a button to cycle video tracks.
  • Support MPD init data overrides for all DRM schemes.

v1.2.0

25 Feb 00:02
Compare
Choose a tag to compare

1.2.0 (2015-02-24)

Lots of internal refactoring and bugfixes, and a few new features.

Bugfixes:

  • Buffer eviction no longer causes hangs on seek. (#15)
  • Adaptation no longer causes hangs on looping and seeking backward. (#26)
  • StreamStats no longer shows null for width and height before adaptation. (#16)
  • Content with differing start times for the audio & video streams no longer
    exhibits A/V sync issues. (#17)
  • DrmSchemeInfo's suppressMultipleEncryptedEvents flag is now correctly
    honored regardless of the timing of events.
  • Calculations for the $Time$ placeholder in MPD SegmentTemplates has been
    corrected.
  • The test app no longer causes mixed-content errors when served over HTTPS.
  • Small mistakes in URLs and asset names in the test app have been corrected.
  • Windows checkouts now have consistent newline style. (#12)
  • Windows build steps documented. (#13)

Features:

  • The isTypeSupported polyfill has been removed and all EME APIs have been
    updated to the Feb 9 2015 EME spec. (#2)
  • Gaps and overlaps in SegmentTimeline are no longer treated as an error.
    Large gaps/overlaps will still generate a warning. (#24)
  • HDCP-related failures are now translated into error events in Chrome 42+. (#14)
  • The MPD Role tag is now supported as a way of indicating the main
    AdaptationSet for the purposes of language matching. (#20)
  • More detail added to AJAX error events. (#18)
  • The Player now dispatches buffering events. (#25)
  • Parser support for the new v1 PSSH layout, including parsing of key IDs. (#19)
  • The fullscreen polyfill has been updated and expanded.
  • DashVideoSource refactored to split DASH-independent functionality into the
    generic StreamVideoSource. This should simplify the implementation of new
    video sources for non-DASH manifest formats. (Contributions welcome.)
  • Automatic build numbering has been added, with version numbers appearing in
    the test app UI.
  • The library has been published on npm and cdnjs.
  • Release version numbering follows the semantic versioning spec.

Broken Compatibility:

  • System IDs in PSSH objects are now hex strings instead of raw strings.

v1.1

26 Jan 23:44
Compare
Choose a tag to compare

1.1 (2015-01-14)

Maintenance release.

Bugfixes:

  • The enabled flag for text tracks is now preserved when switching tracks.
    Player.enableTextTrack() is no longer required after selectTextTrack(). (#1)
  • The documentation for Player methods enableTextTrack, setPreferredLanguage,
    and getCurrentResolution has been corrected. (#3, #4, #6)
  • The AbrManager class is now correctly destroyed. (#5)
  • Clearkey support for Chrome 41+ has been fixed. (#8)
  • A new polyfill has been added to compensate for Chrome 41+'s removal of
    MediaKeys.isTypeSupported. (#7)
  • Several unused internal methods have been removed from the codebase.
  • Fixed a failing assertion in one of the MediaKeys polyfills.
  • Fixed failing code coverage analysis and related parse errors in several
    tests.
  • Fixed support for MPDs with SegmentTemplate@duration and
    MPD@mediaPresentationDuration, but no Period@duration attribute. (#9)

Features:

  • Tests are now checked for style.
  • Tests have been expanded to increase coverage and exercise more Player
    features:
    • playback rate
    • stats
    • language preference
    • license restrictions
    • WebM/VP9
    • error events
  • Integration tests now run much faster.
  • MediaKeys polyfills have received minor updates to improve compatibility
    with Chrome 41.
  • New sample assets and code in app.js to demonstrate how to use a PSSH from
    an MPD to override what's in the content itself.

Broken Compatibility:

  • None!

v1.0

26 Jan 23:46
Compare
Choose a tag to compare

1.0 (2014-12-19)

First public release.

Bugfixes:

  • Text tracks are no longer ignored in MPD manifests.
  • Adaptation decisions are now quicker and more reliable.
    • (This bug was more noticeable on faster internet connections.)
  • Playback no longer gets "stuck" on certain content.
  • Playback no longer gets "stuck" after certain seek patterns.
  • Player get/select/enable methods can now be called without a video source.
  • A
  • Manual adaptation while paused no longer unpauses the video.
  • Credentials can now be used on cross-domain license requests.
  • Range headers are no longer sent for all segment requests.
    • (This fixes issues with IIS.)
  • A missing declaration of getVideoPlaybackQuality() has been added.
  • The compiled code no longer pollutes the global namespace.
  • DASH manifests using are now parsed correctly.
  • Formatting has been fixed in the "Shaka Player Development" tutorial.

Features:

  • The Player is now reusable. You can call load() multiple times without
    calling destroy().
  • The JS linter is now included in sources, fixing compatibility issues
    between versions.
  • The test suite now includes playback integration tests.
  • The Player has been updated to support the 01 Dec 2014 draft of the EME
    specification.
  • The loader in load.js no longer makes assumptions about app.js. You can
    now use load.js to bootstrap other applications.
  • The test app now uses less screen real estate.
  • All custom events have been documented, and a new tutorial has been added
    to demonstrate how they can be used.
  • The Player now has a support-check API to determine if the browser has all
    necessary features for playback.
  • Sample code in the tutorials is now marked up to highlight changes from the
    previous sample.
  • Code coverage in unit tests has been increased.
  • Flakiness in unit tests has been reduced.
  • DASH manifests using without a segment index or segment
    timeline are now supported.
  • The DASH "presentationTimeOffset" attribute is now supported.

Broken Compatibility:

  • ContentProtectionCallback no longer takes a "mimeType" argument.
  • DrmSchemeInfo constructor no longer takes a "mimeType" argument.
  • DrmSchemeInfo constructor's "initData" argument is now an object with
    fields instead of a Uint8Array.
  • DrmSchemeInfo now takes a "withCredentials" argument.
  • lib.js has been renamed to shaka-player.compiled.js.

0.1b (2014-11-21)

Private beta release.