Node VLC Client 文档翻译
之乎者也 Lv3

Node VLC Client

npm NPM npm bundle size Travis (.org)

一个直观的库,通过使用 VLC 自己的 HTTP 接口(用 typescript 编写)通过简单的函数调用来控制 VLC。几乎涵盖了所有可以通过HTTP接口控制的VLC功能

Features

  • 播放、暂停、搜索
  • 获取和设置时间、长度、音量、随机播放、重复、循环
  • 播放列表操作(添加、删除、下一个、上一个)
  • 获取和设置音频、字幕延迟
  • 更改字幕和音轨
  • 添加/更改视频、音频、子流
  • 请求专辑封面
  • 很多辅助方法
  • 浏览文件
  • 自动轮询更改
  • 音频均衡器,效果器
  • 网络上的 VLC 实例发现

安装

1
npm install --save vlc-client

用法

Typescript

1
2
3
4
5
6
7
8
import * as VLC from "vlc-client"

const vlc = new VLC.Client({
ip: "localhost",
port: 8080,
username: "steve_aoki", //username is optional
password: "edm"
});

Javascript

1
2
3
4
5
6
7
8
const VLC = require("vlc-client");

const vlc = new VLC.Client({
ip: "localhost",
port: 8080,
username: "steve_aoki", //username is optional
password: "edm"
});

All methods on the Client class are async

1
2
3
4
5
await vlc.isPlaying();

await vlc.pause();

await vlc.setTime(3100);

API

内容

VLC.Client

1
new VLC.Client(options);

options:

  • ip: the ip of the computer where VLC is running
  • port: port of VLC web interface
  • username: username of VLC web interface
  • password: password of VLC web interface

Methods

Actions

.play()

如果暂停则继续播放

.pause()

暂停播放

.togglePlay()

播放时暂停,暂停时恢复播放

.stop()

停止播放

.next()

播放播放列表中的下一个媒体

.previous()

播放播放列表中的上一个媒体

.emptyPlaylist()

从播放列表中删除所有条目

.removeFromPlaylist(id: number)

从多列表中删除具有给定 id 的项目。
要获取 ID,请参阅 .getPlaylist().

.playFromPlaylist(entryId: number)

按 id 播放播放列表中的条目。
要获取 ID,请参阅 .getPlaylist().

.addToPlaylist(uri: string)

使用 URI 将文件添加到播放列表。可以是文件、http、rtsp 等。任何 VLC 都支持。

.playFile(uri: string, options)

通过指定 URI 播放文件。将文件添加到播放列表并立即播放。只能设置 noaudio/novideo 选项之一。

options:

  • noaudio: boolean
  • novideo: boolean
  • wait: boolean -如果设置为 true,promise 只会在 vlc 打开文件后返回。
  • timeout: number - 以毫秒为单位设置超时等待vlc打开文件. Default = 3000

选项对象是可选的

.jumpForward(seconds: number)

按给定的秒数向前搜索播放

.jumpBackwards(seconds: number)

按给定秒数向后搜索

.toggleFullscreen()

切换 VLC 是否全屏

.increaseVolume(increaseBy: number)

通过给定的 int 增加音量,范围 0-100

.decreaseVolume()

按给定的 int 减小音量,范围 0-100

Getters

.status() => VlcStatus

返回一个对象,其中包含 VLC 提供的所有信息(播放列表信息除外)

.meta() => VlcMeta

返回一个对象,其中包含有关当前媒体播放的各种信息。

.getFileName() => string

返回当前播放的媒体文件名

.isPlaying()

如果正在播放,则返回真/假

.isPaused()

如果暂停则返回真/假

.isStopped()

如果停止则返回真/假

.isFullscreen()

如果 VLC 全屏,则返回真/假

.getPlaybackState()

vlc 的状态(播放/暂停/停止)作为字符串

.getTime()

播放时间(秒)

.getProgress()

媒体播放进度从0-100

.getLength()

当前媒体播放的时长(以秒为单位)

.getVolume()

获取 0-100 范围内的音量

.getVolumeRaw()

获取当前音量,因为 VLC 从 0-512 表示它,其中 256 是 100%,512 是 200%

.getAudioDelay()

视频流的音频延迟(以秒为单位)

.getSubtitleDelay()

视频流的字幕延迟(以秒为单位)

.getPlaylist() => [PlaylistEntry]

获取播放列表中的条目

.getAspectRatio()

