* feat: android cache * docs: bufferSize * Revert "docs: bufferSize" This reverts commit 09637b134e121b9ca3ffd78f2f5bc657319ed67a. * fix: cacheSize name * feat: singleton android cache * fix: local cache resolve * fix: lint * docs: android cache * chore: merge conflict * fix: lint * chore: useCache button * chore: fix state in the sample * fix: cache factory * chore: update cacheSizeMB docs --------- Co-authored-by: Olivier Bouillet <freeboub@gmail.com>
239 lines
5.6 KiB
TypeScript
239 lines
5.6 KiB
TypeScript
import type {ISO639_1} from './language';
|
|
import type {ReactVideoEvents} from './events';
|
|
import type {StyleProp, ViewProps, ViewStyle} from 'react-native';
|
|
import type VideoResizeMode from './ResizeMode';
|
|
import type FilterType from './FilterType';
|
|
|
|
export type Headers = Record<string, string>;
|
|
|
|
export type EnumValues<T extends string | number> = T extends string
|
|
? `${T}` | T
|
|
: T;
|
|
|
|
export type ReactVideoSourceProperties = {
|
|
uri?: string;
|
|
isNetwork?: boolean;
|
|
isAsset?: boolean;
|
|
shouldCache?: boolean;
|
|
type?: string;
|
|
mainVer?: number;
|
|
patchVer?: number;
|
|
headers?: Headers;
|
|
startPosition?: number;
|
|
cropStart?: number;
|
|
cropEnd?: number;
|
|
title?: string;
|
|
subtitle?: string;
|
|
description?: string;
|
|
customImageUri?: string;
|
|
};
|
|
|
|
export type ReactVideoSource = Readonly<
|
|
Omit<ReactVideoSourceProperties, 'uri'> & {
|
|
uri?: string | NodeRequire;
|
|
}
|
|
>;
|
|
|
|
export type DebugConfig = Readonly<{
|
|
enable?: boolean;
|
|
thread?: boolean;
|
|
}>;
|
|
|
|
export enum DRMType {
|
|
WIDEVINE = 'widevine',
|
|
PLAYREADY = 'playready',
|
|
CLEARKEY = 'clearkey',
|
|
FAIRPLAY = 'fairplay',
|
|
}
|
|
|
|
export type Drm = Readonly<{
|
|
type?: DRMType;
|
|
licenseServer?: string;
|
|
headers?: Headers;
|
|
contentId?: string; // ios
|
|
certificateUrl?: string; // ios
|
|
base64Certificate?: boolean; // ios default: false
|
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
getLicense?: (
|
|
spcBase64: string,
|
|
contentId: string,
|
|
licenseUrl: string,
|
|
loadedLicenseUrl: string,
|
|
) => void; // ios
|
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
}>;
|
|
|
|
export type BufferConfig = {
|
|
minBufferMs?: number;
|
|
maxBufferMs?: number;
|
|
bufferForPlaybackMs?: number;
|
|
bufferForPlaybackAfterRebufferMs?: number;
|
|
backBufferDurationMs?: number; // Android
|
|
maxHeapAllocationPercent?: number;
|
|
minBackBufferMemoryReservePercent?: number;
|
|
minBufferMemoryReservePercent?: number;
|
|
cacheSizeMB?: number;
|
|
};
|
|
|
|
export enum SelectedTrackType {
|
|
SYSTEM = 'system',
|
|
DISABLED = 'disabled',
|
|
TITLE = 'title',
|
|
LANGUAGE = 'language',
|
|
INDEX = 'index',
|
|
}
|
|
|
|
export type SelectedTrack = {
|
|
type: SelectedTrackType;
|
|
value?: string | number;
|
|
};
|
|
|
|
export enum SelectedVideoTrackType {
|
|
AUTO = 'auto',
|
|
DISABLED = 'disabled',
|
|
RESOLUTION = 'resolution',
|
|
INDEX = 'index',
|
|
}
|
|
|
|
export type SelectedVideoTrack = {
|
|
type: SelectedVideoTrackType;
|
|
value?: number;
|
|
};
|
|
|
|
export type SubtitleStyle = {
|
|
fontSize?: number;
|
|
paddingTop?: number;
|
|
paddingBottom?: number;
|
|
paddingLeft?: number;
|
|
paddingRight?: number;
|
|
opacity?: number;
|
|
};
|
|
|
|
export enum TextTrackType {
|
|
SUBRIP = 'application/x-subrip',
|
|
TTML = 'application/ttml+xml',
|
|
VTT = 'text/vtt',
|
|
}
|
|
|
|
export type TextTracks = {
|
|
title: string;
|
|
language: ISO639_1;
|
|
type: TextTrackType;
|
|
uri: string;
|
|
}[];
|
|
|
|
export type TextTrackSelectionType =
|
|
| 'system'
|
|
| 'disabled'
|
|
| 'title'
|
|
| 'language'
|
|
| 'index';
|
|
|
|
export type SelectedTextTrack = Readonly<{
|
|
type: TextTrackSelectionType;
|
|
value?: string | number;
|
|
}>;
|
|
|
|
export type AudioTrackSelectionType =
|
|
| 'system'
|
|
| 'disabled'
|
|
| 'title'
|
|
| 'language'
|
|
| 'index';
|
|
|
|
export type SelectedAudioTrack = Readonly<{
|
|
type: AudioTrackSelectionType;
|
|
value?: string | number;
|
|
}>;
|
|
|
|
export type Chapters = {
|
|
title: string;
|
|
startTime: number;
|
|
endTime: number;
|
|
uri?: string;
|
|
};
|
|
|
|
export enum FullscreenOrientationType {
|
|
ALL = 'all',
|
|
LANDSCAPE = 'landscape',
|
|
PORTRAIT = 'portrait',
|
|
}
|
|
|
|
export enum IgnoreSilentSwitchType {
|
|
INHERIT = 'inherit',
|
|
IGNORE = 'ignore',
|
|
OBEY = 'obey',
|
|
}
|
|
|
|
export enum MixWithOthersType {
|
|
INHERIT = 'inherit',
|
|
MIX = 'mix',
|
|
DUCK = 'duck',
|
|
}
|
|
|
|
export enum PosterResizeModeType {
|
|
CONTAIN = 'contain',
|
|
CENTER = 'center',
|
|
COVER = 'cover',
|
|
NONE = 'none',
|
|
REPEAT = 'repeat',
|
|
STRETCH = 'stretch',
|
|
}
|
|
|
|
export type AudioOutput = 'speaker' | 'earpiece';
|
|
|
|
export interface ReactVideoProps extends ReactVideoEvents, ViewProps {
|
|
source?: ReactVideoSource;
|
|
drm?: Drm;
|
|
style?: StyleProp<ViewStyle>;
|
|
adTagUrl?: string;
|
|
audioOutput?: AudioOutput; // Mobile
|
|
automaticallyWaitsToMinimizeStalling?: boolean; // iOS
|
|
bufferConfig?: BufferConfig; // Android
|
|
chapters?: Chapters[]; // iOS
|
|
contentStartTime?: number; // Android
|
|
controls?: boolean;
|
|
currentPlaybackTime?: number; // Android
|
|
disableFocus?: boolean;
|
|
disableDisconnectError?: boolean; // Android
|
|
filter?: EnumValues<FilterType>; // iOS
|
|
filterEnabled?: boolean; // iOS
|
|
focusable?: boolean; // Android
|
|
fullscreen?: boolean; // iOS
|
|
fullscreenAutorotate?: boolean; // iOS
|
|
fullscreenOrientation?: EnumValues<FullscreenOrientationType>; // iOS
|
|
hideShutterView?: boolean; // Android
|
|
ignoreSilentSwitch?: EnumValues<IgnoreSilentSwitchType>; // iOS
|
|
minLoadRetryCount?: number; // Android
|
|
maxBitRate?: number;
|
|
mixWithOthers?: EnumValues<MixWithOthersType>; // iOS
|
|
muted?: boolean;
|
|
paused?: boolean;
|
|
pictureInPicture?: boolean; // iOS
|
|
playInBackground?: boolean;
|
|
playWhenInactive?: boolean; // iOS
|
|
poster?: string;
|
|
posterResizeMode?: EnumValues<PosterResizeModeType>;
|
|
preferredForwardBufferDuration?: number; // iOS
|
|
preventsDisplaySleepDuringVideoPlayback?: boolean;
|
|
progressUpdateInterval?: number;
|
|
rate?: number;
|
|
repeat?: boolean;
|
|
reportBandwidth?: boolean; //Android
|
|
resizeMode?: EnumValues<VideoResizeMode>;
|
|
selectedAudioTrack?: SelectedTrack;
|
|
selectedTextTrack?: SelectedTrack;
|
|
selectedVideoTrack?: SelectedVideoTrack; // android
|
|
subtitleStyle?: SubtitleStyle; // android
|
|
shutterColor?: string; // Android
|
|
textTracks?: TextTracks;
|
|
testID?: string;
|
|
trackId?: string; // Android
|
|
useTextureView?: boolean; // Android
|
|
useSecureView?: boolean; // Android
|
|
volume?: number;
|
|
localSourceEncryptionKeyScheme?: string;
|
|
debug?: DebugConfig;
|
|
allowsExternalPlayback?: boolean; // iOS
|
|
}
|