Html5

HTML5 Media Controller - Wrapper for HTML5 Media API

Constructor

new Html5(optionsopt, ready)

Create an instance of this Tech.

Parameters:
Name Type Attributes Description
options Object <optional>

The key/value store of player options.

ready Component~ReadyCallback

Callback function to call when the HTML5 Tech is ready.

Mixes In:
  • Tech~SouceHandlerAdditions

Extends

Members

featuresFullscreenResize :boolean

Boolean indicating whether the HTML5 tech currently supports automatic media resize when going into fullscreen.

Overrides:
Default Value:
  • true

featuresNativeAudioTracks :boolean

Boolean indicating whether the HTML5 tech currently supports native AudioTracks.

Default Value:

featuresNativeTextTracks :boolean

Boolean indicating whether the HTML5 tech currently supports native TextTracks.

Overrides:
Default Value:

featuresNativeVideoTracks :boolean

Boolean indicating whether the HTML5 tech currently supports native VideoTracks.

Default Value:

featuresPlaybackRate :boolean

Boolean indicating whether the Tech supports changing the speed at which the media plays. Examples:

  • Set player to play 2x (twice) as fast
  • Set player to play 0.5x (half) as fast
Overrides:
Default Value:

featuresProgressEvents :boolean

Boolean indicating whether the HTML5 tech currently supports the progress event. If this is false, manual progress events will be triggred instead.

Overrides:
Default Value:
  • true

featuresTimeupdateEvents

Boolean indicating whether the HTML5 tech currently supports the timeupdate event. If this is false, manual timeupdate events will be triggred instead.

Overrides:
Default Value:
  • true

featuresVolumeControl :boolean

Boolean indicating whether the Tech supports volume control.

Overrides:
Default Value:

movingMediaElementInDOM :boolean

Boolean indicating whether the HTML5 tech currently supports the media element moving in the DOM. iOS breaks if you move the media element, so this is set this to false there. Everywhere else this should be true.

static nativeSourceHandler

Native source handler for Html5, simply passes the source to the media element.

Methods

addRemoteTextTrack(options, manualCleanupopt) → {HTMLTrackElement}

Creates a remote text track object and returns an html track element.

Parameters:
Name Type Attributes Default Description
options Object

The object should contain values for kind, language, label, and src (location of the WebVTT file)

manualCleanup Boolean <optional>
true

if set to false, the TextTrack will be automatically removed from the video element whenever the source changes

Returns:
HTMLTrackElement -

An Html Track Element. This can be an emulated HTMLTrackElement or a native one.

Overrides:
Deprecated:
  • The default value of the "manualCleanup" parameter will default to "false" in upcoming versions of Video.js

addTextTrack(kind, labelopt, languageopt) → {TextTrack}

Create and returns a remote TextTrack object.

Parameters:
Name Type Attributes Description
kind string

TextTrack kind (subtitles, captions, descriptions, chapters, or metadata)

label string <optional>

Label to identify the text track

language string <optional>

Two letter language abbreviation

Returns:
TextTrack -

The TextTrack that gets created.

Overrides:

addWebVttScript_()

Emulate TextTracks using vtt.js if necessary

Fires:
Inherited From:

audioTracks() → {AudioTrackList}

Get the AudioTrackList

Returns:
AudioTrackList
Inherited From:

autoplay() → {boolean}

Get the value of autoplay from the media element. autoplay indicates that the media should start to play as soon as the page is ready.

Returns:
boolean -
  • The value of autoplay from the media element.
      - True indicates that the media should start as soon as the page loads.
      - False indicates that the media should not start as soon as the page loads.
See:

buffered() → {TimeRange}

Get the value of buffered from the media element. buffered is a TimeRange object that represents the parts of the media that are already downloaded and available for playback.

Returns:
TimeRange -

The value of buffered from the media element.

Overrides:
See:

bufferedPercent() → {number}

Get the percentage of the current video that is currently buffered.

Returns:
number -

A number from 0 to 1 that represents the decimal percentage of the video that is buffered.

Inherited From:

cleanupAutoTextTracks()

Remove any TextTracks added via addRemoteTextTrack that are flagged for automatic garbage collection

Inherited From:

clearTracks(types)

Clear out a single TrackList or an array of TrackLists given their names.

Note: Techs without source handlers should call this between sources for video & audio tracks. You don't want to use them between tracks!

Parameters:
Name Type Description
types Array.<string> | string

TrackList names to clear, valid names are video, audio, and text.

Inherited From:

controls() → {boolean}

Get the value of controls from the media element. controls indicates whether the native media controls should be shown or hidden.

