Variable: MpvProperty
const MpvProperty: {
audioChannels: "audio-channels";
audioFilters: "af";
cacheBufferingState: "cache-buffering-state";
cacheSecs: "cache-secs";
chapter: "chapter";
chapterList: "chapter-list";
chapters: "chapters";
coreIdle: "core-idle";
demuxerCacheTime: "demuxer-cache-time";
duration: "duration";
eofReached: "eof-reached";
gaplessAudio: "gapless-audio";
idleActive: "idle-active";
loopFile: "loop-file";
loopPlaylist: "loop-playlist";
mediaTitle: "media-title";
metadata: "metadata";
metadataCount: "metadata/list/count";
mute: "mute";
pause: "pause";
pcmTap: "pcm-tap";
pcmTapFrame: "pcm-tap-frame";
pitch: "pitch";
playlist: "playlist";
playlistCount: "playlist-count";
playlistPos: "playlist-pos";
prefetchPlaylist: "prefetch-playlist";
replayGain: "replaygain";
replayGainClip: "replaygain-clip";
replayGainFallback: "replaygain-fallback";
replayGainPreamp: "replaygain-preamp";
seekable: "seekable";
seeking: "seeking";
speed: "speed";
streamLavfO: "stream-lavf-o";
timePos: "time-pos";
volume: "volume";
};
Defined in: packages/player/src/properties.ts:18
mpv property names this library observes, as string constants so that the
reducer's switch and the observation table can never drift apart.
Type Declaration
audioChannels
readonly audioChannels: "audio-channels" = 'audio-channels';
audio-channels — the output channel layout, UPDATE_AUDIO
(options/options.c, mpv 0.41.0) so it applies without a reload.
mpv 0.41.0 options.rst: "--audio-channels=<stereo|mono> — Force a
downmix to stereo or mono."
audioFilters
readonly audioFilters: "af" = 'af';
af — the audio filter chain (mpv options.rst "Audio Filters").
Runtime-settable: mpv lists af explicitly among the options it allows to
change during playback (options/options.c, the runtime-updatable name
table), and setting it rebuilds the filter chain in place rather than
reloading the file. The value is an ordered list; see
compileAudioFilters in filters.ts for the exact grammar, which is
mpv's own (options/m_option.c: print_obj_settings_list).
Setting it is atomic and validating: mpv parses the whole string first
(parse_obj_settings, which rejects an unknown filter name outright with
"Option af:
cacheBufferingState
readonly cacheBufferingState: "cache-buffering-state" = 'cache-buffering-state';
cache-buffering-state — int, "The percentage (0-100) of the cache fill
status until the player will unpause (related to paused-for-cache)"
(mpv 0.41.0 input.rst).
Read that sentence literally: it is not a general buffer gauge, it is
how close mpv is to resuming from a stall. See
PlayerState.bufferingPercent, which publishes it only while the player is
actually stalled.
cacheSecs
readonly cacheSecs: "cache-secs" = 'cache-secs';
cache-secs — double, "How many seconds of audio/video to prefetch if the
cache is active" (options.rst), range M_RANGE(0, DBL_MAX)
(demux/demux.c).
chapter
readonly chapter: "chapter" = 'chapter';
chapter — int64, RW. mpv 0.41.0 input.rst: "Current chapter number. The
number of the first chapter is 0. A value of -1 indicates that the current
playback position is before the start of the first chapter."
"Setting this property results in an absolute seek to the start of the chapter." Unavailable while nothing is loaded.
chapterList
readonly chapterList: "chapter-list" = 'chapter-list';
chapter-list — node, read as one MPV_FORMAT_NODE array of maps
(MpvClient.getChapters). mpv 0.41.0 input.rst documents the node shape
verbatim: "title" MPV_FORMAT_STRING, "time" MPV_FORMAT_DOUBLE.
chapters
readonly chapters: "chapters" = 'chapters';
chapters — int64, "Number of chapters" (input.rst).
coreIdle
readonly coreIdle: "core-idle" = 'core-idle';
core-idle — flag. true when no audio is being produced.
demuxerCacheTime
readonly demuxerCacheTime: "demuxer-cache-time" = 'demuxer-cache-time';
demuxer-cache-time — double, absolute demuxer cache end timestamp.
duration
readonly duration: "duration" = 'duration';
duration — double, seconds. Unavailable until the file is loaded.
eofReached
readonly eofReached: "eof-reached" = 'eof-reached';
eof-reached — flag. true once the end of the file was reached.
gaplessAudio
readonly gaplessAudio: "gapless-audio" = 'gapless-audio';
gapless-audio — choice no | yes | weak, "Try to play consecutive
audio files with no silence or disruption at the point of file change.
Default: weak" (mpv 0.41.0 options.rst).
This is an audio-output policy, not a demuxer one: it decides whether the
AO is kept open across a file change. See GaplessAudioMode in player.ts
for what each value costs.
idleActive
readonly idleActive: "idle-active" = 'idle-active';
idle-active — flag. true when nothing at all is loaded.
loopFile
readonly loopFile: "loop-file" = 'loop-file';
loop-file — "no", "inf" or a repeat count, read as a string.
loopPlaylist
readonly loopPlaylist: "loop-playlist" = 'loop-playlist';
loop-playlist — "no", "inf" or a repeat count, read as a string.
mediaTitle
readonly mediaTitle: "media-title" = 'media-title';
media-title — string, the best available title for the current entry.
metadata
readonly metadata: "metadata" = 'metadata';
metadata — the current entry's tag map.
Observed purely as a change edge: mpv's input.rst (0.35.1) says of this
property "Trying to retrieve this property as a raw string doesn't work",
so the delivered string is never interpreted. The typed map comes from one
MPV_FORMAT_NODE read of this same property (MpvClient.getPropertyMap),
which is the format the manual says to use.
metadataCount
readonly metadataCount: "metadata/list/count" = 'metadata/list/count';
metadata/list/count — int, "Number of metadata entries" (input.rst).
Read on demand; never observed (a tag value change leaves it equal, so it
is not a usable change signal).
mute
readonly mute: "mute" = 'mute';
mute — flag.
pause
readonly pause: "pause" = 'pause';
pause — flag. Playback intent; true means paused.
pcmTap
readonly pcmTap: "pcm-tap" = 'pcm-tap';
pcm-tap — int, read/write. Samples per channel mpv retains for the
visualizer; 0 (the default) disarms the tap.
Added by this project's libmpv patch (ARCHITECTURE §11, §21), so reading it
is also the availability probe: a libmpv without the patch answers
"property not found" and player.visualizer.capabilities.fft is false.
Identical on both platforms — it is the same source patch in both forks.
Setting it directly is legal and does nothing useful on its own: the
sampler thread that reads pcmTapFrame lives in native code and is
driven by player.visualizer.subscribe().
pcmTapFrame
readonly pcmTapFrame: "pcm-tap-frame" = 'pcm-tap-frame';
pcm-tap-frame — node, read-only. The newest retained window, as a map of
sample_rate / channels / frames / pts_us / seq plus samples, a
byte array of interleaved float32.
Listed for completeness; nothing in TypeScript reads it. It is consumed by the native sampler, which never lets the PCM cross into JavaScript.
pitch
readonly pitch: "pitch" = 'pitch';
pitch — double, M_RANGE(0.01, 100.0) (options/options.c, mpv 0.41.0).
mpv 0.41.0 options.rst: "Raise or lower the audio's pitch by the factor
given as parameter. Does not affect playback speed. Playing with an altered
pitch automatically inserts the scaletempo2 audio filter." Added upstream
in mpv 0.40, i.e. it exists on every binary this library pins.
An option, therefore also a property ("Most options can be set at runtime
via properties as well. Just remove the leading --", input.rst), which
is what makes it observable.
playlist
readonly playlist: "playlist" = 'playlist';
playlist — the whole queue as one node.
Read on demand through MpvClient.getPlaylistEntries() (one
MPV_FORMAT_NODE round-trip), never observed: the array would be a second
copy of mpv's own state crossing the bridge on every edit, and the cursor
(playlist-pos/playlist-count) is what state actually needs. See
PlaylistApi.entries.
playlistCount
readonly playlistCount: "playlist-count" = 'playlist-count';
playlist-count — int64, number of playlist entries.
playlistPos
readonly playlistPos: "playlist-pos" = 'playlist-pos';
playlist-pos — int64, -1 when no entry is current.
prefetchPlaylist
readonly prefetchPlaylist: "prefetch-playlist" = 'prefetch-playlist';
prefetch-playlist — flag, "Prefetch next playlist entry while playback of
the current entry is ending (default: no)" (options.rst).
replayGain
readonly replayGain: "replaygain" = 'replaygain';
replaygain — choice no | track | album (mpv 0.35.1 options.rst).
Settable at runtime: the option carries UPDATE_VOL, which re-runs
audio_update_volume() immediately (mpv options/options.c,
player/audio.c).
replayGainClip
readonly replayGainClip: "replaygain-clip" = 'replaygain-clip';
replaygain-clip — flag. yes means "allow clipping", i.e. it
disables mpv's automatic gain reduction; the default no keeps the
protection on. See ReplayGainOptions.clip in player.ts for why the
0.35.1 manual reads the other way round. Runtime-settable (UPDATE_VOL).
replayGainFallback
readonly replayGainFallback: "replaygain-fallback" = 'replaygain-fallback';
replaygain-fallback — "Gain in dB to apply if the file has no replay gain
tags. This option is always applied if the replaygain logic is somehow
inactive" (mpv 0.41.0 options.rst) — *"somehow inactive" includes
replaygain=no: the fallback branch is the else of the mode check in
compute_replaygain() (player/audio.c), so a non-zero fallback keeps
applying after the mode is switched off. mpv clamps it to
M_RANGE(-200, 60) (options/options.c). Runtime-settable (UPDATE_VOL).
replayGainPreamp
readonly replayGainPreamp: "replaygain-preamp" = 'replaygain-preamp';
replaygain-preamp — "Pre-amplification gain in dB to apply to the
selected replaygain gain (default: 0)" (options.rst). mpv clamps it to
M_RANGE(-150, 150) (options/options.c). Runtime-settable (UPDATE_VOL).
seekable
readonly seekable: "seekable" = 'seekable';
seekable — flag. mpv: "Whether it's generally possible to seek in the
current file" (input.rst, mpv 0.35.1). false is how an unseekable live
stream announces itself; see PlayerState.isLive.
seeking
readonly seeking: "seeking" = 'seeking';
seeking — flag. true while mpv is repositioning.
speed
readonly speed: "speed" = 'speed';
speed — double, playback rate multiplier.
streamLavfO
readonly streamLavfO: "stream-lavf-o" = 'stream-lavf-o';
stream-lavf-o — "Set AVOptions on streams opened with libavformat"
(mpv 0.41.0 options.rst), a key/value list.
Applied by mp_setup_av_network_options() last, after every option mpv
derives from its own settings (stream/stream_lavf.c:242,
mp_set_avdict(dict, opts->avopts)), so an entry here wins over mpv's
defaults. The same function is called from both stream_lavf.c:407 (the
top-level connection) and demux_lavf.c:1024 (an AVFMT_NOFILE demuxer
opening its own connections, which is how HLS fetches segments) — so one
value covers both layers.
This library uses it for exactly one thing: FFmpeg's HTTP reconnect
options. See PlayerOptions.networkReconnect.
timePos
readonly timePos: "time-pos" = 'time-pos';
time-pos — double. NEVER observed; read one-shot on discontinuities.
volume
readonly volume: "volume" = 'volume';
volume — double, mpv's 0–100 scale (see MPV_VOLUME_SCALE).