* feat: add event stream support
* tests and cue fix
* test description
* remove value
* fix timestamp offset and refactor
* refactor and fix tests
* logs and spacing
* additional test manifest
* remove extra line
* fix test sourceupdater assignment
* update supported feature doc
* specify DASH
Previously, the ProgramDateTime would map to time 0 at the start of playback, and that mapping would be used for the rest of playback.
However, in the case of a discontinuity, ProgramDateTime can jump (as in, can be a larger difference in time than a single segment duration, e.g., if the encoder went down for a period of time). Because the ProgramDateTime to player time mapping never changed, this led to seeking errors.
This fix uses a mapping of ProgramDateTime to player time per timeline, allowing those "jumps" in time on discontinuities.
Deprecate lingering references to hls from the old videojs-contrib-hls
project, as well as dash. Ensure all references use `tech().vhs` instead.
Co-authored-by: Garrett Singer <gesinger@gmail.com>
Co-authored-by: Gary Katsevman <git@gkatsev.com>
* Add document for program time from player time
* Attach video timing info from probe and transmuxer to segments
* Change `appendBuffer` to use a config instead of an optional trailing
callback parameter
* Add TODO for fmp4 timing info, since fmp4 segments won't go through
the transmuxer
* Add creating-content.md doc file with ffmpeg command to create HLS VOD
stream with EXT-X-PROGRAM-DATE-TIME tags
* Fix seekToStreamTime to perform seeks when findSegmentForStreamTime
returns estimates
* Rename convertToStreamTime and seekToStreamTime as convertToProgramTime
and seekToProgramTime
* Fix intermittent Firefox loop test failures
* Bump mux.js to 5.1.0
* remove old data
* wip glossary
* moving some introductory information from arch to intro. Updating glossary
* glossary should have newlines
* fix typo
* dash update
* try fixing links
* using more links
* fix typo
* CR comments: corrections
* CR comments: corrections, grammar
* Add support for description audio tracks (marked with CHARACTERISTICS of 'public.accessibility.describes-video')
* Update m3u8-parser to 2.1.0
* Add test for correctly setting alternative audio kinds
* Support for multiple alternate audio tracks
* Separated segment loading logic into a reusable piece of functionality so that we can have more than one segment loader and they can manage the segment fetch behavior unique to each playlist they are loading from
* Introduced the MasterPlaylistController to coordinate the loading of the master playlist and separate the behavior of the player from videojs-contrib-hls.js leaving the latter to be the glue between HLS and the video element's events
* Added the SourceUpdater to manage the asynchronous bahavior of SourceBuffers and MediaSource objects so that we can treat it as a non-blocking work queue
* Added parsing for MediaGroups in master playlists
* Added support for AudioTrackList objects and events
* Add support for every HLS mime type possible (#684)
* Flash live fixes (#682)
Capture the number of elementary streams in a transport stream program and map those to mp4 tracks in the init segment. Fix up some examples and update MSE documentation.
Create example binary data that is a valid Media Segment and does not produce decode errors when coupled with an appropriate media segment. Add some free-form notes from media source extensions research so far. Update the testing sandbox player.
It would probably be helpful to have some graphical quick references for anyone looking to hack on the transmuxing code. Start off with a logical picture of mp2t segments and h264 "packets".
Used an adaptive, encrypted m3u8 on the example page and included hex dump utilities. Fixed formatting issues with the hex dump utility. Passed a 16-byte IV to the decrypter in drainBuffer(). Swapped byte order for the keys so they are not misintrepreted as little-endian. Added fields to the muxer test page to mux encrypted segments. Updated tests. Fixed docs on using openssl to test encryption and decryption.