Returns:
boolean -
  • The value of controls from the media element.
      - True indicates that native controls should be showing.
      - False indicates that native controls should be hidden.
See:

createEl() → {Element}

Create the Html5 Tech's DOM element.

Returns:
Element -

The element that gets created.

createRemoteTextTrack(options) → {HTMLTrackElement}

Creates either native TextTrack or an emulated TextTrack depending on the value of featuresNativeTextTracks

Parameters:
Name Type Description
options Object

The object should contain the options to intialize the TextTrack with.

Properties
Name Type Attributes Description
kind string <optional>

TextTrack kind (subtitles, captions, descriptions, chapters, or metadata).

label string <optional>

Label to identify the text track

language string <optional>

Two letter language abbreviation.

default boolean <optional>

Default this track to on.

id string <optional>

The internal id to assign this track.

src string <optional>

A source url for the track.

Returns:
HTMLTrackElement -

The track element that gets created.

Overrides:

currentSrc() → {Tech~SourceObject}

Get the current source on the HTML5 Tech. Falls back to returning the source from the HTML5 media element.

Returns:
Tech~SourceObject -

The current source object from the HTML5 tech. With a fallback to the elements source.

currentTime() → {number}

Get the value of currentTime from the media element. currentTime indicates the current second that the media is at in playback.

Returns:
number -

The value of currentTime from the media element.

See:

defaultMuted() → {boolean}

Get the value of defaultMuted from the media element. defaultMuted indicates whether the media should start muted or not. Only changes the default state of the media. muted and defaultMuted can have different values. Html5#muted indicates the current state.

Returns:
boolean -
  • The value of defaultMuted from the media element.
      - True indicates that the media should start muted.
      - False indicates that the media should not start muted
See:

defaultMuted() → {boolean}

Get the value of defaultMuted from the media element. defaultMuted indicates that the volume for the media should be set to silent when the video first starts. This does not actually change the volume attribute. After playback has started muted will indicate the current status of the volume and defaultMuted will not.

Returns:
boolean -
  • True if the value of volume should be ignored and the audio set to silent.
      - False if the value of `volume` should be used.
See:

defaultPlaybackRate() → {number}

Get the value of defaultPlaybackRate from the media element. defaultPlaybackRate indicates the rate at which the media is currently playing back. This value will not indicate the current playbackRate after playback has started, use Html5#playbackRate for that.

Examples:

  • if defaultPlaybackRate is set to 2, media will play twice as fast.
  • if defaultPlaybackRate is set to 0.5, media will play half as fast.
Returns:
number -

The value of defaultPlaybackRate from the media element. A number indicating the current playback speed of the media, where 1 is normal speed.

See:

dispose()

Dispose of HTML5 media element and remove all tracks.

Overrides:

duration() → {number}

Get the current duration of the HTML5 media element.

Returns:
number -

The duration of the media or 0 if there is no duration.

emulateTextTracks()

Emulate texttracks

Inherited From:

ended() → {boolean}

Get the value of ended from the media element. ended indicates whether the media has reached the end or not.

Returns:
boolean -
  • The value of ended from the media element.
      - True indicates that the media has ended.
      - False indicates that the media has not ended.
See:

enterFullScreen()

Request that the HTML5 Tech enter fullscreen.

error() → {MediaError|null}

Get the value of the error from the media element. error indicates any MediaError that may have occured during playback. If error returns null there is no current error.

Returns:
MediaError | null -

The value of error from the media element. Will be MediaError if there is a current error and null otherwise.

Overrides:
See:

exitFullScreen()

Request that the HTML5 Tech exit fullscreen.

getVideoPlaybackQuality() → {Object}

Gets available media playback quality metrics as specified by the W3C's Media Playback Quality API.

Returns:
Object -

An object with supported media playback quality metrics

Overrides:
See:

handleLateInit_() → {undefined}

This will be triggered if the loadstart event has already fired, before videojs was ready. Two known examples of when this can happen are:

  1. If we're loading the playback object after it has started loading
  2. The media is already playing the (often with autoplay on) then

This function will fire another loadstart so that videojs can catchup.

Fires:
  • Tech#event:loadstart
Returns:
undefined -

returns nothing.

height() → {number}

Get the current height of the HTML5 media element.

Returns:
number -

The heigth of the HTML5 media element.

initTrackListeners()

