## VideoTrack

A representation of a single `VideoTrack`.

## Constructor

#### new VideoTrack(optionsopt)
`tracks/video-track.js`, `line 12`

  Create an instance of this class.

  ##### Parameters:

  Name | Type | Attributes | Default | Description
  --- | --- | --- | --- | ---
  `options` | Object | <optional> | {} | Object of option names and values ###### Properties
  Name | Type | Attributes | Default | Description
  --- | --- | --- | --- | ---
  `kind` | string | <optional> | '' | A valid VideoTrack~Kind
  `id` | string | <optional> | 'vjs_track_' + Guid.newGUID() | A unique id for this AudioTrack.
  `label` | string | <optional> | '' | The menu label for this track.
  `language` | string | <optional> | '' | A valid two character language code.
  `selected` | boolean | <optional> |  | If this track is the one that is currently playing.

  See:

    - Spec

### Extends

- Track

### Members

#### readonly id :string
`tracks/track.js`, `line 62`

  The id of this track. Cannot be changed after creation.

  Inherited From:
    - Track#id

#### readonly kind :string
`tracks/track.js`, `line 71`

  The kind of track that this is. Cannot be changed after creation.

  Inherited From:
    - Track#kind

#### readonly label :string
`tracks/track.js`, `line 80`

  The label of this track. Cannot be changed after creation.

  Inherited From:
    - Track#label

#### readonly language :string
`tracks/track.js`, `line 89`

  The two letter language code for this track. Cannot be changed after creation.

  Inherited From:
    - Track#language

#### selected :boolean
`tracks/video-track.js`, `line 53`

  If this `VideoTrack` is selected or not. When setting this will fire VideoTrack#selectedchange if the state of selected changed.

  ##### Fires:

  - VideoTrack#event:selectedchange

#### inner Kind
`tracks/track-enums.js`, `line 5`

  All possible `VideoTrackKind`s

  See:
    - https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind

### Methods

#### addEventListener()
`event-target.js`, `line 74`

  An alias of EventTarget#on. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#addEventListener
  See:
    - EventTarget#on

#### dispatchEvent()
`event-target.js`, `line 159`

  An alias of EventTarget#trigger. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#dispatchEvent
  See:
    - EventTarget#trigger

#### off(type, fn)
`event-target.js`, `line 87`

  Removes an `event listener` for a specific event from an instance of `EventTarget`. This makes it so that the `event listener` will no longer get called when the named event happens.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to remove.

  Inherited From:
    - EventTarget#off

#### on(type, fn)
`event-target.js`, `line 57`

  Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a function that will get called when an event with a certain name gets triggered.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to call with `EventTarget`s

  Inherited From:
    - EventTarget#on

#### one(type, fn)
`event-target.js`, `line 111`

  This function will add an `event listener` that gets triggered only once. After the first trigger it will get removed. This is like adding an `event listener` with EventTarget#on that calls EventTarget#off on itself.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to be called once for each event name.

  Inherited From:
    - EventTarget#one

#### removeEventListener()
`event-target.js`, `line 98`

  An alias of EventTarget#off. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#removeEventListener
  See:
    - EventTarget#off

#### trigger(event)
`event-target.js`, `line 137`

  This function causes an event to happen. This will then cause any `event listeners` that are waiting for that event, to get called. If there are no `event listeners` for an event then nothing will happen.

  If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`. Trigger will also call the `on` + `uppercaseEventName` function.

  Example: 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call `onClick` if it exists.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `event` | string | EventTarget~Event | Object | The name of the event, an `Event`, or an object with a key of type set to an event name.

  Inherited From:
    - EventTarget#trigger

### Events

#### selectedchange
`tracks/video-track.js`, `line 73`

  An event that fires when selected changes on this track. This allows the VideoTrackList that holds this track to act accordingly.

  > Note: This is not part of the spec! Native tracks will do this internally without an event.

  ##### Type:

  - EventTarget~Event