以字符串形式返回当前纵横比

.getSubtitleTracks() => [SubtitleTrack]

获取字幕轨道。

.getAudioTracks() => [AudioTrack]

获取音轨。

.getVideoTracks() => [VideoTrack]

获取视频轨道。

.getTracks() => Tracks

获取所有曲目/流,包括视频、音频、字幕。

.getChapters() => number[]

返回代表电影所有章节的数字数组。通常从 0 开始。

.getCurrentChapter() => number

返回正在播放的视频的当前章节。

.availableAspectRations(): string[]

以字符串数组的形式返回同步所有可用纵横比的数组。

.isLooping() => boolean

如果 VLC 的循环功能被激活,则返回 true

.isRandom() => boolean

如果播放列表中的项目以随机顺序播放,则返回 true。随机与随机播放相同。

.isRepeating() => boolean

如果重复打开,则返回 true。

.getPlaybackRate() => number

播放速率。正常速度为 1。范围 0.25 - 4。

.getAlbumArt(playlistEntryId?: number) => AlbumArtResult

返回播放列表中项目的专辑封面。
如果未指定 playlistEntryId,则返回当前正在播放的项目的专辑封面。
如果媒体没有专辑封面,则返回 null

Setters

.setTime(time: number)

设置播放时间。时间 arg 应该是一个 int。

.setProgress(progress: number)

设置媒体播放进度 0-100 范围。进度可以是带小数的数字。

.setVolume(volume: number)

设置音量范围 0-100。

.setVolumeRaw()

设置音量为 VLC 代表它 0-512

.setFullscreen(val: boolean)

设置 VLC 是否应该全屏

.setAspectRation(ar: string)

设置视频的纵横比。要获取可用纵横比的列表,请使用**.availableAspectRations()**.

.setRepeating(shouldRepeat: boolean)

设置是否应重复播放列表条目。

.setLooping(shouldLoop: boolean)

设置是否应激活 VLC 的循环功能

.setRandom(random: boolean)

设置是否应以随机顺序播放播放列表条目

.setPlaybackRate(rate: number)

播放速率。正常速度为 1。范围 0.25 - 4

.setSubtitleDelay(delay: number)

设置视频轨道的字幕轨道的延迟秒数,可以有小数。

.setAudioDelay(delay: number)

以秒为单位设置音频轨道与视频轨道的延迟,可以有小数。

.setChapter(chapter: number)

设置电影播放的章节。
See .getChapters

.setAudioTrack(trackId: number)

选择音轨。从中获取音轨 ID .getTracks() or .getAudioTracks.

.setSubtitleTrack(trackId: number)

选择子轨道。从 .getTracks() or .getSubtitleTracks.

.setVideoTrack(trackId: number)

选择视频轨道。从中获取视频轨道 ID .getTracks() or .getVideoTracks.

Types

PlaylistEntry

1
2
3
4
5
6
7
interface PlaylistEntry{
name: string;
id: number;
duration: number;
uri: string;
isCurrent: boolean;
}

Tracks

1
2
3
4
5
interface Tracks {
video: VideoTrack[],
audio: AudioTrack[],
subtitle: SubtitleTrack[],
}

VideoTrack

1
2
3
4
5
6
7
8
9
10
11
interface VideoTrack {
streamIndex: number,
Type: "Audio" | "Video" | "Subtitle",
Language?: string,
Codec?: string,
Frame_rate: string,
Decoded_format: string,
Video_resolution: string,
Buffer_dimensions: string,
Orientation: string,
}

AudioTrack

1
2
3
4
5
6
7
8
9
interface AudioTrack {
streamIndex: number,
Type: "Audio" | "Video" | "Subtitle",
Language?: string,
Codec?: string,
Channels: string,
Bits_per_sample: string,
Sample_rate: string
}

SubtitleTrack

1
2
3
4
5
6
interface SubtitleTrack {
streamIndex: number,
Type: "Audio" | "Video" | "Subtitle",
Language?: string,
Codec?: string,
}

AlbumArtResult

1
2
3
4
interface AlbumArtResult {
contentType: string, // image/jpeg , image/png , etc
buffer: Buffer, // album art image as buffer
}

VlcMeta

1
2
3
4
5
6
7
8
interface VlcMeta{
showName?: string, //optional
seasonNumber?: string, //optional
episodeNumber?: string, //optional
filename:string,
[key: string]: string,
... // much more properties
}