Turn on listeners for VideoTrackList, {AudioTrackList, and TextTrackList events.

This adds EventTarget~EventListeners for addtrack, and removetrack.

Fires:
Inherited From:

load()

A wrapper around the media elements load function. This will call the HTML5s media element load function.

See:

loop() → {boolean}

Get the value of loop from the media element. loop indicates that the media should return to the start of the media and continue playing once it reaches the end.

Returns:
boolean -
  • The value of loop from the media element.
      - True indicates that playback should seek back to start once
        the end of a media is reached.
      - False indicates that playback should not loop back to the start when the
        end of the media is reached.
See:

manualProgressOff()

Turn off the polyfill for progress events that was created in Tech#manualProgressOn

Inherited From:

manualProgressOn()

Polyfill the progress event for browsers that don't support it natively.

Inherited From:
See:

manualTimeUpdatesOff()

Turn off the polyfill for timeupdate events that was created in Tech#manualTimeUpdatesOn

Inherited From:

manualTimeUpdatesOn()

Polyfill the timeupdate event for browsers that don't support it.

Inherited From:
See:

muted() → {boolean}

Get the value of muted from the media element. muted indicates that the volume for the media should be set to silent. This does not actually change the volume attribute.

Returns:
boolean -
  • True if the value of volume should be ignored and the audio set to silent.
      - False if the value of `volume` should be used.
See:

networkState() → {number}

Get the value of networkState from the media element. networkState indicates the current network state. It returns an enumeration from the following list:

  • 0: NETWORK_EMPTY
  • 1: NEWORK_IDLE
  • 2: NETWORK_LOADING
  • 3: NETWORK_NO_SOURCE
Returns:
number -

The value of networkState from the media element. This will be a number from the list in the description.

See:

onDurationChange(event)

Update our internal duration on a durationchange event by calling Tech#duration.

Parameters:
Name Type Description
event EventTarget~Event

The durationchange event that caused this to run.

Listens to Events:
  • Tech#event:durationchange
Inherited From:

pause()

A wrapper around the media elements pause function. This will call the HTML5 media elements pause function.

See:

paused() → {boolean}

Get the value of paused from the media element. paused indicates whether the media element is currently paused or not.

Returns:
boolean -

The value of paused from the media element.

See:

play()

A wrapper around the media elements play function. This will call the HTML5s media element play function.

See:

playbackRate() → {number}

Get the value of playbackRate from the media element. playbackRate indicates the rate at which the media is currently playing back. Examples:

  • if playbackRate is set to 2, media will play twice as fast.
  • if playbackRate is set to 0.5, media will play half as fast.
Returns:
number -

The value of playbackRate from the media element. A number indicating the current playback speed of the media, where 1 is normal speed.

See:

played() → {TimeRange}

Get the value of played from the media element. played returns a TimeRange object representing points in the media timeline that have been played.

Returns:
TimeRange -

The value of played from the media element. A TimeRange object indicating the ranges of time that have been played.

Overrides:
See:

playsinline() → {boolean}

Get the value of playsinline from the media element. playsinline indicates to the browser that non-fullscreen playback is preferred when fullscreen playback is the native default, such as in iOS Safari.

Returns:
boolean -
  • The value of playsinline from the media element.
      - True indicates that the media should play inline.
      - False indicates that the media should not play inline.
Overrides:
See:

poster() → {string}

Get the value of poster from the media element. poster indicates that the url of an image file that can/will be shown when no media data is available.

Returns:
string -

The value of poster from the media element. Value will be a url to an image.

See:

preload() → {string}

Get the value of preload from the media element. preload indicates what should download before the media is interacted with. It can have the following values:

  • none: nothing should be downloaded
  • metadata: poster and the first few frames of the media may be downloaded to get media dimensions and other metadata
  • auto: allow the media and metadata for the media to be downloaded before interaction
Returns:
string -

The value of preload from the media element. Will be 'none', 'metadata', or 'auto'.

See:

readyState() → {number}

Get the value of readyState from the media element. readyState indicates the current state of the media element. It returns an enumeration from the following list:

  • 0: HAVE_NOTHING
  • 1: HAVE_METADATA
  • 2: HAVE_CURRENT_DATA
  • 3: HAVE_FUTURE_DATA
  • 4: HAVE_ENOUGH_DATA
Returns:
number -

The value of readyState from the media element. This will be a number from the list in the description.

See:

remoteTextTrackEls() → {HtmlTrackElementList}

Get the remote element HtmlTrackElementList

Inherited From:

remoteTextTracks() → {TextTrackList}

Get the remote element TextTrackList

Returns:
TextTrackList
Inherited From:

removeRemoteTextTrack(track)

Remove remote TextTrack from TextTrackList object

Parameters:
Name Type Description
track TextTrack

TextTrack object to remove

Overrides:

reset()

Reset the tech by removing all sources and then calling Html5.resetMediaElement.

Overrides:

seekable() → {TimeRange}

Get the value of seekable from the media element. seekable returns a TimeRange object indicating ranges of time that can currently be seeked to.

Returns:
TimeRange -

The value of seekable from the media element. A TimeRange object indicating the current ranges of time that can be seeked to.

See:

seeking() → {boolean}

Get the value of seeking from the media element. seeking indicates whether the media is currently seeking to a new position or not.

Returns:
boolean -
  • The value of seeking from the media element.
      - True indicates that the media is currently seeking to a new position.
      - Flase indicates that the media is not seeking to a new position at this time.
See:

setAutoplay(autoplay)

Set the value of autoplay on the media element. autoplay indicates that the media should start to play as soon as the page is ready.

Parameters:
Name Type Description
autoplay boolean
  • True indicates that the media should start as soon as the page loads.
      - False indicates that the media should not start as soon as the page loads.
See:

setControls(val)

Set controls attribute for the HTML5 media Element.

Parameters:
Name Type Description
val string

Value to set the controls attribute to

setCurrentTime(seconds)

Set current time for the HTML5 tech.

Parameters:
Name Type Description
seconds number

Set the current time of the media to this.

Overrides:

setDefaultMuted(defaultMuted)

Set the value of defaultMuted on the media element. defaultMuted indicates that the current audio level should be silent, but will only effect the muted level on intial playback..

Parameters:
Name Type Description
defaultMuted boolean
  • True if the audio should be set to silent
     - False otherwise
See:

setDefaultPlaybackRate() → {number}

Set the value of defaultPlaybackRate on the media element. defaultPlaybackRate indicates the rate at which the media should play back upon initial startup. Changing this value after a video has started will do nothing. Instead you should used Html5#setPlaybackRate.

Example Values:

  • if playbackRate is set to 2, media will play twice as fast.
  • if playbackRate is set to 0.5, media will play half as fast.
Returns:
number -

The value of defaultPlaybackRate from the media element. A number indicating the current playback speed of the media, where 1 is normal speed.

See:

setLoop(loop)

Set the value of loop on the media element. loop indicates that the media should return to the start of the media and continue playing once it reaches the end.

Parameters:
Name Type Description
loop boolean
  • True indicates that playback should seek back to start once
        the end of a media is reached.
      - False indicates that playback should not loop back to the start when the
        end of the media is reached.
See:

setMuted(muted)

Set the value of muted on the media element. muted indicates that the current audio level should be silent.

Parameters:
Name Type Description
muted boolean
  • True if the audio should be set to silent
     - False otherwise
See:

setPlaybackRate() → {number}

Set the value of playbackRate on the media element. playbackRate indicates the rate at which the media should play back. Examples:

  • if playbackRate is set to 2, media will play twice as fast.
  • if playbackRate is set to 0.5, media will play half as fast.
Returns:
number -

The value of playbackRate from the media element. A number indicating the current playback speed of the media, where 1 is normal speed.

See:

setPlaysinline(playsinline)

Set the value of playsinline from the media element. playsinline indicates to the browser that non-fullscreen playback is preferred when fullscreen playback is the native default, such as in iOS Safari.

Parameters:
Name Type Description
playsinline boolean
  • True indicates that the media should play inline.
      - False indicates that the media should not play inline.
Overrides:
See:

setPoster(poster)

Set the value of poster on the media element. poster is the url to an image file that can/will be shown when no media data is available.

Parameters:
Name Type Description
poster string

The url to an image that should be used as the poster for the media element.

Overrides:
See:

setPreload(preload)

Set the value of preload on the media element. preload indicates what should download before the media is interacted with. It can have the following values:

  • none: nothing should be downloaded
  • metadata: poster and the first few frames of the media may be downloaded to get media dimensions and other metadata
  • auto: allow the media and metadata for the media to be downloaded before interaction
Parameters:
Name Type Description
preload string

The value of preload to set on the media element. Must be 'none', 'metadata', or 'auto'.

See:

setSrc(src)

Set the value of src on the media element. src indicates the current Tech~SourceObject for the media.

Parameters:
Name Type Description
src Tech~SourceObject

The source object to set as the current source.

See:

setVolume(percentAsDecimal)

Set the value of volume on the media element. volume indicates the current audio level as a percentage in decimal form. This means that 1 is 100%, 0.5 is 50%, and so on.

Parameters:
Name Type Description
percentAsDecimal number

The volume percent as a decimal. Valid range is from 0-1.

See:

src(srcopt) → {Tech~SourceObject|undefined}

A getter/setter for the Html5 Tech's source object.

Note: Please use Html5#setSource

Parameters:
Name Type Attributes Description
src Tech~SourceObject <optional>

The source object you want to set on the HTML5 techs element.

Returns:
Tech~SourceObject | undefined -
  • The current source object when a source is not passed in.
      - undefined when setting
Deprecated:
  • Since version 5.

stopTrackingCurrentTime()

Stop the interval function created in Tech#trackCurrentTime so that the timeupdate event is no longer triggered.

Listens to Events:
  • {Tech#event:pause}
Inherited From:

stopTrackingProgress()

Turn off the polyfill for progress events that was created in Tech#manualProgressOn Stop manually tracking progress events by clearing the interval that was set in Tech#trackProgress.

Inherited From:

supportsFullScreen() → {boolean}

Check if fullscreen is supported on the current playback device.

Returns:
boolean -
  • True if fullscreen is supported.
      - False if fullscreen is not supported.

textTracks() → {TextTrackList}

Get the TextTrackList

Returns:
TextTrackList
Inherited From:

trackCurrentTime()

Sets up an interval function to track current time and trigger timeupdate every 250 milliseconds.

Listens to Events:
  • Tech#event:play
Inherited From:

trackProgress(event)

This is used to trigger a progress event when the buffered percent changes. It sets an interval function that will be called every 500 milliseconds to check if the buffer end percent has changed.

This function is called by Tech#manualProgressOn

Parameters:
Name Type Description
event EventTarget~Event

The ready event that caused this to run.

Fires:
Listens to Events:
Inherited From:

videoHeight() → {number}

Get the value of videoHeight from the video element. videoHeigth indicates the current height of the video in css pixels.

Returns:
number -

The value of videoHeight from the video element. This will be a number in css pixels.

See:

videoTracks() → {VideoTrackList}

Get the VideoTrackList

Returns:
VideoTrackList
Inherited From:

videoWidth() → {number}

Get the value of videoWidth from the video element. videoWidth indicates the current width of the video in css pixels.

Returns:
number -

The value of videoWidth from the video element. This will be a number in css pixels.

See:

volume() → {number}

Get the value of volume from the media element. volume indicates the current playback volume of audio for a media. volume will be a value from 0 (silent) to 1 (loudest and default).

Returns:
number -

The value of volume from the media element. Value will be between 0-1.

See:

width() → {number}

Get the current width of the HTML5 media element.

Returns:
number -

The width of the HTML5 media element.

static canControlPlaybackRate() → {boolean}

Check if the playback rate can be changed in this browser/device.

Returns:
boolean -
  • True if playback rate can be controlled
      - False otherwise

static canControlVolume() → {boolean}

Check if the volume can be changed in this browser/device. Volume cannot be changed in a lot of mobile devices. Specifically, it can't be changed from 1 on iOS.

Returns:
boolean -
  • True if volume can be controlled
      - False otherwise

static canPlaySource(srcObj, options) → {string}

Check if the tech can support the given source

Parameters:
Name Type Description
srcObj Object

The source object

options Object

The options passed to the tech

Returns:
string -

'probably', 'maybe', or '' (empty string)

static canPlayType(type) → {string}

Check if the tech can support the given type

Parameters:
Name Type Description
type string

The mimetype to check

Returns:
string -

'probably', 'maybe', or '' (empty string)

static isSupported() → {boolean}

Check if HTML5 media is supported by this browser/device.

Returns:
boolean -
  • True if HTML5 media is supported.
      - False if HTML5 media is not supported.

static supportsNativeAudioTracks() → {boolean}

Check to see if native AudioTracks are supported by this browser/device

Returns:
boolean -
  • True if native AudioTracks are supported.
     - False otherwise

static supportsNativeTextTracks() → {boolean}

Check to see if native TextTracks are supported by this browser/device.

Returns:
boolean -
  • True if native TextTracks are supported.
      - False otherwise

static supportsNativeVideoTracks() → {boolean}

Check to see if native VideoTracks are supported by this browser/device

Returns:
boolean -
  • True if native VideoTracks are supported.
     - False otherwise

Events

audiotrackchange

Triggered when tracks are added or removed on the Tech AudioTrackList

Type:
Inherited From:

progress

See Player#progress

Type:
Inherited From:

texttrackchange

Triggered when tracks are added or removed on the Tech TextTrackList

Type:
Inherited From:

timeupdate

Triggered at an interval of 250ms to indicated that time is passing in the video.

Type:
Overrides:

videotrackchange

Triggered when tracks are added or removed on the Tech VideoTrackList

Type:
Inherited From:

vttjsloaded

Fired when vtt.js is loaded.

Type:
Overrides: