UNPKG

vlc-client

Version:

Node HTTP client/remote implementation to control VLC with simple function calls using VLC's own HTTP interface

160 lines (159 loc) 5.19 kB
import { AlbumArtResult, AspectRatio, AudioTrack, ClientOptions, PlayFileOptions, PlaylistEntry, SubtitleTrack, Tracks, VideoTrack, VlcFile, VlcMeta, VlcStatus } from "./Types"; export default class Client { private readonly options; constructor(options: ClientOptions); play(): Promise<void>; pause(): Promise<void>; togglePlay(): Promise<void>; stop(): Promise<void>; next(): Promise<void>; previous(): Promise<void>; emptyPlaylist(): Promise<void>; removeFromPlaylist(id: number): Promise<void>; playFromPlaylist(entryId: number): Promise<void>; addToPlaylist(uri: string): Promise<void>; /** * Browse the remote computer running the VLC instance * for files in a given directory * @param dir The directory to browse */ browse(dir?: string): Promise<VlcFile[]>; /** * Play a file by specifing URI. Adds a * file to the playlist and plays it imediately. * Only one of the noaudio/novideo options can * be set. * @param options.wait Wait for vlc to open the file * @param options.timeout Time to wait for vlc to open the file */ playFile(uri: string, options?: PlayFileOptions): Promise<void>; jumpForward(seconds: number): Promise<void>; jumpBackwards(seconds: number): Promise<void>; toggleFullscreen(): Promise<void>; /** * Increase the volume 0-100 * @param increaseBy: int */ increaseVolume(increaseBy: number): Promise<void>; /** * Decrease the volume 0-100 * @param decreaseBy: int */ decreaseVolume(decreaseBy: number): Promise<void>; /** * Returns an object with all the info that VLC provides except playlist info */ status(): Promise<VlcStatus>; meta(): Promise<VlcMeta>; getFileName(): Promise<string>; isPlaying(): Promise<boolean>; isPaused(): Promise<boolean>; isStopped(): Promise<boolean>; isFullscreen(): Promise<boolean>; /** * State of vlc ( playing / paused / stop ) */ getPlaybackState(): Promise<string>; /** * Time of playback in seconds */ getTime(): Promise<number>; /** * Media progress from 0-100 */ getProgress(): Promise<number>; /** * Length of the current media playing in seconds */ getLength(): Promise<number>; /** * Get the volume in a 0-100 range */ getVolume(): Promise<number>; /** * Get the current volume as VLC represents it * from 0-512, where 256 is 100% and 512 is 200% */ getVolumeRaw(): Promise<number>; /** * Audio delay from video stream in seconds */ getAudioDelay(): Promise<number>; /** * Subtitle delay from video stream in seconds */ getSubtitleDelay(): Promise<number>; /** * Returns an array of PlaylistEntries */ getPlaylist(): Promise<PlaylistEntry[]>; getAspectRatio(): Promise<string>; getSubtitleTracks(): Promise<SubtitleTrack[]>; getAudioTracks(): Promise<AudioTrack[]>; getVideoTracks(): Promise<VideoTrack[]>; getChapters(): Promise<number[]>; getCurrentChapter(): Promise<number>; isLooping(): Promise<boolean>; isRandom(): Promise<boolean>; isRepeating(): Promise<boolean>; /** * Playback rate. Normal speed is 1. Range 0.25 - 4 */ getPlaybackRate(): Promise<number>; getAlbumArt(playlistEntryId?: number): Promise<AlbumArtResult>; /** * Get all tracks (video,audio,subs) */ getTracks(): Promise<Tracks>; /** * Returns an array with all the available aspect ratios */ availableAspectRations(): string[]; /** * Set time of playback in seconds */ setTime(time: number): Promise<void>; /** * Set progress of media playback 0-100 range * @param progress: float */ setProgress(progress: number): Promise<void>; /** * Set volume from 0-100 * @param volume:Int */ setVolume(volume: number): Promise<void>; /** * Set volume as VLC represents it 0-512 * @param volume:Int */ setVolumeRaw(volume: number): Promise<void>; setFullscreen(val: boolean): Promise<void>; setAspectRation(ar: AspectRatio): Promise<void>; setRepeating(shouldRepeat: boolean): Promise<void>; setLooping(shouldLoop: boolean): Promise<void>; setRandom(random: boolean): Promise<void>; /** * Playback rate. Normal speed is 1. Range 0.25 - 4 */ setPlaybackRate(rate: number): Promise<void>; setSubtitleDelay(delay: number): Promise<void>; setAudioDelay(delay: number): Promise<void>; setChapter(chapter: number): Promise<void>; /** * Select the audio track. Get the audio track id from .streams() */ setAudioTrack(trackId: number): Promise<void>; setSubtitleTrack(trackId: number): Promise<void>; setVideoTrack(trackId: number): Promise<void>; private sendCommand; private requestStatus; private requestPlaylist; private requestBrowse; private requestAlbumArt; private request; private log; private error; private static parsePlaylistEntries; private static validateOptions; }