Skip to main content

Player Configuration

PlaybackProperties

The following properties are available for configuring Android playback behavior:

PropertyTypeDescription
preferredInitialBufferDurationMsnumberDuration of media that must be buffered before playback starts or resumes after a user action (e.g. seek), in milliseconds.
preferredMinBufferDurationMsnumberMinimum duration of media the player will attempt to keep buffered at all times, in milliseconds.
preferredMaxBufferDurationMsnumberMaximum duration of media the player will attempt to buffer, in milliseconds.
preferredBufferDurationAfterRebufferMsnumberDuration of media that must be buffered for playback to resume after a rebuffer (caused by buffer depletion, not a user action), in milliseconds.
preferredMinLoadableRetryCountMsnumberMinimum number of times to retry loading data before propagating the error.
autoPlayOnLoadbooleanWhether playback starts automatically when content is loaded.
initialStartTimeMillisnumberInitial start position for playback, in milliseconds.
preferredConnectTimeoutMsnumberConnection read timeout, in milliseconds.
preferredReadTimeoutMsnumberMinimum number of times to retry a load before a load error may be considered fatal.
asyncCodecProcessingbooleanEnables synchronization of codec interactions with asynchronous buffer queueing.
preferredInitialNetworkBandwidthnumberInitial network bandwidth estimate (in bits per second) used for optimal track selection on startup.
preferredMinDurationForQualityIncreaseMsnumberMinimum buffered duration required to switch to a higher quality track, in milliseconds. Default: 10000.
preferredMaxDurationForQualityDecreaseMsnumberMaximum buffered duration before switching to a lower quality track, in milliseconds. Default: 25000.
preferredMinDurationToRetainAfterDiscardMsnumberMinimum duration of lower quality media to retain when discarding during a quality upgrade. Default: 25000.
preferredBandwidthFractionnumberFraction of available bandwidth considered for track selection. Values below 1 account for estimator inaccuracies. Default: 0.7.
preferredMaxPlaybackRecoveryRetryCountnumberMaximum number of recovery attempts before a non-fatal error is propagated via onError.
monitorLiveStreambooleanEnables live stream monitoring to prevent the player from falling behind the media window.
tunnelingModebooleanEnables tunneled video playback for hardware-accelerated decoding on Android TV. Should only be enabled on TV platforms. Default: false.
monitorVFPObooleanEnables or disables VFPO (Video Frame Processing Offset Average) monitoring. Default: false.
vfpoMonitoringRangeIntRangeLower and upper VFPO thresholds used to trigger bitrate switching. Only applicable when monitorVFPO is true. Default: 15000...40000.
mediaSessionPlaybackActionsArray<number>Playback actions permitted externally via Android's MediaSession API (e.g. Google Assistant).
preferredTargetLiveOffsetMsnumberTarget offset from the live edge, in milliseconds. Defaults to the player-calculated value if not set.
preferredMinPlaybackSpeednumberMinimum playback speed used when catching up to the live edge.
preferredMaxPlaybackSpeednumberMaximum playback speed used when catching up to the live edge.
preferredBufferedFractionToLiveEdgeForQualityIncreasenumberFraction of the duration to the live edge that must be buffered before switching to a higher quality track.
preferredMinLiveStartPositionnumberMinimum position from which playback is allowed to start, in milliseconds.
preferredSeekBackIncrementMsnumberPreferred seek-back increment, in milliseconds.
preferredSeekForwardIncrementMsnumberPreferred seek-forward increment, in milliseconds.
remoteStopLivePlaybackOnPausebooleanWhen true, stops live playback when a pause is triggered remotely. Default: false.
handleAudioFocusbooleanControls audio focus behavior. Set to false to allow simultaneous playback of multiple players. Default: true.
preferredFallbackMinPlaybackSpeednumberMinimum playback speed when none is defined by the media. Default: 0.97.
preferredFallbackMaxPlaybackSpeednumberMaximum playback speed when none is defined by the media. Default: 1.03.
preferredTargetLiveOffsetIncrementOnRebufferMsnumberIncrement applied to the target live offset each time the player rebuffers, in milliseconds.
preferredBufferTimeoutMsnumberMaximum duration the player attempts to buffer before throwing a timeout error. Prevents indefinite buffering.
preferredBackBufferDurationMsnumberDuration of media retained in the buffer prior to the current playback position, for fast backward seeking.
preferredRetainBackBufferFromKeyframebooleanWhen false, backward seeking is only fast if the back buffer contains a keyframe before the seek position.
preferredMinBitratenumberMinimum bitrate (in bits per second) considered for adaptive track selection on startup.
preferredMaxBitratenumberMaximum bitrate (in bits per second) considered for adaptive track selection on startup.
liveStreamMonitorConfigurationLiveStreamMonitorConfigurationConfiguration for the live stream monitoring logic.
recoverablePlayerErrorsArray<string>Error codes from which the player will attempt to recover. Send an empty array to disable recovery.

Usage

Basic Buffer Configuration

import { createPlayer, PlayerConfig } from '@quickplay/rn-qp-nxg-player';

const playbackProperties: PlaybackProperties = {
preferredInitialBufferDurationMs: 1500,
preferredMinBufferDurationMs: 3000,
preferredMaxBufferDurationMs: 15000,
preferredBufferDurationAfterRebufferMs: 3000,
preferredTargetLiveOffsetIncrementOnRebufferMs: 0,
};

const playerConfig: PlayerConfig = {
playbackProperties: playbackProperties,
// ... other configuration
};

const player = await createPlayer(playerConfig);

Thumbnail Preview

The player provides two APIs for retrieving thumbnail previews during seek, depending on the player type being used.

APIReturnsUsage
getThumbnailPreview(position)Base64 encoded image stringAll players except Brightcove
getThumbnailUrl(position)Remote image URLBrightcove player only
// For most players — returns a base64 image
const res = await player.getThumbnailPreview(currentPosition);
if (res != null) {
const base64Icon = `data:image/png;base64,${res}`;
setThumbnailImage(base64Icon);
}

// For Brightcove — returns a remote URL
const res = await player.getThumbnailUrl(currentPosition);
if (res != null) {
setThumbnailImage(res);
}