This is documentation for the next SDK version. For up-to-date documentation, see the latest version (SDK 52).

Expo Video (expo-video) iconExpo Video (expo-video)

GitHub

npm

A library that provides an API to implement video playback in apps.

Android
iOS
tvOS
Web

expo-video is a cross-platform, performant video component for React Native and Expo with Web support.

Installation

Terminal
- npx expo install expo-video

If you are installing this in an existing React Native app, start by installing expo in your project. Then, follow the additional instructions as mentioned by the library's README under "Installation in bare React Native projects" section.

Configuration in app config

You can configure expo-video using its built-in config plugin if you use config plugins in your project (EAS Build or npx expo run:[android|ios]). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does not use EAS Build, then you'll need to manually configure the package.

Example app.json with config plugin

app.json
{
  "expo": {
    "plugins": [
      [
        "expo-video",
        {
          "supportsBackgroundPlayback": true,
          "supportsPictureInPicture": true
        }
      ]
    ],
  }
}

Configurable properties

NameDefaultDescription
supportsBackgroundPlaybackundefined
Only for: 
iOS

A boolean value to enable background playback on iOS. If true, the audio key is added to the UIBackgroundModes array in the Info.plist file. If false, the key is removed. When undefined, the key is not modified.

supportsPictureInPictureundefined

A boolean value to enable Picture-in-Picture on Android and iOS. Configures the android:supportsPictureInPicture property on Android and the UIBackgroundModes array in the Info.plist file on iOS. When undefined, the configuration is not modified.

Usage

Here's a simple example of a video with a play and pause button.

Video
import { useEvent } from 'expo';
import { useVideoPlayer, VideoView } from 'expo-video';
import { StyleSheet, View, Button } from 'react-native';

const videoSource =
  'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4';

export default function VideoScreen() {
  const player = useVideoPlayer(videoSource, player => {
    player.loop = true;
    player.play();
  });

  const { isPlaying } = useEvent(player, 'playingChange', { isPlaying: player.playing });

  return (
    <View style={styles.contentContainer}>
      <VideoView style={styles.video} player={player} allowsFullscreen allowsPictureInPicture />
      <View style={styles.controlsContainer}>
        <Button
          title={isPlaying ? 'Pause' : 'Play'}
          onPress={() => {
            if (isPlaying) {
              player.pause();
            } else {
              player.play();
            }
          }}
        />
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  contentContainer: {
    flex: 1,
    padding: 10,
    alignItems: 'center',
    justifyContent: 'center',
    paddingHorizontal: 50,
  },
  video: {
    width: 350,
    height: 275,
  },
  controlsContainer: {
    padding: 10,
  },
});

Receiving events

The changes in properties of the VideoPlayer do not update the React state. Therefore, to display the information about the current state of the VideoPlayer, it is necessary to listen to the events it emits. The event system is based on the EventEmitter class and hooks from the expo package. There are a few ways to listen to events:

  • useEvent hook: it creates a listener that will return a stateful value that can be used in a component. It also cleans up automatically when the component unmounts.
import { useEvent } from 'expo';
// ... Other imports, definition of the component, creating the player etc.

const { status, error } = useEvent(player, 'statusChange', { status: player.status });
// Rest of the component...
  • useEventListener hook: built around the Player.addListener and Player.removeListener methods, creates an event listener with automatic cleanup.
import { useEventListener } from 'expo';
// ...Other imports, definition of the component, creating the player etc.

useEventListener(player, 'statusChange', ({ status, error }) => {
  setPlayerStatus(status);
  setPlayerError(error);
  console.log('Player status changed: ', status);
});
// Rest of the component...
  • Player.addListener method: this is the most flexible way to listen to events, but requires manual cleanup and more boilerplate code.
// ...Imports, definition of the component, creating the player etc.

useEffect(() => {
  const subscription = player.addListener('statusChange', ({ status, error }) => {
    setPlayerStatus(status);
    setPlayerError(error);
    console.log('Player status changed: ', status);
  });

  return () => {
    subscription.remove();
  };
}, []);
// Rest of the component...

Playing local media from the assets directory

expo-video supports playing local media loaded using the require function. You can use the result as a source directly, or assign it to the assetId parameter of a VideoSource if you also want to configure other properties.

import { VideoSource } from 'expo-video';

const assetId = require('./assets/bigbuckbunny.mp4');

const videoSource: VideoSource = {
  assetId,
  metadata: {
    title: 'Big Buck Bunny',
    artist: 'The Open Movie Project',
  },
};

