# MediaPlayer Service ## Overview MediaPlayer service controls playback of media from a playlist using one provided from *agl-service-mediascanner* and reports status via events. ## Verbs | Name | Description | JSON Parameters | |:-------------------|:----------------------------------------|:------------------------------------------------| | subscribe | subscribe to respectice events | *Request:* {"value": "playlist"} | | unsubscribe | unsubscribe to respective events | *Request:* {"value": "playlist"} | | controls | controls for media playback | See **MediaPlayer Controls** section | | playlist | get current playlist of media | See **playlist JSON Response** section | ### MediaPlayer Controls Media playback can be controlled with sending on the following action commands within a JSON request within the parameter of *value* (i.e. *{"value": "play"}*) | Name | Description | JSON Request Example | |:----------------|:----------------------------------------------------------|:--------------------------------------------| | play | start playing media | {"value": "play} | | pause | stop playing media | {"value": "pause"} | | previous | skip to previous item in playlist | {"value": "previous"} | | next | skip to next item in playlist | {"value": "next"} | | seek | seek position (in milliseconds) within current track | {"value": "seek", "position": 50000} | | fast-forward | seek forward (in milliseconds) within current track | {"value": "fast-forward", "position": 2000} | | rewind | seek backward (in milliseconds) within current track | {"value": "rewind", "position": 2000} | | pick-track | select media item in playlist via index number | {"value": "pick-track", "index": 4} | | volume | set volume 0-100% for media stream | {"value": "volume, "volume": 40} | | loop | loop media (e.g off, playlist, track) | {"value": "loop", "state": "off"} | ### playlist JSON Response JSON response is an array of playlist entries with the parameter name of *list*. | Name | Description | |:------------|-------------------------------------------------| | index | index number within playlist | | duration | *(optional)* length of track in milliseconds | | path | path to media on filesystem | | title | title for playlist entry | | album | album name for playlist entry | | artist | artist name for playlist entry | | genre | genre type for playlist entry | ## Events | Name | Description | |--------------------|:---------------------------------------------| | playlist | event that reports playlist changes | | metadata | event that reports playback status | ### playlist Event Notes JSON response data is an array of the same fields documented in **playlist JSON Response** section ### metadata Event Notes JSON response for *metadata* event These fields are in the root level of the event | Name | Description | |:------------|----------------------------------------------------| | position | current position in milliseconds | | volume | current volume in percent | These fields are part of a dictionary named "track" | Name | Description | |:------------|----------------------------------------------------| | index | index number within playlist | | duration | length of track in milliseconds | | path | path to media on filesystem | | title | title for current track | | album | album name for current track | | artist | artist name for current track | | genre | genre type for current track | | image | *(optional)* base64 encoded data URI for album art |