Node VLC Client
一个直观的库,通过使用 VLC 自己的 HTTP 接口(用 typescript 编写)通过简单的函数调用来控制 VLC。几乎涵盖了所有可以通过HTTP接口控制的VLC功能
Features
- 播放、暂停、搜索
- 获取和设置时间、长度、音量、随机播放、重复、循环
- 播放列表操作(添加、删除、下一个、上一个)
- 获取和设置音频、字幕延迟
- 更改字幕和音轨
- 添加/更改视频、音频、子流
- 请求专辑封面
- 很多辅助方法
- 浏览文件
- 自动轮询更改
- 音频均衡器,效果器
- 网络上的 VLC 实例发现
安装
1 | npm install --save vlc-client |
用法
Typescript
1 | import * as VLC from "vlc-client" |
Javascript
1 | const VLC = require("vlc-client"); |
All methods on the Client class are async
1 | await vlc.isPlaying(); |
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 | interface PlaylistEntry{ |
Tracks
1 | interface Tracks { |
VideoTrack
1 | interface VideoTrack { |
AudioTrack
1 | interface AudioTrack { |
SubtitleTrack
1 | interface SubtitleTrack { |
AlbumArtResult
1 | interface AlbumArtResult { |
VlcMeta
1 | interface VlcMeta{ |