const player1 = useVideoPlayer(assetId); // You can use the `asset` directly as a video source
const player2 = useVideoPlayer(videoSource);

Preloading videos

While another video is playing, a video can be loaded before showing it in the view. This allows for quicker transitions between subsequent videos and a better user experience.

To preload a video, you have to create a VideoPlayer with a video source. Even when the player is not connected to a VideoView, it will fill the buffers. Once it is connected to the VideoView, it will be able to start playing without buffering.

In some cases, it is beneficial to preload a video later in the screen lifecycle. In that case, a VideoPlayer with a null source should be created. To start preloading, replace the player source with a video source using the replace() function.

Here is an example of how to preload a video:

Video
import { useVideoPlayer, VideoView, VideoSource } from 'expo-video';
import { useState, useCallback } from 'react';
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';

const bigBuckBunnySource: VideoSource =
  'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4';

const elephantsDreamSource: VideoSource =
  'https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4';

export default function PreloadingVideoPlayerScreen() {
  const player1 = useVideoPlayer(bigBuckBunnySource, player => {
    player.play();
  });

  const player2 = useVideoPlayer(elephantsDreamSource, player => {
    player.currentTime = 20;
  });

  const [currentPlayer, setCurrentPlayer] = useState(player1);

  const replacePlayer = useCallback(async () => {
    currentPlayer.pause();
    if (currentPlayer === player1) {
      setCurrentPlayer(player2);
      player1.pause();
      player2.play();
    } else {
      setCurrentPlayer(player1);
      player2.pause();
      player1.play();
    }
  }, [player1, currentPlayer]);

  return (
    <View style={styles.contentContainer}>
      <VideoView player={currentPlayer} style={styles.video} nativeControls={false} />
      <TouchableOpacity style={styles.button} onPress={replacePlayer}>
        <Text style={styles.buttonText}>Replace Player</Text>
      </TouchableOpacity>
    </View>
  );
}

const styles = StyleSheet.create({
  contentContainer: {
    flex: 1,
    padding: 10,
    alignItems: 'center',
    justifyContent: 'center',
    paddingHorizontal: 50,
  },
  button: {
    alignItems: 'center',
    justifyContent: 'center',
    borderRadius: 3,
    paddingVertical: 8,
    paddingHorizontal: 12,
    backgroundColor: '#4630ec',
  },
  buttonText: {
    fontSize: 12,
    fontWeight: 'bold',
    color: '#eeeeee',
    textAlign: 'center',
  },
  video: {
    width: 300,
    height: 168.75,
    marginVertical: 20,
  },
});

Using the VideoPlayer directly

In most cases, the useVideoPlayer hook should be used to create a VideoPlayer instance. It manages the player's lifecycle and ensures that it is properly disposed of when the component is unmounted. However, in some advanced use cases, it might be necessary to create a VideoPlayer that does not get automatically destroyed when the component is unmounted. In those cases, the VideoPlayer can be created using the createVideoPlayer function. You need be aware of the risks that come with this approach, as it is your responsibility to call the release() method when the player is no longer needed. If not handled properly, this approach may lead to memory leaks.

import { createVideoPlayer } from 'expo-video';
const player = createVideoPlayer(videoSource);

API

import { VideoView, useVideoPlayer } from 'expo-video';

Component

VideoView

Type: React.PureComponent<VideoViewProps>

Android
iOS
tvOS
Web

allowsFullscreen

Optional • Type: boolean • Default: true

Determines whether fullscreen mode is allowed or not.

Android
iOS
Web

allowsPictureInPicture

Optional • Type: boolean

Determines whether the player allows Picture in Picture (PiP) mode.

Note: The supportsPictureInPicture property of the config plugin has to be configured for the PiP to work.

iOS 16.0+

allowsVideoFrameAnalysis

Optional • Type: boolean • Default: true

Specifies whether to perform video frame analysis (Live Text in videos). Check official Apple documentation for more details.

Android
iOS
tvOS
Web

contentFit

Optional • Type: VideoContentFit • Default: 'contain'

Describes how the video should be scaled to fit in the container. Options are 'contain', 'cover', and 'fill'.

iOS

contentPosition

Optional • Type: { dx: number, dy: number }

Determines the position offset of the video inside the container.

Android
iOS
tvOS
Web

nativeControls

Optional • Type: boolean • Default: true

Determines whether native controls should be displayed or not.

Android
iOS
tvOS
Web

onFullscreenEnter

