@skylineos/clsp-player
Version:
Skyline Technology Solutions' CLSP Video Player. Stream video in near-real-time in modern browsers.
352 lines (276 loc) • 13.5 kB
Markdown
# CLSP Player Changelog <!-- omit in toc -->
## Table of Contents <!-- omit in toc -->
- [CLSP Player](#clsp-player)
- [v0.23.2 - 2023-10-07 Recommended](#v0232---2023-10-07-recommended)
- [v0.23.0 - 2022-01-17 - Optional](#v0230---2022-01-17---optional)
- [v0.22.1 - 2021-11-09 - Recommended](#v0221---2021-11-09---recommended)
- [v0.22.0 - 2020-09-30 - Critical](#v0220---2020-09-30---critical)
- [v0.21.0 - 2020-07-07 - Recommended](#v0210---2020-07-07---recommended)
- [v0.20.1 - 2020-04-30 - Critical](#v0201---2020-04-30---critical)
- [v0.19.0 - 2020-04-21 - Critical](#v0190---2020-04-21---critical)
- [v0.18.0-1 - 2020-04-04 - Critical](#v0180-1---2020-04-04---critical)
- [Pre CLSP Player](#pre-clsp-player)
- [v0.17.0-1 - 2020-02-11 - Critical](#v0170-1---2020-02-11---critical)
- [v0.16.3 - 2019-08-15 - Recommended](#v0163---2019-08-15---recommended)
- [v0.16.0 - 2019-05-15 - Recommended](#v0160---2019-05-15---recommended)
- [v0.15.0 - 2018-12-07 - Critical](#v0150---2018-12-07---critical)
- [v0.13.11 - 2018-12-07 - Critical](#v01311---2018-12-07---critical)
- [v0.13.10 - 2018-10-13 - Critical](#v01310---2018-10-13---critical)
- [v0.13.9 - 2018-10-13 - Critical](#v0139---2018-10-13---critical)
- [v0.13.8 - 2018-11-14 - Critical](#v0138---2018-11-14---critical)
- [v0.13.7 - 2018-11-13 - Optional](#v0137---2018-11-13---optional)
- [v0.13.6 - 2018-11-13 - Critical](#v0136---2018-11-13---critical)
- [v0.13.5 - 2018-10-31 - Critical](#v0135---2018-10-31---critical)
- [v0.13.4 - 2018-08-27 - Critical](#v0134---2018-08-27---critical)
- [v0.12.1 - 2018-08-27 - Optional](#v0121---2018-08-27---optional)
- [v0.12.0 - 2018-08-13 - Critical](#v0120---2018-08-13---critical)
- [v0.10.2 - 2018-08-27 - Optional](#v0102---2018-08-27---optional)
- [v0.10.0 - 2018-08-01 - Critical](#v0100---2018-08-01---critical)
- [v0.1.5 - 2017-08-27 - Critical](#v015---2017-08-27---critical)
- [Appendices](#appendices)
- [Status Definitions](#status-definitions)
## CLSP Player
### v0.23.2 - 2023-10-07 Recommended
* add jwt authorization
### v0.23.0 - 2022-01-17 - Optional
* add loading spinner
### v0.22.1 - 2021-11-09 - Recommended
* fix to work with Angular optimized builds
### v0.22.0 - 2020-09-30 - Critical
* fix all destroy logic, including when iframe is destroyed
* increase and improve event-based logic
* implement option to pass in a `<video>` tag that is not destroyed
* make logging to the console globally configurable for all players
* fix error preventing port 80 from being accepted on stream urls
* add tests
* reduce visible logging
* temporarily remove tour support
* improve memory usage
* improve memory management
* improve performance
* improve restart logic
* improve logging
* improve error handling
* improve code documentation
* added timeouts to some async actions
* create single-player demo, retire simple demos
* implement iframe destroy testing in single-player demo
* split Conduit up into multiple Router Manager classes to reduce coupling
* update all dependencies
### v0.21.0 - 2020-07-07 - Recommended
* CLSP Player is now packaged and published as a UMD module
* Updated the default exports (@see `src/js/index.js`)
* README no longer uses `src` and `dist` terms - now references `import/require` and `<script>`
* `@babel/polyfill` is no longer required! - instead, `@babel/runtime` is used and already included
* All exports when using CLSP Player via `<script>` are namespaced in `window.CLSP`
* All examples and demos now use `dist` assets rather than `src` assets to be more in line with 3rd party use
* Babel configuration is now in its own file
* All demos have their own README files
* Metrics have been temporarily removed from all demos
* Created typescript module definition file
* All utils exports are now documented
* Webpack configurations were refactored to support the demos relying on the CLSP Player dist assets
* Webpack configurations were refactored to be explicitly named after the CLSP Player and demos
* The `build` and `serve` scripts were refactored to use the new webpack config files
* The `build` and `serve` webpack utilities were consolidated and moved to their own folder
* Removed unused `pre-build` script
### v0.20.1 - 2020-04-30 - Critical
* change default CLSP port from `9001` to `80` to comply with newest SFS versions
* make default clsp and clsps ports configurable via utils
### v0.19.0 - 2020-04-21 - Critical
* move `demo` to `demos`
* create advanced and simple demos that use `dist` assets
* create advanced and simple demos that use `src` assets
* move demo `dist` assets to `dist/demos` folder
* include `README` examples for both `dist` and `src` approaches
* refactor build and serve scripts
* only generate prod dist assets for CLSP VideoJS Plugin
* only generate dev dist assets for demos
### v0.18.0-1 - 2020-04-04 - Critical
* Update minimum supported Chrome version to 53
* publish to NPM registry!
* dist files are no longer part of source control
* dist files get generated during publish
* remove all videojs assets, logic, dependencies, etc.
* update all dependencies
* update all demos to not explicitly say "standalone"
* advanced demo now uses src assets, not dist assets
* remove all vagrant assets
* simplify webpack config
* replace extract-text-webpack-plugin with mini-css-extract-plugin
## Pre CLSP Player
### v0.17.0-1 - 2020-02-11 - Critical
Note that version 0.17 was never released.
* change the videojs element class from `vjs-mse-over-mqtt` to `vjs-clsp`
* update vulnerable dependencies
* update all outdated dependencies
* numerous memory leak fixes
* the video tags SHOULD now have a dedicated container for use by the CLSP plugin
* add functionality to switch stream source on internal player
* add externally available tour controller
* add stream play timeout handling in Conduit
* add CLSP publishing events
* handle streams that don't return data (with timeouts)
* handle invalid urls (with timeouts)
* rename IOV classes
* implement ConduitCollection
* implement StreamConfiguration
* implement TourController
* most constants (like timeout durations) are now configurable on instances
* improve async logic and error handling
* add timeouts to catch and respond to errors, which improves memory utilization
* IovPlayer no longer calls methods on its parent Iov
* IovPlayer now instantiates and controls its own Conduit
* split styles into multiple files
* add demo for tours
* each demo now has its own folder
* create constants for Conduit and Router events
* document Conduit and Router classes and files
### v0.16.3 - 2019-08-15 - Recommended
* Add debug logs
* emit "firstFrameShown" event
* fix streams flickering in certain situations
* remove jupyter notebook, which makes this project show as primarily javascript in github
* update destroy logic
### v0.16.0 - 2019-05-15 - Recommended
* Remove debug statements appearing as console errors
* Update all outdated npm dependencies
* Rearchitected interfaces between most classes, and among the videojs plugin components
* Added IOV Collection class to manage IOV instances
* De-coupled the CLSP-playing logic from videojs
* IOV is now the only class that communicates with the Conduit and the IOV Player
* Removed the requirement of videojs for playing CLSP streams
* Added explicit play, stop, fullscreen, and destroy methods to the CLSP player (IOV)
* Added explicit stop and destroy methods to the CLSP plugin
* Improved destroy logic
* Identify additional browsers
* Implement successful failover to HLS, if available
* Added support for `ononline` and `onoffline` window events
* Added new logging system
* Improved logging
* Improve jsdocs
* Created demo wall for CLSP player
* Created demo player for CLSP player
* Created demo player for CLSP plugin
* Created demo landing page
* Include code examples for common use cases in README
* Moved internal-developer-specific stuff from the README into DEVELOPERS.md
### v0.15.0 - 2018-12-07 - Critical
* update to node 10.15
* move to yarn from npm
* add Vagrantfile and steps
* update standard skyline development assets
* remove gulp, rely solely on bash scripts and webpack
* make iframe javascript reference parent window paho library to reduce code duplication
* minimize the iframe srcdoc javascript
* fix window minimize memory leak
### v0.13.11 - 2018-12-07 - Critical
* lock down paho version to ensure it doesn't update to 1.1.0, which is incompatible
### v0.13.10 - 2018-10-13 - Critical
* fix chrome detection for chrome v71
### v0.13.9 - 2018-10-13 - Critical
* update most outdated libraries
* update video.js version
* add memory stats to demo page
* update to videojs 7 to improve memory management
* make destroy synchronous
* performance / lifecycle improvements
* address errors
* improve debug statements
* perform null check on window.performance and memory
* when the buffer gets full, flush it
### v0.13.8 - 2018-11-14 - Critical
* fix unresolved sourceBuffer destroy
* ensure the asynchronous destroy logic can finish before videojs dispose runs/finishes
* document necessary videojs-errors version
* move videojs-errors into devdependencies
### v0.13.7 - 2018-11-13 - Optional
* set the default timeout back to 2 minutes
### v0.13.6 - 2018-11-13 - Critical
* fix async calls
* destroy self on player dispose
* implement disconnect conduit method
* WIP destroy player without error
* do not try to reconnect to CLSP after successful disconnection
* stop trying to send stats to the server on failure
* reset videojs-errors after responding to recoverable errors
### v0.13.5 - 2018-10-31 - Critical
* fix tab switching memory leak
* disable metrics by default to improve performance
* export version in main file
* implement player retry on error
* implement workaround for videojs 7 autoplay issue for a future version
* detect and throw error when too much browser resources are being used
* retry on iov player error
* check isSourceBufferReady before performing destroy operations on MSEWrapper
* additional null checks
* tracking "stopped" on iov player
* consolidate iov conduit actions on stop and play
* demo page allows user to close an individual player
* demo page only contains wall
* demo displays index number and stream url
* demo page remembers last used urls
* add standard skyline development assets
* fix webpack config mutations, which fixes dev server
* trigger a 'firstFrameShown' event on the videojs player instance so that the listener can be registered prior to iovplayer instantiation
### v0.13.4 - 2018-08-27 - Critical
* tours are no longer supported - must be implemented by the caller
* fix high quality stream playback (streams with large segment intervals)
* video elements are now properly muted, so user interaction is no longer required for autoplay on page load
* make drift detection values dynamically calculated based on metrics
* make freeze detection values dynamically calculated based on metrics
* improve metrics
* improve memory management
* improve error handling
* tour improvements
* ensure all moofs have proper and sequential sequence numbers
* properly display version number on registered plugin
* add version script to automatically build whenever version is incremented
* demo page tracks number of videos playing, time started, and time elapsed
* improve dev server
* file / class restructure
* decrease coupling between classes
* decrease coupling between videojs and iovPlayer
* update dependencies
### v0.12.1 - 2018-08-27 - Optional
* improve demo page
### v0.12.0 - 2018-08-13 - Critical
* metric collection and calculation
* implement a queue to reduce unecessarily-dropped video segments
* implement "burst control" to ensure that video segments are not skipped
* rudimentary tab visibility handling
* rudimentary "drift detection" to respond to increases in lag
* rudimentary "freeze detection" to respond to seemingly frozen streams
* reduce video stuttering
* improve error handling
* require videojs 6.7.1 (the last version to properly support autoplay)
* document relationship between SFS settings and player performance and guarantees
* demo page improvements
* display metrics on demo page
* abstract the logic for MSE
* decrease coupling between classes
* decrease coupling between videojs and iovPlayer
* update dependencies
### v0.10.2 - 2018-08-27 - Optional
* improve demo page
### v0.10.0 - 2018-08-01 - Critical
* first stable production-ready build
* support cycling through multiple clsp streams (tours)
* can respond to CLSP resync messages
* use default secure and non-secure ports
* rudimentary error handling
* updated demo page
* headless player demo
* use webpack, babel, es6, etc
* use npm to manage dependencies
* decrease coupling between classes
* decrease coupling between videojs and iovPlayer
### v0.1.5 - 2017-08-27 - Critical
* first stable proof of concept
* rudimentary demo page
* point of reference for basic video playing via clsp, no advanced features
## Appendices
### Status Definitions
* Critical - this version fixes critical issues that were discovered in the previous version, and it is critical that users update
* Recommended - this version fixes important issues or adds important functionality, and it is recommended that users update
* Optional - this version fixes minor issues or adds minor or optional functionality, and users can safely wait to update