Whether the playing track can be seeked, read when the event is sent, as canSeek in the playback.getState answer; always false for stopped.
Length of the playing track in seconds, read when the event is sent.
Host system time when position was read, Unix epoch milliseconds with a fractional part, the same clock as Date.now().
Playback position in seconds, read when the event is sent, with the same latency compensation and transient behavior as playback.getPosition.
The new state.
Payload of the
playback:stateChangedevent. The playback state changed:playingwhen a track starts and on resume,pausedon pause or when playback starts paused,stoppedwhen playback stops with reasonuseroreof(seeplayback:stopped).playback.nextstops the playing track with reasonstarting_anotherand sends nostoppedstate, but foobar2000 reportsplaylist.playTrackon another row as auserstop, so astoppedstate arrives before the new track's events. When a track starts, the event sent right afterplayback:trackChangedcarries that track'scanSeek; an earlier one sent withplayback:starting, before the track is opened, can reportfalse.