Optional • Type: () => void

A callback to call after the video player enters fullscreen mode.

Android
iOS
tvOS
Web

onFullscreenExit

Optional • Type: () => void

A callback to call after the video player exits fullscreen mode.

Android
iOS
Web

onPictureInPictureStart

Optional • Type: () => void

A callback to call after the video player enters Picture in Picture (PiP) mode.

Android
iOS
Web

onPictureInPictureStop

Optional • Type: () => void

A callback to call after the video player exits Picture in Picture (PiP) mode.

Android
iOS
tvOS
Web

player

A video player instance. Use useVideoPlayer() hook to create one.

Android
iOS

requiresLinearPlayback

Optional • Type: boolean • Default: false

Determines whether the player allows the user to skip media content.

iOS

showsTimecodes

Optional • Type: boolean • Default: true

Determines whether the timecodes should be displayed or not.

Android 12+
iOS

startsPictureInPictureAutomatically

Optional • Type: boolean • Default: false

Determines whether the player should start Picture in Picture (PiP) automatically when the app is in the background.

Note: Only one player can be in Picture in Picture (PiP) mode at a time.

Note: The supportsPictureInPicture property of the config plugin has to be configured for the PiP to work.

Inherited Props

Component Methods

Android
iOS
tvOS
Web

enterFullscreen()

Enters fullscreen mode.

Returns:

Promise<void>

Android
iOS
tvOS
Web

exitFullscreen()

Exits fullscreen mode.

Returns:

Promise<void>

Android
iOS
Web

startPictureInPicture()

Enters Picture in Picture (PiP) mode. Throws an exception if the device does not support PiP.

Note: Only one player can be in Picture in Picture (PiP) mode at a time.

Note: The supportsPictureInPicture property of the config plugin has to be configured for the PiP to work.

Returns:

Promise<void>

Android
iOS
Web

stopPictureInPicture()

Exits Picture in Picture (PiP) mode.

Returns:

Promise<void>

Hooks

Android
iOS
tvOS
Web

useVideoPlayer(source, setup)

ParameterTypeDescription
sourceVideoSource

A video source that is used to initialize the player.

setup
(optional)
(player: VideoPlayer) => void

A function that allows setting up the player. It will run after the player is created.


Creates a VideoPlayer, which will be automatically cleaned up when the component is unmounted.

Returns:

VideoPlayer

Classes

Android
iOS
tvOS
Web

VideoPlayer

Type: Class extends SharedObject<VideoPlayerEvents>

A class that represents an instance of the video player.

VideoPlayer Properties

iOS

allowsExternalPlayback

Type: boolean • Default: true

Determines whether the player should allow external playback.

Android
iOS

audioMixingMode

Type: AudioMixingMode • Default: 'auto'

Determines how the player will interact with other audio playing in the system.

Android
iOS

availableSubtitleTracks

Read Only • Type: SubtitleTrack[]

An array of subtitle tracks available for the current video.

Android
iOS
tvOS
Web

bufferedPosition

Read Only • Type: number

Float value indicating how far the player has buffered the video in seconds.

This value is 0 when the player has not buffered up to the current playback time. When it's impossible to determine the buffer state (for example, when the player isn't playing any media), this value is -1.

Android
iOS

bufferOptions

Specifies buffer options which will be used by the player when buffering the video.

You should provide a BufferOptions object when setting this property. Setting individual buffer properties is not supported.

Android
iOS

currentLiveTimestamp

Read Only • Type: null | number

The exact timestamp when the currently displayed video frame was sent from the server, based on the EXT-X-PROGRAM-DATE-TIME tag in the livestream metadata. If this metadata is missing, this property will return null.

Android
iOS

currentOffsetFromLive

Read Only • Type: null | number

Float value indicating the latency of the live stream in seconds. If a livestream doesn't have the required metadata, this will return null.

Android
iOS
tvOS
Web

currentTime

Type: number

Float value indicating the current playback time in seconds.

If the player is not yet playing, this value indicates the time position at which playback will begin once the play() method is called.

Setting currentTime to a new value seeks the player to the given time.

Android
iOS
tvOS
Web

duration

Read Only • Type: number

Float value indicating the duration of the current video in seconds.

Android
iOS
tvOS
Web

isLive

Read Only • Type: boolean

Boolean value indicating whether the player is currently playing a live stream.

Android
iOS
tvOS
Web

loop

Type: boolean • Default: false

Determines whether the player should automatically replay after reaching the end of the video.

