UNPKG

react-native-vlc-media-player

Version:

React native media player for video streaming and playing. Supports RTSP,RTMP and other protocols supported by VLC player

274 lines (232 loc) 5.4 kB
import type { Component } from "react"; import { StyleProp, ViewStyle } from "react-native"; /** * Video aspect ratio type */ export type PlayerAspectRatio = "16:9" | "1:1" | "4:3" | "3:2" | "21:9" | "9:16"; /** * Video resize mode */ export type PlayerResizeMode = "fill" | "contain" | "cover" | "none" | "scale-down"; /** * VLC Player source configuration options */ export interface VLCPlayerSource { /** * Media source URI to render */ uri: string; /** * VLC Player initialization type * * - Default configuration: `1` * - Custom configuration: `2` * * See `initOptions` for more information * * @default 1 */ initType?: 1 | 2; /** * https://wiki.videolan.org/VLC_command-line_help/ * * VLC Player initialization options * * `["--network-caching=50", "--rtsp-tcp"]` * * @default ["--input-repeat=1000"] */ initOptions?: string[]; } /** * Represents a track type in playback */ export type Track = { /** * Track identification */ id: number; /** * Track name */ name: string; }; /** * Represents a full playback information */ export type VideoInfo = { /** * Total playback duration */ duration: number; /** * Playback target */ target: number; /** * Total playback video size */ videoSize: Record<"width" | "height", number>; /** * List of playback audio tracks */ audioTracks: Track[]; /** * List of playback text tracks */ textTracks: Track[]; }; type OnPlayingEventProps = Pick<VideoInfo, "duration" | "target"> & { seekable: boolean; }; type OnProgressEventProps = Pick<VideoInfo, "duration" | "target"> & { /** * Current playback time */ currentTime: number; /** * Current playback position */ position: number; /** * Remaining time to end playback */ remainingTime: number; }; type SimpleCallbackEventProps = Pick<VideoInfo, "target">; export type VLCPlayerCallbackProps = { /** * Called when media starts playing returns * * @param event - Event properties */ onPlaying?: (event: OnPlayingEventProps) => void; /** * Callback containing position as a fraction, and duration, currentTime and remainingTime in seconds * * @param event - Event properties */ onProgress?: (event: OnProgressEventProps) => void; /** * Called when media is paused * * @param event - Event properties */ onPaused?: (event: SimpleCallbackEventProps) => void; /** * Called when media is stoped * * @param event - Event properties */ onStopped?: (event: SimpleCallbackEventProps) => void; /** * Called when media is buffering * * @param event - Event properties */ onBuffering?: (event: SimpleCallbackEventProps) => void; /** * Called when media playing ends * * @param event - Event properties */ onEnd?: (event: SimpleCallbackEventProps) => void; /** * Called when an error occurs whilst attempting to play media * * @param event - Event properties */ onError?: (event: SimpleCallbackEventProps) => void; /** * Called when video info is loaded, Callback containing `VideoInfo` * * @param event - Event properties */ onLoad?: (event: VideoInfo) => void; }; export type VLCPlayerProps = VLCPlayerCallbackProps & { /** * Object that contains the uri of a video or song to play eg */ source: VLCPlayerSource; /** * local subtitle file path,if you want to hide subtitle, * you can set this to an empty subtitle file, * current we don't support a hide subtitle prop. */ subtitleUri?: string; /** * Set to `true` or `false` to pause or play the media * @default false */ paused?: boolean; /** * Set to `true` or `false` to loop the media * @default false */ repeat?: boolean; /** * Set the playback rate of the player * @default 1 */ rate?: number; /** * Set position to seek between 0 and 1 * (0 being the start, 1 being the end, use position from the progress object) */ seek?: number; /** * Set the volume of the player */ volume?: number; /** * Set to `true` or `false` to mute the player * @default false */ muted?: boolean; /** * Set audioTrack id (number) (see onLoad callback VideoInfo.audioTracks) */ audioTrack?: number; /** * Set textTrack(subtitle) id (number) (see onLoad callback - VideoInfo.textTracks) */ textTrack?: number; /** * Set to `true` or `false` to allow playing in the background * @default false */ playInBackground?: boolean; /** * Video aspect ratio */ videoAspectRatio?: PlayerAspectRatio; /** * Set to `true` or `false` to enable auto aspect ratio * @default false */ autoAspectRatio?: boolean; /** * Set the behavior for the video size (fill, contain, cover, none, scale-down) */ resizeMode?: PlayerResizeMode; /** * React native view stylesheet styles */ style?: StyleProp<ViewStyle>; /** * Enables autoplay * * @default true */ autoplay?: boolean; }; /** * A component that can be used to show a playback */ declare class VLCPlayer extends Component<VLCPlayerProps> {} /** * A component that renders a playback with additional * features like fullscreen, controls, etc. */ declare class VlCPlayerView extends Component<any> {}