Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Events and Notifications

Subscription

All `org.rdk.player.on*` notifications are opt-in. Subscribe per client; each connection has its own independent subscription set.

After subscribing, the server pushes matching events as JSON-RPC notifications.
eg:

Request
{"jsonrpc":"2.0","id":1,"method":"org.rdk.player.subscribe","params":{"sessionId":"sess-abc-001","event":"org.rdk.player.onProgress"}}


Response
{"jsonrpc":"2.0","id":1,"result":{"success":true}}

Unsubscribe

eg:

Request
{"jsonrpc":"2.0","id":1,"method":"org.rdk.player.unsubscribe","params":{"sessionId":"sess-abc-001","event":"org.rdk.player.onProgress"}}
Response
{"jsonrpc":"2.0","id":1,"result":{"success":true}}






...

Event
Description
Response
org.rdk.player.onTuned
Tune succeeded and playback is ready
{"jsonrpc":"2.0","method":"org.rdk.player.onTuned","params":{"sessionId":"sess-abc-001"}}
org.rdk.player.onTuneFailed
Tune failed and playback is not ready
{"jsonrpc":"2.0","method":"org.rdk.player.onTuneFailed","params":{"sessionId":"sess-abc-001","description":"Manifest download failed","code":10,"shouldRetry":true}}
org.rdk.player.onStateChanged
New player lifecycle state
{"jsonrpc":"2.0","method":"org.rdk.player.onStateChanged","params":{"sessionId":"sess-abc-001","state":"playing"}}
org.rdk.player.onProgress
Periodic playback progress
{"jsonrpc":"2.0","method":"org.rdk.player.onProgress","params":{"sessionId":"sess-abc-001","positionMs":12500,"durationMs":3600000,"speed":1,"startMs":0,"endMs":3600000,"videoBufferedMs":8000,"audioBufferedMs":8000,"liveLatencyMs":0,"profileBitrate":4000000,"networkBitrate":6000000}}
org.rdk.player.onBitrateChanged
ABR switches to a different video profile
{"jsonrpc":"2.0","method":"org.rdk.player.onBitrateChanged","params":{"sessionId":"sess-abc-001","bitrate":2000000,"width":1280,"height":720,"description":"NetworkCongestion"}}
org.rdk.player.onMediaMetadata
Stream metadata is parsed after a tune completes
{"jsonrpc":"2.0","method":"org.rdk.player.onMediaMetadata","params":{"sessionId":"sess-abc-001","durationMs":3600000,"width":1920,"height":1080,"hasDrm":true,"isLive":false,"drmType":"widevine","languages":["en","fra"],"bitrates":[800000,2000000,4000000,8000000],"speeds":[-64,-32,-16,-8,-4,-2,1,2,4,8,16,32,64]}}
org.rdk.player.onSpeedChanged
Effective playback speed changes (e.g. trick-play, pause, resume)
{"jsonrpc":"2.0","method":"org.rdk.player.onSpeedChanged","params":{"sessionId":"sess-abc-001","speed":2}}
org.rdk.player.onBufferingChanged
Player enters or exits a buffering stall
{"jsonrpc":"2.0","method":"org.rdk.player.onBufferingChanged","params":{"sessionId":"sess-abc-001","buffering":true}}
 
org.rdk.player.onSeeked
A seek operation completes and playback resumes at the new position
{"jsonrpc":"2.0","method":"org.rdk.player.onSeeked","params":{"sessionId":"sess-abc-001","positionMs":120000}}
 
org.rdk.player.onDrmMetadata
DRM system reports an access status update
{"jsonrpc":"2.0","method":"org.rdk.player.onDrmMetadata","params":{"sessionId":"sess-abc-001","accessStatus":"Authorized"}}
 
org.rdk.player.onAnomaly
Fired when AAMP raises an internal diagnostic report
{"jsonrpc":"2.0","method":"org.rdk.player.onAnomaly","params":{"sessionId":"sess-abc-001","severity":1,"message":"Segment download stalled; retrying"}}
 
org.rdk.player.onAdReservationStart
Ad reservation start event
{"jsonrpc":"2.0","method":"org.rdk.player.onAdReservationStart","params":{"sessionId":"sess-abc-001","adBreakId":"break-001","position":120000}}
 
org.rdk.player.onTimedMetadata


Fired when a timed metadata tag
{"jsonrpc":"2.0","method":"org.rdk.player.onTimedMetadata","params":{"sessionId":"sess-abc-001","name":"#EXT-X-CUE","id":"cue-001","timeMilliseconds":5000,"durationMilliSeconds":30000,"content":"/DAlAAAAAA=="}}
 