Android
iOS
tvOS
Web

muted

Type: boolean • Default: false

Boolean value whether the player is currently muted. Setting this property to true/false will mute/unmute the player.

Android
iOS
tvOS
Web

playbackRate

Type: number • Default: 1.0

Float value between 0 and 16.0 indicating the current playback speed of the player.

Android
iOS
tvOS
Web

playing

Read Only • Type: boolean

Boolean value whether the player is currently playing.

Use play and pause methods to control the playback.

Android
iOS
tvOS
Web

preservesPitch

Type: boolean • Default: true

Boolean value indicating if the player should correct audio pitch when the playback speed changes.

Android
iOS

showNowPlayingNotification

Type: boolean • Default: false

Boolean value determining whether the player should show the now playing notification.

Android
iOS
tvOS
Web

status

Read Only • Type: VideoPlayerStatus

Indicates the current status of the player.

iOS
Android

staysActiveInBackground

Type: boolean • Default: false

Determines whether the player should continue playing after the app enters the background.

Android
iOS

subtitleTrack

Type: null | SubtitleTrack • Default: null

Specifies the subtitle track which is currently displayed by the player. null when no subtitles are displayed.

To ensure a valid subtitle track, always assign one of the subtitle tracks from the availableSubtitleTracks array.

iOS

targetOffsetFromLive

Type: number

Float value indicating the time offset from the live in seconds.

Android
iOS
tvOS
Web

timeUpdateEventInterval

Type: number • Default: 0

Float value indicating the interval in seconds at which the player will emit the timeUpdate event. When the value is equal to 0, the event will not be emitted.

Android
iOS
tvOS
Web

volume

Type: number • Default: 1.0

Float value between 0 and 1.0 representing the current volume. Muting the player doesn't affect the volume. In other words, when the player is muted, the volume is the same as when unmuted. Similarly, setting the volume doesn't unmute the player.

VideoPlayer Methods

iOS

generateThumbnailsAsync(times)

ParameterType
timesnumber | number[]

Generates thumbnails from the currently played asset. The thumbnails are references to native images, thus they can be used as a source of the Image component from expo-image.

Android
iOS
tvOS
Web

pause()

Pauses the player.

Returns:

void

Android
iOS
tvOS
Web

play()

Resumes the player.

Returns:

void

Android
iOS
tvOS
Web

replace(source)

ParameterType
sourceVideoSource

Replaces the current source with a new one.

Returns:

void

Android
iOS
tvOS
Web

replay()

Seeks the playback to the beginning.

Returns:

void

Android
iOS
tvOS
Web

seekBy(seconds)

ParameterType
secondsnumber

Seeks the playback by the given number of seconds.

Returns:

void

iOS

VideoThumbnail

Type: Class extends SharedRef<'image'>

Represents a video thumbnail that references a native image. Instances of this class can be passed as a source to the Image component from expo-image.

VideoThumbnail Properties

iOS

actualTime

Type: number

The time in seconds at which the thumbnail was actually generated.

Android
iOS
tvOS
Web

height

Type: number

Height of the created thumbnail.

Android
iOS
tvOS
Web

nativeRefType

Type: string

The type of the native reference.

Android
iOS
tvOS
Web

requestedTime

Type: number

The time in seconds at which the thumbnail was to be created.

Android
iOS
tvOS
Web

width

Type: number

Width of the created thumbnail.

Methods

Android
iOS
tvOS
Web

Video.createVideoPlayer(source)

ParameterType
sourceVideoSource

Creates a direct instance of VideoPlayer that doesn't release automatically.

For most use cases you should use the useVideoPlayer hook instead. See the Using the VideoPlayer Directly section for more details.
Returns:

VideoPlayer

Android
iOS
Web

Video.isPictureInPictureSupported()

Returns whether the current device supports Picture in Picture (PiP) mode.

Note: All major web browsers support Picture in Picture (PiP) mode except Firefox. For more information, see MDN web docs.

Returns:

boolean

A boolean which is true if the device supports PiP mode, and false otherwise.

Types

Android
iOS
tvOS
Web

AudioMixingMode

Literal Type: string

Specifies the audio mode that the player should use. Audio mode is set on per-app basis, if there are multiple players playing and have different a AudioMode specified, the highest priority mode will be used. Priority order: 'doNotMix' > 'auto' > 'duckOthers' > 'mixWithOthers'.

  • mixWithOthers: The player will mix its audio output with other apps.
  • duckOthers: The player will lower the volume of other apps if any of the active players is outputting audio.
  • auto: The player will allow other apps to keep playing audio only when it is muted. On iOS it will always interrupt other apps when showNowPlayingNotification is true due to system requirements.
  • doNotMix: The player will pause playback in other apps, even when it's muted.

