Dash-Industry-Forum / dash.js

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
Other
5.09k stars 1.67k forks source link

Support Trick Mode #2958

Open ESPNMichaelKidd opened 5 years ago

ESPNMichaelKidd commented 5 years ago

Add the ability to make use of trick mode adaptation/representations to better support fast forward, seek, and rewind. Example media can be found in #293

Relevant text from DASH-IF IOP v4.3

3.2.9. Trick Mode Support

Trick Modes are used by DASH clients in order to support fast forward, seek, rewind and other operations in which typically the media, especially video, is displayed in a speed other than the normal playout speed. In order to support such operations, it is recommended that the content author adds Representations at lower frame rates in order to support faster playout with the same decoding and rendering capabilities.

However, Representations targeted for trick modes are typically not be suitable for regular playout. If the content author wants to explicitly signal that a Representation is only suitable for trick mode cases, but not for regular playout, the following is recommended:

  • add one or multiple Adaptation Sets that that only contains trick modes Representations
  • annotate each Adaptation Set with an EssentialProperty descriptor or SupplementalProperty descriptor with URL "http://dashif.org/guidelines/trickmode" and the @value the value of @id attribute of the Adaptation Set to which these trick mode Representations belong. The trick mode Representations must be time-aligned with the Representations in the main Adaptation Set. The value may also be a white-space separated list of @id values. In this case the trick mode Adaptation Set is associated to all Adaptation Sets with the values of the @id.
  • signal the playout capabilities with the attribute @maxPlayoutRate for each Representation in order to indicate the accelerated playout that is enabled by the signaled codec profile and level.
  • If the Representation is encoded without any coding dependency on the elementary stream level, i.e. each sample is a SAP type 1, then it is recommended to set the @codingDependency attribute to FALSE.
  • If multiple trick mode Adaptation Sets are present for one main Adaptation Set, then sufficient signaling should be provided to differentiate the different trick mode Adaptation Sets. Different Adaptation Sets for example may be provided as thumbnails (low spatial resolution), for fast forward or rewind (no coding dependency with @codingDependency set to false and/or lower frame rates), longer values for @duration to improve download frequencies or different @maxPlayoutRate values. Note also that the @bandwidth value should be carefully documented to support faster than real-time download of Segments.

If an Adaptation Set in annotated with the EssentialProperty descriptor with URI "http://dashif.org/guidelines/trickmode" then the DASH client shall not select any of the contained Representations for regular playout.

harishnb commented 4 years ago

Has this new feature been implemented in DashJS?