
{"id":10075,"date":"2022-06-21T09:10:46","date_gmt":"2022-06-21T09:10:46","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_video_documentation\/components\/open-sourced_components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/"},"modified":"2025-03-25T05:18:34","modified_gmt":"2025-03-25T05:18:34","slug":"aamp_-_native_video_engine_player_api","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/","title":{"rendered":"AAMP &#8211; Native Video Engine Player API"},"content":{"rendered":"<p><!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\"><br \/>\n <html><body><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Overview<\/h2>\n\n\n<p>This document defines the Native Video engine (AAMP) APIs for embedded devices. &nbsp;<\/p>\n<\/p>\n<p>Table of key web links<\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Web Resource<\/th><th class=\"confluenceTh\">Owner<\/th><th class=\"confluenceTh\">Descrption<\/th><\/tr><tr><td class=\"confluenceTd\">W3C MSE Specifications<\/td><td class=\"confluenceTd\">W3C<\/td><td class=\"confluenceTd\">HTML5 specs for Media Source Extenstions<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p>&nbsp;<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Architecture<\/h2>\n\n\n<p>This section provides a high level architecture&nbsp;<\/p>\n<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">AAMP Video Engine APIs&nbsp;<\/h2>\n\n\n<p>This section defines the properties, methods and events for the AAMP Video Engine<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/ClientSideDAI-1-Gliffy.drawio.png\"><\/p>\n<h3 class=\"wp-sub-header\">Core Video Engine Functionality<\/h3>\n<h3 class=\"wp-sub-header\">Class<\/h3>\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<strong>AAMPVideoEngine<\/strong><\/p>\n<h3 class=\"wp-sub-header\">Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>PlayerVersion<\/p><\/td><td class=\"confluenceTd\">String<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Version of the player available as a string<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>MediaType<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Type of media &nbsp;enum { LIVE =1, VOD=2, cDVR=3 }<\/p><p>Note: may be implied by manifest contents (open\/live vs. closed), but in some cases media type (EAS, CDVR) may be knowable only by Player.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>PlayerState<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Player State Enum.<\/p><p>&nbsp;&nbsp; IDLE, \/\/ initial state of player<\/p><p>&nbsp;&nbsp;&nbsp;INITIALIZING, \/\/ drm individualization, etc.<\/p><p>&nbsp;&nbsp;&nbsp;INITIALIZED, \/\/ TBR?<\/p><p>&nbsp;&nbsp; PREPARING, \/\/ manifest request in progress &#8211; TBR?<\/p><p>&nbsp;&nbsp;&nbsp;PREPARED, \/\/ have knowledge about stream contents, language availability, etc.<\/p><p>&nbsp;&nbsp;&nbsp;BUFFERING, \/\/ collecting a\/v fragments &#8211; not currently presenting; could happen if run dry during playback<\/p><p>&nbsp;&nbsp;&nbsp;PAUSED, \/\/ player-initiated pause<\/p><p>&nbsp;&nbsp;&nbsp;SEEKING, \/\/ seek-in-progress &#8211; variant of buffering<\/p><p>&nbsp;&nbsp;&nbsp;PLAYING, \/\/ a\/v actively streaming\/presenting<\/p><p>&nbsp;&nbsp;&nbsp;STOPPING, \/\/ reflects async state &#8211; needed?<\/p><p>&nbsp;&nbsp;&nbsp;STOPPED, \/\/ playback stopped at end of asset<\/p><p>&nbsp;&nbsp;&nbsp;COMPLETE, \/\/ ?<\/p><p>&nbsp;&nbsp;&nbsp;ERROR, \/\/ fatal video engine state<\/p><p>&nbsp;&nbsp; RELEASED<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>CurrentPosition<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Current media play position (milliseconds or seconds?)<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>MediaInfo<\/p><\/td><td class=\"confluenceTd\">Object<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Information about the Media being played by the Player<\/p><p>totalDuration \u2013 Total duration of the Media<\/p><p>startPostion \u2013 Media Start Position<\/p><p>endPosition \u2013 Media End Position<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>currentPlaybackSpeed<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Current speed (play rate); 0 if paused, negative if rewinding<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>getSupportedSpeed<\/p><\/td><td class=\"confluenceTd\">Number[ ]<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Array of supported speeds;<\/p><p>[-64, -32, -16, -4, -1, 0, 1, 4, 16, 32, 64];<\/p><p>Needed? An ip video player can present iframe track at arbitrary speeds<\/p><p>This set changes during trick mode restrictions; subset may be used during ad.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>timeline<\/p><\/td><td class=\"confluenceTd\">Timeline<\/td><td class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Timeline for tracking dynamic ad insertion (DAI)<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>Volume<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Current volume (only mute\/unmute is actually used)<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">drm<\/td><td colspan=\"1\" class=\"confluenceTd\">Drm<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td colspan=\"1\" class=\"confluenceTd\">interface to Drm specific properties and methods<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">Methods<\/h3>\n<div class=\"table-wrap conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"show-if\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Return Value<\/th><th class=\"confluenceTh\">Arguments<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>setURI<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>String<\/p><\/td><td class=\"confluenceTd\"><p>URI of the content<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>initParam<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>String<\/p><\/td><td class=\"confluenceTd\"><p>JSON string of key value pair of all the properties to be set.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>play<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>none<\/p><\/td><td class=\"confluenceTd\"><p>starts video playback<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>pause<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>errorcode<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>none<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>pauses video playback. Equivalent to speed = 1<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>stop<\/p><\/td><td class=\"confluenceTd\"><p>void<\/p><\/td><td class=\"confluenceTd\"><p>none<\/p><\/td><td class=\"confluenceTd\"><p>stops video playback. Video is not expected to resume.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>seek<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>Msec \u2013 Number<\/p><\/td><td class=\"confluenceTd\"><p>Desired Playback position in milliseconds<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>seekToLive<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>errorcode<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Void<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Seek to live stream<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setSpeed<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>speed &#8211; Number<\/p><p>overshootCorrection &#8211; Number (milliseconds)<\/p><\/td><td class=\"confluenceTd\"><p>sets the speed and adjusts the position of the video by the number of milliseconds specified by overshootCorrection<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>setRect<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>OffsetX \u2013 number<\/p><p>OffsetY \u2013 number<\/p><p>Width \u2013 number<\/p><p>Height &#8211; number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Method to set the rectangular coordinates for video display<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>setAutoPlay<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>autoPlay &#8211; Boolean<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>when true, video starts playing immediately; when false, playback must be manually started.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setZoom<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>Setting \u2013 number<\/p><\/td><td class=\"confluenceTd\"><p>Desired zoom setting enum \u2013 { FULL = 0; NONE-1 }<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>addEventListener<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>eventName \u2013 String<\/p><p>listener &#8211; Function<\/p><\/td><td class=\"confluenceTd\"><p>Method to add an event listener corresponding to an event<\/p><p>TODO: list of event names and semantics<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>removeEventListener<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>eventName \u2013 String<\/p><\/td><td class=\"confluenceTd\"><p>Method to remove an event listener corresponding to an event<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>getAvailableLanguages<\/p><\/td><td class=\"confluenceTd\"><p>Object<\/p><\/td><td class=\"confluenceTd\"><p>None<\/p><\/td><td class=\"confluenceTd\"><p>Returns a collection of available of audio languages as enums<\/p><p>currently polled &#8211; why?<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setLanguage<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>Language \u2013 Number<\/p><\/td><td class=\"confluenceTd\"><p>Desired audio language. Default is Eng.<\/p><p>{ENG=0; SPANISH = 1; FRENCH=2; ITALIAN=3; \u2026.. }<\/p><p>enum or iso language code?<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setVideoMute<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>Mute \u2013 Boolean<\/p><\/td><td class=\"confluenceTd\"><p>True if mute or false otherwise.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setAudioVolume<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>Volume &#8211; Number<\/p><\/td><td class=\"confluenceTd\"><p>Preferred audio volume to set.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>enableTSB<\/p><\/td><td class=\"confluenceTd\"><p><span>errorcode<\/span><\/p><\/td><td class=\"confluenceTd\"><p>enableTSB \u2013 Boolean<\/p><\/td><td class=\"confluenceTd\"><div class=\"content-wrapper\"><p>Enable TSB if True else false<\/p><\/div><\/td><\/tr><tr><td class=\"confluenceTd\"><p>getProperty<\/p><\/td><td class=\"confluenceTd\"><p>Object<\/p><\/td><td class=\"confluenceTd\"><p>Property \u2013 String<\/p><\/td><td class=\"confluenceTd\"><p>Returns the property value or a null object if error &#8211; TBR?<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>setProperty<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>Property \u2013 String<\/p><p>Value \u2013 object<\/p><\/td><td class=\"confluenceTd\"><p>Sets the value for the specified property &#8211; TBR?<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">DAI &nbsp;APIs<\/h3>\n<h3 class=\"wp-sub-header\"><span>Classes<\/span><\/h3>\n<p><strong>AAMPVideoEngine.TimedMetadata<br \/>AAMPVideoEngine.Timeline<br \/>AAMPVideoEngine.AdBreak<br \/>AAMPVideoEngine.Ad<br \/>AAMPVideoEngine.TrickModeRestrictions<br \/>AAMPVideoEngine.AdOpportunity<br \/><\/strong><\/p>\n<\/p>\n<h3 class=\"wp-sub-header\">Timeline Properties<\/h3>\n<\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>adBreaks<\/p><\/td><td class=\"confluenceTd\">AdBreak[ ]<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Array of Ad breaks<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>adOpportunities<\/p><\/td><td class=\"confluenceTd\">AdOpportunity[]<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\"><p>Array of Ad opportunities<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">start<\/td><td colspan=\"1\" class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td colspan=\"1\" class=\"confluenceTd\">Time (ms) of earliest content<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">duration<\/td><td colspan=\"1\" class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td colspan=\"1\" class=\"confluenceTd\">Time (ms) of content + placed ads<\/td><\/tr><tr><td class=\"confluenceTd\">position<\/td><td class=\"confluenceTd\">Number<\/td><td class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">Time (ms) of current playback postion<\/td><\/tr><tr><td class=\"confluenceTd\">restrictions<\/td><td class=\"confluenceTd\">TrickModeRestrictions<\/td><td class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">Trickmode restrictions on the entire timeline.<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">timedMetadata<\/td><td colspan=\"1\" class=\"confluenceTd\">TimedMetadata[]<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td colspan=\"1\" class=\"confluenceTd\">Array of TimedMetadata<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">Timeline Methods<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Return Value<\/th><th class=\"confluenceTh\">Arguments<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>addEventListener<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>eventType \u2013 String<br>listener \u2013 Function<\/p><\/td><td class=\"confluenceTd\"><p>Method to add an event listener corresponding to an event type.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>removeEventListener<\/p><\/td><td class=\"confluenceTd\"><p>errorcode<\/p><\/td><td class=\"confluenceTd\"><p>eventType \u2013 String<br>listener \u2013 Function<\/p><\/td><td class=\"confluenceTd\"><p>Method to remove an event listener corresponding to an event type.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">placeAdBreak<\/td><td colspan=\"1\" class=\"confluenceTd\">bool<\/td><td colspan=\"1\" class=\"confluenceTd\">position \u2013 Number<br>adBreak &#8211; Object<\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Places the specified AdBreak at the specified position in the timeline.<br>Return true if successful.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">subscribeTimedMetadata<\/td><td class=\"confluenceTd\">errorcode<\/td><td class=\"confluenceTd\">tags &#8211; String []<\/td><td class=\"confluenceTd\"><p>Sets array of HLS tags to monitor while parsing the manifest.<br>Fire &#8220;timedMetadata&#8221; event when timedMetadata[] is updated.;<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">Timeline Events<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Payload<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\">timedMetadata<\/td><td class=\"confluenceTd\">timedMetadata &#8211; TimedMetadata<\/td><td class=\"confluenceTd\">Fired when new TimedMetadata has been parsed, or modified.<\/td><\/tr><tr><td class=\"confluenceTd\">timelineUpdated<\/td><td class=\"confluenceTd\"><p>seekableRangeChanged &#8211; bool<br>adBreaks &#8211; AdBreak[] &#8211; array of modified AdBreaks<br>adOpportunities &#8211; AdOpportunity[] &#8211; array of inserted AdOpportunities<br>duration &#8211; Number &#8211; duration of entire timeline (milliseconds)<br>start &#8211; Number &#8211; earliest seekable position in the timeline (milliseconds)<\/p><\/td><td class=\"confluenceTd\"><p>Fired when the timeline is updated.<br>An update occurs when the timeline start\/duration changes, or new AdOpportunity has been inserted, or an AdBreak \/ Ad has been placed.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">adBreakStart<\/td><td class=\"confluenceTd\"><p>adBreak &#8211; AdBreak &#8211; the adBreak being started<br>speed &#8211; Number &#8211; current playback rate<br>seenCount &#8211; Number &#8211; number of times Ad break was played (in full).<\/p><\/td><td class=\"confluenceTd\">Fired when player starts playing an AdBreak.<\/td><\/tr><tr><td class=\"confluenceTd\">adBreakComplete<\/td><td class=\"confluenceTd\"><p>adBreak &#8211; AdBreak &#8211; the adBreak being finished<br>progress &#8211; Number &#8211; percentage of Ads played<br>ads &#8211; Ad[] &#8211; array of Ad including played progress of each Ad.<\/p><\/td><td class=\"confluenceTd\">Fired when player finishes playing an AdBreak.<\/td><\/tr><tr><td class=\"confluenceTd\">adBreakSkipped<\/td><td class=\"confluenceTd\"><p>adBreak &#8211; AdBreak &#8211; the adBreak being skipped or exited<br>progress &#8211; Number &#8211; percentage of Ads played<\/p><\/td><td class=\"confluenceTd\">Fired when player skips over an AdBreak.<\/td><\/tr><tr><td class=\"confluenceTd\">adStart<\/td><td class=\"confluenceTd\"><p>ad &#8211; Ad &#8211; the Ad being started<br>speed &#8211; Number &#8211; current playback rate<br>seenCount &#8211; Number &#8211; number of times Ad was played (in full).<\/p><\/td><td class=\"confluenceTd\">Fired when player start playing an Ad.<\/td><\/tr><tr><td class=\"confluenceTd\">adProgress<\/td><td class=\"confluenceTd\"><p>ad &#8211; Ad &#8211; the Ad being played<br>progress &#8211; Number &#8211; percentage of Ad played<\/p><\/td><td class=\"confluenceTd\">Reports the player&#8217;s progress as it plays an Ad.<\/td><\/tr><tr><td class=\"confluenceTd\">adComplete<\/td><td class=\"confluenceTd\"><p>ad &#8211; Ad &#8211; the Ad that finished begin played<br>progress &#8211; Number &#8211; percentage of Ad played<\/p><\/td><td class=\"confluenceTd\">Fired when player finishes playing an Ad.<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">TimedMetadata Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col><\/colgroup><thead><tr><td class=\"confluenceTd\"><p><strong>Name<\/strong><\/p><\/td><td class=\"confluenceTd\"><p><strong>Data Type<\/strong><\/p><\/td><td class=\"confluenceTd\"><p><strong>Read or Write<\/strong><\/p><\/td><td class=\"confluenceTd\"><p><strong>Description<\/strong><\/p><\/td><\/tr><\/thead><tbody><tr><td class=\"confluenceTd\"><p>METADATA_TYPE_TAG<\/p><\/td><td class=\"confluenceTd\"><p>0<\/p><\/td><td class=\"confluenceTd\"><p>static const<\/p><\/td><td class=\"confluenceTd\"><p>Indicates metadata is from the manifest.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>METADATA_TYPE_ID3<\/p><\/td><td class=\"confluenceTd\"><p>1<\/p><\/td><td class=\"confluenceTd\"><p>static const<\/p><\/td><td class=\"confluenceTd\"><p>Indicates metadata was embedded in the content.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>METADATA_TYPE_DASH<\/p><\/td><td class=\"confluenceTd\"><p>2<\/p><\/td><td class=\"confluenceTd\"><p>static const<\/p><\/td><td class=\"confluenceTd\"><p>Indicates metadata was generated from DASH MPD.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>type<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Specified the metadata type: manifest vs. embedded.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>time<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Time (in milliseconds) of the metadata.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>name<\/p><\/td><td class=\"confluenceTd\"><p>String<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Name of the metadata. E.g., #EXT-X-CUE, #EXT-X-SCTE35.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>content<\/p><\/td><td class=\"confluenceTd\"><p>String<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Value of the metadata.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>id<\/p><\/td><td class=\"confluenceTd\"><p>String<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Unique identifier associated with the metadata.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>metadata<\/p><\/td><td class=\"confluenceTd\"><p>Object<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Additional name \/ value pairs obtained from the metadata content string.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">AdBreak Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\">ADBREAK_TYPE_INSERT<\/td><td class=\"confluenceTd\">0<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates adBreak was inserted.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">ADBREAK_TYPE_REPLACED<\/td><td class=\"confluenceTd\">1<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates adBreak was replaced.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>type<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">Type of adBreak (inserted or replaced).<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>id<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Unique identifier associated with the ad break.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>start<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Starting position (milliseconds) of the ad break in the timeline.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>duration<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Duration (milliseconds) of the ad break.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>ads<\/p><\/td><td class=\"confluenceTd\"><p>Ad[]<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Array of Ad objects (sorted by time).<br>Contains the ads that will be played during the ad break.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><span>&nbsp;<\/span><\/p>\n<h3 class=\"wp-sub-header\">AdBreak Methods<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Return Value<\/th><th class=\"confluenceTh\">Arguments<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>placeAds<\/p><\/td><td class=\"confluenceTd\">&nbsp;bool<\/td><td class=\"confluenceTd\">position &#8211; Number,<p>ads &#8211; Object[]<\/p><\/td><td class=\"confluenceTd\">Place the specified Ad objects in the AdBreak.<p>Return true if successful.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">Ad Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>id<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Unique identifier associated with the Ad.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>url<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>URL specifying the location of the ad&#8217;s manifest..<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>duration<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Duration (milliseconds) of the ad.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">restrictions<\/td><td class=\"confluenceTd\">TrickModeRestrictions<\/td><td class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">Trickmode restrictions applying to the Ad.<\/td><\/tr><tr><td class=\"confluenceTd\"><p>seenCount<\/p><\/td><td class=\"confluenceTd\">Number<\/td><td class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">Number of time AdBreak was played (in full).<\/td><\/tr><tr><td class=\"confluenceTd\"><p>metadata<\/p><\/td><td class=\"confluenceTd\"><p>Object<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Additional metadata associated with the ad.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">TrickModeRestrictions Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\">TRICKMODE_RESTRICTED_ALWAYS<\/td><td class=\"confluenceTd\">-1<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates restriciton applies always.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">TRICKMODE_RESTRICTED_NEVER<\/td><td class=\"confluenceTd\">0<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates restriciton does not apply.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>pause<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p><span>Specifies if pause is restricted during Ad playback.<br>Values greater than 0 apply while less than seenCount.<\/span><\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>rewind<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Specifies if rewind is restricted during Ad playback.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>fastForward<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Specified if fastForward \/ seek is restricted during Ad playback.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">AdOpportunity Properties<\/h3>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\">AD_PLACEMENT_TYPE_PREROLL<\/td><td class=\"confluenceTd\">0<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p><span>Indicates opportunity places ad before the main content.<\/span><\/p><\/td><\/tr><tr><td class=\"confluenceTd\">AD_PLACEMENT_TYPE_MIDROLL<\/td><td class=\"confluenceTd\">1<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p><span>Indicates opportunity places ad in the main content.<\/span><\/p><\/td><\/tr><tr><td class=\"confluenceTd\">AD_PLACEMENT_TYPE_POSTROLL<\/td><td class=\"confluenceTd\">2<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><span>Indicates opportunity places ad after the main content.<\/span><p><br><\/p><\/td><\/tr><tr><td class=\"confluenceTd\">AD_PLACEMENT_MODE_INSERT<\/td><td class=\"confluenceTd\">0<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates restriciton applies always.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">AD_PLACEMENT_MODE_REPLACE<\/td><td class=\"confluenceTd\">1<\/td><td class=\"confluenceTd\">static const<\/td><td class=\"confluenceTd\"><p>Indicates restriciton does not apply.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>id<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Unique identifier associated with the ad opportunity.<\/p><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>placement<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Number<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>r<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>Indicates placement type: preroll vs. midroll vs. postroll.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>mode<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Indicates placement mode: insertion vs. replacement.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>start<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Starting position (milliseconds) of the ad opportunity.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>duration<\/p><\/td><td class=\"confluenceTd\"><p>Number<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Duration (milliseconds) of the ad.<\/p><\/td><\/tr><tr><td class=\"confluenceTd\"><p>metadata<\/p><\/td><td class=\"confluenceTd\"><p>Object<\/p><\/td><td class=\"confluenceTd\"><p>r<\/p><\/td><td class=\"confluenceTd\"><p>Additional metadata associated with the ad opportunity.<\/p><\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\"><span>&nbsp;<\/span>DRM&nbsp; APIs<\/h3>\n<p>These apis are modeled using the open CDMI framework<\/p>\n<h3 class=\"wp-sub-header\"><span>Classes<\/span><\/h3>\n<p><strong>AAMPVideoEngine.Drm<\/strong><\/p>\n<\/p>\n<p><strong>DRM Properties<\/strong><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Data Type<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Read or Write<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p>supportedKeySystems<\/p><\/td><td class=\"confluenceTd\">string[]<\/td><td colspan=\"1\" class=\"confluenceTd\">r<\/td><td class=\"confluenceTd\">array of supported DRM keysystems<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><strong>DRM Methods<\/strong><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Return Value<\/th><th colspan=\"1\" class=\"confluenceTh\"><p>Arguments<\/p><\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p><span>setPreferredKeySystem<\/span><\/p><\/td><td class=\"confluenceTd\"><span>errorcode<\/span><\/td><td colspan=\"1\" class=\"confluenceTd\">string<\/td><td class=\"confluenceTd\">sets the preferred DRM Key system AAMP player will use. Ex: &#8220;com.microsoft.playready&#8221;<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">setLicenseServerURL<\/td><td colspan=\"1\" class=\"confluenceTd\">errorcode<\/td><td colspan=\"1\" class=\"confluenceTd\">string<\/td><td colspan=\"1\" class=\"confluenceTd\">sets the URL used for license acquisition<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">setAnonymousRequest<\/td><td colspan=\"1\" class=\"confluenceTd\">errorcode<\/td><td colspan=\"1\" class=\"confluenceTd\">bool<\/td><td colspan=\"1\" class=\"confluenceTd\">if true, don&#8217;t use session token in MDS license request (anonymous mode)<br>if false, use session token in MDS license request<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><strong>DRM Events<\/strong><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Payload<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\"><p><span>drmReady<\/span><\/p><\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when license is acquired and content is ready to play<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\"><p>drmError<\/p><p><br><\/p><\/td><td colspan=\"1\" class=\"confluenceTd\"><p>code &#8211; Number<\/p><p>description &#8211; String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\">fired when license acquisition fails<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<h3 class=\"wp-sub-header\">Appendix:&nbsp;JavaScript Player Generated Events<\/h3>\n<div class=\"table-wrap conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"show-if\">\n\n\n<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><\/colgroup><tbody><tr><th class=\"confluenceTh\">Name<\/th><th class=\"confluenceTh\">Payload<\/th><th class=\"confluenceTh\">Description<\/th><\/tr><tr><td class=\"confluenceTd\">onMediaOpened<\/td><td class=\"confluenceTd\"><div class=\"content-wrapper\"><p>mediaType &#8211; String &#8211; has one of the following values: live, liveTSB, recorded<\/p><p>width &#8211; Number<\/p><p>height &#8211; Number<\/p><p>availableSpeeds &#8211; Number<\/p><p>availableAudioLanguages &#8211; String [ ]<\/p><p>availableClosedCaptionsLanguages &#8211; String [ ]<\/p><p>customProperties &#8211; Object<\/p><p>mediaSegments &#8211; Object<\/p><\/div><\/td><td class=\"confluenceTd\"><p>Gathered in JS from VE<\/p><p>Fired when video content has been opened (in &#8220;PREPARED&#8221; state)<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">onClosed<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when the video stream is closed<\/td><\/tr><tr><td class=\"confluenceTd\">onPlayerInitialized<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when the video player is initialized<\/td><\/tr><tr><td class=\"confluenceTd\">onBuffering<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when video starts buffering. playback is not possible at this time.<\/td><\/tr><tr><td class=\"confluenceTd\">onPlaying<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when video starts playing for the first time.<\/td><\/tr><tr><td class=\"confluenceTd\">onPaused<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when video is paused (or speed is set to 0)<\/td><\/tr><tr><td class=\"confluenceTd\">onComplete<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when video is reaches its end, VOD or cDVR for example.<\/td><\/tr><tr><td class=\"confluenceTd\">onIndividualizing<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\">fired when player is individualizing. Playback is not possible. Not all instances will fire this event.<\/td><\/tr><tr><td class=\"confluenceTd\">onAcquiringLicense<\/td><td class=\"confluenceTd\">none<\/td><td class=\"confluenceTd\"><p>fired when player is acquiring a license. Playback is not yet possible. Not all instances will fire this event.<\/p><p>Technically not needed, but potentially useful for troubleshooting\/profiling<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">onProgress<\/td><td class=\"confluenceTd\"><p>position &#8211; Number &#8211; current position in milliseconds<\/p><p>duration &#8211; Number &#8211; length of content in milliseconds (recorded video only)<\/p><p>speed &#8211; Number &#8211; current playback speed<\/p><p>start &#8211; Number &#8211; start position of the TSB buffer, -1 when no buffer available<\/p><p>end &#8211; Number &#8211; end position of the TSB buffer, -1 when no buffer available<\/p><\/td><td class=\"confluenceTd\"><p>fired periodically when player progresses<\/p><p>When TSB starts, start=end=0<\/p><p>As TSB advances, end increases<\/p><p>When TSB begins culling, start&gt;0<\/p><\/td><\/tr><tr><td class=\"confluenceTd\">onWarning<\/td><td class=\"confluenceTd\"><p>code &#8211; Number<\/p><p>description &#8211; String<\/p><\/td><td class=\"confluenceTd\">fired when a warning occurs. video playback will likely continue.<\/td><\/tr><tr><td class=\"confluenceTd\">onError<\/td><td class=\"confluenceTd\"><p>code &#8211; Number<\/p><p>description &#8211; String<\/p><\/td><td class=\"confluenceTd\">fired when an error occurs. video playback will terminate.<\/td><\/tr><tr><td class=\"confluenceTd\">onSpeedChange<\/td><td class=\"confluenceTd\">speed &#8211; Number<\/td><td class=\"confluenceTd\">fired when playback speed changes<\/td><\/tr><tr><td class=\"confluenceTd\">onDRMMetadata<\/td><td class=\"confluenceTd\">props &#8211; Object<\/td><td class=\"confluenceTd\">fired when DRM metadata is acquired. Contains DRM related properties.<\/td><\/tr><tr><td class=\"confluenceTd\">onSegmentStarted<\/td><td class=\"confluenceTd\"><p>segmentType &#8211; String<\/p><p>duration &#8211; Number<\/p><p>segmentId &#8211; String<\/p><p>segment &#8211; Object<\/p><\/td><td class=\"confluenceTd\">fired when a new segment is started.<\/td><\/tr><tr><td class=\"confluenceTd\">onSegmentCompleted<\/td><td class=\"confluenceTd\"><p>segmentType &#8211; String<\/p><p>duration &#8211; Number<\/p><p>segmentId &#8211; String<\/p><p>segment &#8211; Object<\/p><\/td><td class=\"confluenceTd\">fired when a segment is has completed<\/td><\/tr><tr><td class=\"confluenceTd\">onSegmentWatched<\/td><td class=\"confluenceTd\"><p>segmentType &#8211; String<\/p><p>duration &#8211; Number<\/p><p>segmentId &#8211; String<\/p><p>segment &#8211; Object<\/p><\/td><td class=\"confluenceTd\">fired when a segment has been started and completed.<\/td><\/tr><tr><td class=\"confluenceTd\">onBufferWarning<\/td><td class=\"confluenceTd\"><p>warningType &#8211; String &#8211; one of BUFFER_UNDERFLOW or BUFFER_OVERFLOW<\/p><p>bufferSize &#8211; Number &#8211; total size of buffer<\/p><p>bufferFillSize &#8211; Number &#8211; current filled size of buffer<\/p><\/td><td class=\"confluenceTd\"><br><\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">onPlaybackSpeedsChanged<\/td><td colspan=\"1\" class=\"confluenceTd\">availableSpeeds &#8211; String [ ]<\/td><td colspan=\"1\" class=\"confluenceTd\">fired when playback speeds have changed. This may happen when the video switches from one segment to the next.<\/td><\/tr><tr><td colspan=\"1\" class=\"confluenceTd\">onAdditionalAuthRequired<\/td><td colspan=\"1\" class=\"confluenceTd\"><p>locator &#8211; String<\/p><p>eventId &#8211; String<\/p><\/td><td colspan=\"1\" class=\"confluenceTd\">fired when video needs additional auth to continue playback<\/td><\/tr><\/tbody><\/table>\n\n\n<\/div>\n<p><\/body><\/html><\/p>","protected":false},"excerpt":{"rendered":"<p>Overview This document defines the Native Video engine (AAMP) APIs for embedded devices. &nbsp; Table [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":10015,"menu_order":16,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-10075","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Overview This document defines the Native Video engine (AAMP) APIs for embedded devices. &nbsp; Table [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/\",\"name\":\"AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:46+00:00\",\"dateModified\":\"2025-03-25T05:18:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Video\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Advanced Adaptive Media Player (AAMP)\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"AAMP &#8211; Native Video Engine Player API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/","og_locale":"en_US","og_type":"article","og_title":"AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation","og_description":"Overview This document defines the Native Video engine (AAMP) APIs for embedded devices. &nbsp; Table [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:34+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/","name":"AAMP - Native Video Engine Player API - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:46+00:00","dateModified":"2025-03-25T05:18:34+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/aamp_-_native_video_engine_player_api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Video","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"Advanced Adaptive Media Player (AAMP)","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/advanced_adaptive_media_player_aamp\/"},{"@type":"ListItem","position":6,"name":"AAMP &#8211; Native Video Engine Player API"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=10075"}],"version-history":[{"count":4,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10075\/revisions"}],"predecessor-version":[{"id":11125,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10075\/revisions\/11125"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10015"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=10075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}