On iOS, the Now Playing notification is dependent on the audio mode. If the audio mode is different from doNotMix or auto this feature will not work.

Acceptable values are: 'mixWithOthers' | 'duckOthers' | 'auto' | 'doNotMix'

Android
iOS

BufferOptions

Specifies buffer options which will be used by the player when buffering the video.

NameTypeDescription
maxBufferBytes
(optional)
number | null
Only for: 
Android

The maximum number of bytes that the player can buffer from the network. When 0 the player will automatically decide appropriate buffer size.

Default:0
minBufferForPlayback
(optional)
number
Only for: 
Android

Minimum duration of the buffer in seconds required to continue playing after the player has been paused or started buffering.

This property will be ignored if preferredForwardBufferDuration is lower.

Default:2
preferredForwardBufferDuration
(optional)
number
Only for: 
Android
iOS

The duration in seconds which determines how much media the player should buffer ahead of the current playback time.

On iOS when set to 0 the player will automatically decide appropriate buffer duration.

Equivalent to AVPlayerItem.preferredForwardBufferDuration.

Default:Android: 20, iOS: 0
prioritizeTimeOverSizeThreshold
(optional)
boolean
Only for: 
Android

A Boolean value which determines whether the player should prioritize time over size when buffering media.

Default:false
waitsToMinimizeStalling
(optional)
boolean
Only for: 
iOS

A Boolean value that indicates whether the player should automatically delay playback in order to minimize stalling.

Equivalent to AVPlayer.automaticallyWaitsToMinimizeStalling.

Default:true
Android
iOS
tvOS
Web

DRMOptions

Specifies DRM options which will be used by the player while loading the video.

NameTypeDescription
base64CertificateData
(optional)
string
Only for: 
iOS

Specifies the base64 encoded certificate data for the FairPlay DRM. When this property is set, the certificateUrl property is ignored.

certificateUrl
(optional)
string
Only for: 
iOS

Specifies the certificate URL for the FairPlay DRM.

contentId
(optional)
string
Only for: 
iOS

Specifies the content ID of the stream.

headers
(optional)
Record<string, string>

Determines headers sent to the license server on license requests.

licenseServerstring

Determines the license server URL.

multiKey
(optional)
boolean
Only for: 
Android

Specifies whether the DRM is a multi-key DRM.

typeDRMType

Determines which type of DRM to use.

Android
iOS
tvOS
Web

DRMType

Literal Type: string

Specifies which type of DRM to use:

  • Android supports ClearKey, PlayReady and Widevine.
  • iOS supports FairPlay.

Acceptable values are: 'clearkey' | 'fairplay' | 'playready' | 'widevine'

Android
iOS
tvOS
Web

MutedChangeEventPayload

Data delivered with the mutedChange event.

NameTypeDescription
mutedboolean

Boolean value whether the player is currently muted.

oldMuted
(optional)
boolean

Previous value of the isMuted property.

Android
iOS
tvOS
Web

PlaybackRateChangeEventPayload

Data delivered with the playbackRateChange event.

NameTypeDescription
oldPlaybackRate
(optional)
number

Previous value of the playbackRate property.

playbackRatenumber

Float value indicating the current playback speed of the player.

Android
iOS
tvOS
Web

PlayerError

Contains information about any errors that the player encountered during the playback

NameTypeDescription
messagestring-
Android
iOS
tvOS
Web

PlayingChangeEventPayload

Data delivered with the playingChange event.

NameTypeDescription
isPlayingboolean

Boolean value whether the player is currently playing.

oldIsPlaying
(optional)
boolean

Previous value of the isPlaying property.

Android
iOS
tvOS
Web

SourceChangeEventPayload

Data delivered with the sourceChange event.

NameTypeDescription
oldSource
(optional)
VideoSource

Previous source of the player.

sourceVideoSource

New source of the player.

Android
iOS
tvOS
Web

StatusChangeEventPayload

Data delivered with the statusChange event.

NameTypeDescription
error
(optional)
PlayerError

Error object containing information about the error that occurred.

oldStatus
(optional)
VideoPlayerStatus

Previous status of the player.

statusVideoPlayerStatus

New status of the player.

Android
iOS
tvOS
Web

