MediaController
Classes
Typedefs
- MediaProperties :
Object
- PlaybackInfo :
Object
- TimelineProperties :
Object
- AudioStream :
Object
MediaController
Kind: global class
- MediaController
- new MediaController()
- .on(eventName, callback)
- .once(eventName, callback)
- .off(eventName, callback)
- .requestMediaProperties() ⇒
Promise.<MediaProperties>
- .requestPlaybackInfo() ⇒
Promise.<PlaybackInfo>
- .requestTimelineProperties() ⇒
Promise.<TimelineProperties>
- .requestThumbnail() ⇒
Promise.<string>
- .play()
- .pause()
- .stop()
- .togglePlayPause()
- .skipNext()
- .skipPrevious()
- .setShuffle(state)
- .setRepeatMode(mode)
- .setSeekPosition(position)
new MediaController()
Handle and control events related to system media and playback.
mediaController.on(eventName, callback)
Add a listener to changes in media events.
Kind: instance method of MediaController
Param | Type | Description |
---|---|---|
eventName | 'mediaChange' | 'playbackChange' | 'timelineChange' | 'audioStream' |
- Events with type mediaChange are fired when the current playing media changes (ex. skipping to the next song). - Events with type playbackChange are fired when the media playback state changes (ex. pausing/playing a song, enabling shuffle, etc.). - Events with type timelineChange are fired whenever the timestamp of the current playing media changes (ex. seeking ahead or back, song progressing, etc.). - Subscribing to the audioStream event returns chunks of PCM (pulse-code modulation) samples of the current audio every 100ms (useful for audio visualizations). |
callback | function |
Callback receives an object containing one of the following: - mediaChange : MediaProperties - playbackChange : PlaybackInfo - timelineChange : TimelineProperties - audioStream : AudioStream |
Example
mediaController.on('mediaChange', (mediaProps) => {
console.log('Currently playing: ' + mediaProps.title);
});
mediaController.on('playbackChange', (playbackInfo) => {
if (playbackInfo.playbackStatus == 'Paused')
console.log('Media is paused.');
});
mediaController.once(eventName, callback)
Add a one-time event listener that removes itself after firing.
Kind: instance method of MediaController
Param | Type |
---|---|
eventName | 'mediaChange' | 'playbackChange' | 'timelineChange' | 'audioStream' |
callback | function |
mediaController.off(eventName, callback)
Remove an event listener.
Kind: instance method of MediaController
Param | Type |
---|---|
eventName | 'mediaChange' | 'playbackChange' | 'timelineChange' | 'audioStream' |
callback | function |
mediaController.requestMediaProperties() ⇒ Promise.<MediaProperties>
Request all media properties.
Kind: instance method of MediaController
Returns: Promise.<MediaProperties>
- Resolves to a MediaProperties object.
Example
mediaController.requestMediaProperties().then((mediaProps) => {
console.log('Currently playing: ' + mediaProps.title);
})
mediaController.requestPlaybackInfo() ⇒ Promise.<PlaybackInfo>
Request all playback info.
Kind: instance method of MediaController
Returns: Promise.<PlaybackInfo>
- Resolves to a PlaybackInfo object.
mediaController.requestTimelineProperties() ⇒ Promise.<TimelineProperties>
Request all timeline properties.
Kind: instance method of MediaController
Returns: Promise.<TimelineProperties>
- Resolves to a TimelineProperties object.
mediaController.requestThumbnail() ⇒ Promise.<string>
Request the thumbnail image of the current playing media.
Kind: instance method of MediaController
Returns: Promise.<string>
- Resolves to a base64-encoded image string.
Example
myImage = document.getElementById('img');
mediaController.requestThumbnail().then((thumbnail) => {
myImage.src = thumbnail;
console.log('Received thumbnail image');
});
mediaController.play()
Play the current media.
Kind: instance method of MediaController
mediaController.pause()
Pause the current media.
Kind: instance method of MediaController
mediaController.stop()
Stop the current media.
Kind: instance method of MediaController
mediaController.togglePlayPause()
Toggle play/pause. If the current playback state is paused, this will play the current media, and vice versa.
Kind: instance method of MediaController
mediaController.skipNext()
Skip to the next media.
Kind: instance method of MediaController
mediaController.skipPrevious()
Skip to the previous media.
Kind: instance method of MediaController
mediaController.setShuffle(state)
Set the shuffle state.
Kind: instance method of MediaController
Param | Type | Default | Description |
---|---|---|---|
state | boolean |
true |
The shuffle state. Set to true to enable shuffling, false to disable it. |
mediaController.setRepeatMode(mode)
Set the repeat mode.
Kind: instance method of MediaController
Param | Type | Description |
---|---|---|
mode | 'track' | 'list' | 'none' |
The repeat mode. track enables repeat for the current track, list enables repeat for the current media's playlist/album, none disables repeat. |
mediaController.setSeekPosition(position)
Set the seek position.
Kind: instance method of MediaController
Param | Type | Description |
---|---|---|
position | number |
The seek position of playback in the current media in seconds. |
MediaProperties : Object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
title | string |
The title of the current media. |
albumArtist | string |
The album artist of the current media. |
albumTitle | string |
The album title of the current media. |
albumTrackCount | number |
The number of tracks in the album of the current media. |
artist | string |
The name of the artist of the current media. |
genres | Array.<string> |
A list of the current media's genres. |
trackNumber | number |
The track number of the current media. |
PlaybackInfo : Object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
playbackStatus | 'Closed' | 'Opened' | 'Changing' | 'Stopped' | 'Playing' | 'Paused' | 'Unknown' |
The status of the current media's playback. |
playbackRate | number |
The playback rate of the current media (ex. 1.5 for 1.5x speed-up playback). |
shuffleActive | boolean |
Whether or not the current media has shuffle enabled. |
playbackType | 'Music' | 'Image' | 'Video' | 'Unknown' |
The type of the current media. |
TimelineProperties : Object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
startTime | number |
The starting time of the current media in seconds. |
endTime | number |
The ending time of the current media in seconds. |
position | number |
The seek position of playback in the current media in seconds (ex. a user is N seconds into a song). |
minSeekTime | number |
The minimum seek time of playback in the current media in seconds. |
maxSeekTime | number |
The maximum seek time of playback in the current media in seconds (ex. the length of the media is maxSeekTime - minSeekTime ). |
AudioStream : Object
Kind: global typedef
Properties
Name | Type | Description |
---|---|---|
channels | number |
Number of audio channels (e.g., 2 for stereo). |
sampleCount | number |
Number of PCM frames in this chunk. |
samples | Array.<number> |
Normalized PCM samples, in interleaved order if stereo. |