org.rdk.player.onBulkTimedMetadata


Fired when a bulk set of timed metadata entries is available
{"jsonrpc{"jsonrpc":"2.0","method":"org.rdk.player.onBulkTimedMetadata","params":{"sessionId":"sess-abc-001","metadata":"[{\"name\":\"#EXT-X-CUE\",\"time\":5000}]"}}
 
org.rdk.player.onSupportedSpeedsChanged


Fired when the list of supported trick-play speed values for the current stream changes.
{"jsonrpc":"2.0","method":"org.rdk.player.onSupportedSpeedsChanged","params":{"sessionId":"sess-abc-001","supportedSpeedCount":13,"supportedSpeeds":[-64,-32,-16,-8,-4,-2,1,2,4,8,16,32,64]}}
 
org.rdk.player.onAdResolved


Fired when an ad resolve attempt completes, reporting whether the ad was successfully resolved or encountered an error.
{"jsonrpc":"2.0","method":"org.rdk.player.onAdResolved","params":{"sessionId":"sess-abc-001","resolveStatus":true,"adId":"ad-001","startMS":60000,"durationMs":30000,"errorCode":"","errorDescription":""}}
 
org.rdk.player.onAdPlacementStart


Ad placement started
{"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementStart","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":0,"duration":30000,"errorCode":0}}
 
org.rdk.player.onAdPlacementEnd


Ad placement ended
{"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementEnd","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":30000,"duration":30000,"errorCode":0}}
org.rdk.player.onAdPlacementError


Ad placement errororg.rdk.player.onAdPlacementProgress
Ad placement progress update
{"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementError","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":5000,"duration":30000,"errorCode":2}}
 
org.rdk.player.onAdPlacementProgress


Ad placement progress update
{"jsonrpc":"2.0","method":"org.rdk.player.onAdPlacementProgress","params":{"sessionId":"sess-abc-001","adId":"ad-001","position":60000,"offset":15000,"duration":30000,"errorCode":0}}
 
org.rdk.player.onID3Metadata


 ID3 tag metadata extracted from stream
{"jsonrpc":"2.0","method":"org.rdk.player.onID3Metadata","params":{"sessionId":"sess-abc-001","data":"SUQzBAAAAAAAI1RTUFQ=","length":20}}
 
org.rdk.player.onDrmMessage


DRM system message received
{"jsonrpc":"2.0","method":"org.rdk.player.onDrmMessage","params":{"sessionId":"sess-abc-001","data":"license renewal required"}}
 
org.rdk.player.onContentGap


Content gap detected in stream
{"jsonrpc":"2.0","method":"org.rdk.player.onContentGap","params":{"sessionId":"sess-abc-001","timeMilliseconds":120000,"durationMilliSeconds":5000}}
 
org.rdk.player.onHTTPResponseHeader


Matched HTTP response header received
{"jsonrpc":"2.0","method":"org.rdk.player.onHTTPResponseHeader","params":{"sessionId":"sess-abc-001","header":"X-CDN-Provider","response":"Akamai"}}
 
org.rdk.player.onContentProtectionDataUpdate


Content protection key data updated
{"jsonrpc":"2.0","method":"org.rdk.player.onContentProtectionDataUpdate","params":{"sessionId":"sess-abc-001","keyID":"AAECBA==","streamType":"video"}}
 
org.rdk.player.onTuneTimeMetrics


Fired after a successful tune with detailed metrics.
{"jsonrpc":"2.0","method":"org.rdk.player.onTuneTimeMetrics","params":{"sessionId":"sess-abc-001","tuneMetricData":"{\"latency\":1500,\"fragmentDownloadTime\":200}"}}


org.rdk.player.onMonitorAVStatus


Fired periodically by the AV health monitor with audio/video decoder positions.
{"jsonrpc":"2.0","method":"org.rdk.player.onMonitorAVStatus","params":{"sessionId":"sess-abc-001","monitorAVStatus":"playing","videoPositionMS":12500,"audioPositionMS":12490,"timeInStateMS":5000,"droppedFrames":0}}
 
org.rdk.player.onMetricsData


Fired when an internal AAMP metrics report

{"jsonrpc":"2.0","method":"org.rdk.player.onMetricsData","params":{"sessionId":"sess-abc-001","type":1,"metricUUID":"550e8400-e29b-41d4-a716-446655440000","data":"{\"latency\":1200}"}}
 
org.rdk.player.onCCHandleReceived
Fired when the closed-caption decoder handle is allocated 
{"jsonrpc":"2.0","method":"org.rdk.player.onCCHandleReceived","params":{"sessionId":"sess-abc-001","handle":12345}}


Aamp openrpc.json


...