Skip to content
import VideoElement from "@arcgis/core/layers/support/VideoElement.js";
Inheritance:
VideoElementMediaElementBaseAccessor
Since
ArcGIS Maps SDK for JavaScript 4.24

Represents a video element referenced in the MediaLayer's MediaLayer.source. MediaLayer can display videos that are supported by web browsers. Refer to the common codecs document for supported video types.

Coordinates of the image and video elements can be specified in any spatial reference and are projected to the view's spatial reference. The content is stretched linearly between the coordinates, therefore it's recommended for the image or video to match the view's spatial reference to align correctly, especially for content covering large areas like the entire earth.

// create a video element by setting video param to point to the video file url
// set the geographic location of the video file on the map using an extent
const element = new VideoElement({
video: "https://arcgis.github.io/arcgis-samples-javascript/sample-data/media-layer/videos/hurricanes_aerosol-aug.mp4",
georeference: new ExtentAndRotationGeoreference({
extent: new Extent({
xmin: -150,
ymin: 1,
xmax: 20,
ymax: 80,
spatialReference: {
wkid: 4326
}
})
})
});
See also

Constructors

Constructor

Constructor
Parameters
ParameterTypeDescriptionRequired
properties
See the properties table for a list of all the properties that may be passed into the constructor.

Properties

Any properties can be set, retrieved or listened to. See the Watch for changes topic.
PropertyTypeClass
content
readonly
declaredClass
readonly inherited
georeference
inherited
loadError
readonly inherited
loadStatus
readonly inherited
"not-loaded" | "loading" | "failed" | "loaded"
loadWarnings
readonly inherited
any[]
opacity
inherited
type
readonly
"video"

content

readonly Property
Type
HTMLVideoElement | null | undefined

The video content referenced in the video element instance. The content matches the video referenced in the video parameter.

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor

The name of the class. The declared class name is formatted as esri.folder.className.

georeference

autocast inherited Property
Type
Georeference | null | undefined
Inherited from: MediaElementBase

The geographic location of the image or video element to be placed on the map. The location can be set by either specifying extent and rotation of the element, the corner points of the bounding box, or by defining control points.

Examples
// create a new ExtentAndRotationGeoreference
const geoReference = new ExtentAndRotationGeoreference({
extent: new Extent({
spatialReference: {
wkid: 102100
},
xmin: -10047456.27662979,
ymin: 3486722.2723874687,
xmax: -10006982.870152846,
ymax: 3514468.91365495
})
});
const imageElement = new ImageElement({
image: "https://arcgis.github.io/arcgis-samples-javascript/sample-data/media-layer/new-orleans/neworleans1891.png",
georeference: geoReference
});
// create a canvas image element by setting its corner points of the bounding box
const canvasElement = new ImageElement({
image: canvas,
georeference: new CornersGeoreference({
bottomRight: new Point({
x: -121.369,
y: 45.061
}),
bottomLeft: new Point({
x: -122.363,
y: 45.061
}),
topRight: new Point({
x: -121.369,
y: 45.678
}),
topLeft: new Point({
x: -122.363,
y: 45.678
})
})
});
// georeference an ImageElement, using ControlPointsGeoreference in the
// North American Datum 1927 spatial reference
const spatialReference = new SpatialReference({ wkid: 4267 });
const swCorner = {
sourcePoint: { x: 80, y: 1732 },
mapPoint: new Point({ x: -107.875, y: 37.875, spatialReference })
};
const nwCorner = {
sourcePoint: { x: 75, y: 102 },
mapPoint: new Point({ x: -107.875, y: 38, spatialReference })
};
const neCorner = {
sourcePoint: { x: 1353, y: 99 },
mapPoint: new Point({ x: -107.75, y: 38, spatialReference })
};
const seCorner = {
sourcePoint: { x: 1361, y: 1721 },
mapPoint: new Point({ x: -107.75, y: 37.875, spatialReference })
};
const controlPoints = [swCorner, nwCorner, neCorner, seCorner];
const georeference = new ControlPointsGeoreference({ controlPoints, width: 1991, height: 2500 });
const imageElement = new ImageElement({
image: "https://jsapi.maps.arcgis.com/sharing/rest/content/items/1a3df04e7d734535a3a6a09dfec5a6b2/data",
georeference
});

loadError

readonlyinherited Property
Type
EsriError | null | undefined
Inherited from: LoadableMixin