TimeUpdateEventPayload

Data delivered with the timeUpdate event, contains information about the current playback progress.

NameTypeDescription
bufferedPositionnumber
Only for: 
Android
iOS

Float value indicating how far the player has buffered the video in seconds. Same as the bufferedPosition property.

currentLiveTimestampnumber | null
Only for: 
Android
iOS

The exact timestamp when the currently displayed video frame was sent from the server, based on the EXT-X-PROGRAM-DATE-TIME tag in the livestream metadata. Same as the currentLiveTimestamp property.

currentOffsetFromLivenumber | null
Only for: 
Android
iOS

Float value indicating the latency of the live stream in seconds. Same as the currentOffsetFromLive property.

currentTimenumber

Float value indicating the current playback time in seconds. Same as the currentTime property.

Android
iOS
tvOS
Web

VideoContentFit

Literal Type: string

Describes how a video should be scaled to fit in a container.

  • contain: The video maintains its aspect ratio and fits inside the container, with possible letterboxing/pillarboxing.
  • cover: The video maintains its aspect ratio and covers the entire container, potentially cropping some portions.
  • fill: The video stretches/squeezes to completely fill the container, potentially causing distortion.

Acceptable values are: 'contain' | 'cover' | 'fill'

Android
iOS

VideoMetadata

Contains information that will be displayed in the now playing notification when the video is playing.

NameTypeDescription
artist
(optional)
string
Only for: 
Android
iOS

Secondary text that will be displayed under the title.

artwork
(optional)
string
Only for: 
Android
iOS

The uri of the video artwork.

title
(optional)
string
Only for: 
Android
iOS

The title of the video.

Android
iOS
tvOS
Web

VideoPlayerEvents

Handlers for events which can be emitted by the player.

NameTypeDescription
availableSubtitleTracksChange(payload: AvailableSubtitleTracksChangeEventPayload) => void

Handler for an event emitted when the available subtitle tracks change.

mutedChange(payload: MutedChangeEventPayload) => void

Handler for an event emitted when the muted property of the player changes

playbackRateChange(payload: PlaybackRateChangeEventPayload) => void

Handler for an event emitted when the playbackRate property of the player changes.

playingChange(payload: PlayingChangeEventPayload) => void

Handler for an event emitted when the player starts or stops playback.

playToEnd() => void

Handler for an event emitted when the player plays to the end of the current source.

sourceChange(payload: SourceChangeEventPayload) => void

Handler for an event emitted when the current media source of the player changes.

statusChange(payload: StatusChangeEventPayload) => void

Handler for an event emitted when the status of the player changes.

subtitleTrackChange(payload: SubtitleTrackChangeEventPayload) => void

Handler for an event emitted when the current subtitle track changes.

timeUpdate(payload: TimeUpdateEventPayload) => void

Handler for an event emitted in a given interval specified by the timeUpdateEventInterval.

volumeChange(payload: VolumeChangeEventPayload) => void

Handler for an event emitted when the volume of muted property of the player changes.

Android
iOS
tvOS
Web

VideoPlayerStatus

Literal Type: string

Describes the current status of the player.

  • idle: The player is not playing or loading any videos.
  • loading: The player is loading video data from the provided source
  • readyToPlay: The player has loaded enough data to start playing or to continue playback.
  • error: The player has encountered an error while loading or playing the video.

Acceptable values are: 'idle' | 'loading' | 'readyToPlay' | 'error'

Android
iOS
tvOS
Web

VideoSource

Type: string or number or null or object shaped as below:


NameTypeDescription
assetId
(optional)
number

The asset ID of a local video asset, acquired with the require function. This property is exclusive with the uri property. When both are present, the assetId will be ignored.

drm
(optional)
DRMOptions

Specifies the DRM options which will be used by the player while loading the video.

headers
(optional)
Record<string, string>
Only for: 
Android
iOS

Specifies headers sent with the video request.

For DRM license headers use the headers field of DRMOptions.

metadata
(optional)
VideoMetadata
Only for: 
Android
iOS

Specifies information which will be displayed in the now playing notification. When undefined the player will display information contained in the video metadata.

uri
(optional)
string

The URI of the video.

This property is exclusive with the assetId property. When both are present, the assetId will be ignored.

Android
iOS
tvOS
Web

VolumeChangeEventPayload

Data delivered with the volumeChange event.

NameTypeDescription
oldVolume
(optional)
number

Previous value of the volume property.

volumenumber

Float value indicating the current volume of the player.