The Error object returned if an error occurred while loading.

loadStatus

readonlyinherited Property
Type
"not-loaded" | "loading" | "failed" | "loaded"
Inherited from: LoadableMixin

Represents the status of a load() operation.

ValueDescription
not-loadedThe object's resources have not loaded.
loadingThe object's resources are currently loading.
loadedThe object's resources have loaded without errors.
failedThe object's resources failed to load. See loadError for more details.
Default value
"not-loaded"

loadWarnings

readonlyinherited Property
Type
any[]
Inherited from: LoadableMixin

A list of warnings which occurred while loading.

opacity

inherited Property
Type
number
Inherited from: MediaElementBase

The opacity of the element. This value can range between 1 and 0, where 0 is 100 percent transparent and 1 is completely opaque.

Default value
1

type

readonly Property
Type
"video"

The element type.

video

Property
Type
VideoSource

The video element to be added to the media layer's source. The video element can be URL string pointing the video for example.

Example
// create a video element by setting video param to point to the video file url
// set the geographic location of the video file on the map using an extent
const element = new VideoElement({
video: "https://arcgis.github.io/arcgis-samples-javascript/sample-data/media-layer/videos/hurricanes_aerosol-aug.mp4",
georeference: new ExtentAndRotationGeoreference({
extent: new Extent({
xmin: -150,
ymin: 1,
xmax: 20,
ymax: 80,
spatialReference: {
wkid: 4326
}
})
})
});
// add the video element to the media layer
const layer = new MediaLayer({
source: [element],
title: "2017 Hurricanes and Aerosols Simulation",
copyright: "NASA's Goddard Space Flight Center"
});

Methods

MethodSignatureClass
cancelLoad
inherited
cancelLoad(): this
isFulfilled
inherited
isFulfilled(): boolean
isRejected
inherited
isRejected(): boolean
isResolved
inherited
isResolved(): boolean
load
inherited
load(options?: AbortOptions | null | undefined): Promise<this>
when
inherited
when<TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>

cancelLoad

inherited Method
Signature
cancelLoad (): this
Inherited from: LoadableMixin

Cancels a load() operation if it is already in progress.

Returns
this

isFulfilled

inherited Method
Signature
isFulfilled (): boolean
Inherited from: EsriPromiseMixin

isFulfilled() may be used to verify if creating an instance of the class is fulfilled (either resolved or rejected). If it is fulfilled, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been fulfilled (either resolved or rejected).

isRejected

inherited Method
Signature
isRejected (): boolean
Inherited from: EsriPromiseMixin

isRejected() may be used to verify if creating an instance of the class is rejected. If it is rejected, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been rejected.

isResolved

inherited Method
Signature
isResolved (): boolean
Inherited from: EsriPromiseMixin

isResolved() may be used to verify if creating an instance of the class is resolved. If it is resolved, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been resolved.

load

inherited Method
Signature
load (options?: AbortOptions | null | undefined): Promise<this>
Inherited from: LoadableMixin

Loads the resources referenced by this class. This method automatically executes for a View and all of the resources it references in Map if the view is constructed with a map instance.

This method must be called by the developer when accessing a resource that will not be loaded in a View.

The load() method only triggers the loading of the resource the first time it is called. The subsequent calls return the same promise.

It's possible to provide a signal to stop being interested into a Loadable instance load status. When the signal is aborted, the instance does not stop its loading process, only cancelLoad() can abort it.

Parameters
ParameterTypeDescriptionRequired
options

Additional options.

Returns
Promise<this>

Resolves when the resources have loaded.

when

inherited Method
Signature
when <TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>
Type parameters
<TResult1 = this, TResult2 = never>
Inherited from: EsriPromiseMixin

when() may be leveraged once an instance of the class is created. This method takes two input parameters: an onFulfilled function and an onRejected function. The onFulfilled executes when the instance of the class loads. The onRejected executes if the instance of the class fails to load.

Parameters
ParameterTypeDescriptionRequired
onFulfilled

The function to call when the promise resolves.

onRejected

The function to execute when the promise fails.

Returns
Promise<TResult1 | TResult2>

Returns a new promise for the result of onFulfilled that may be used to chain additional functions.

Example
// Although this example uses MapView, any class instance that is a promise may use when() in the same way
let view = new MapView();
view.when(function(){
// This function will execute once the promise is resolved
}, function(error){
// This function will execute if the promise is rejected due to an error
});