AAMP(Advanced Adaptive Media Player) Engine

Published: September 17, 2019
Edited: December 02, 2019

Overview

AAMP (Advanced Adaptive Media Player) Engine provides JavaScript binding API’s to build HTML5/JavaScript applications using AAMP native player available on RDK devices. AAMP native video player is build on top of gstreamer, optimized for performance, memory use, and code size. AAMP supports Adaptive Bitrate Streaming and IP Streaming (HTTP progressive, MP4, MP3, Shoutcast).

Refer AAMP Engine for complete list of AAMP Engine JavaScript binding API references.

AAMP Reference Player available at https://firebolt.app/aamp/ demonstrates use of AAMP Engine JavaScript binding APIs to interact with AAMP native player. The bindings are made available in JavaScript with the help of injected bundle once DOM elements are loaded by webkit.

Target Audience

This document is targeted to OTT app vendors and HTML5 developers who are interested in evaluating/adopting AAMP for their media player applications on RDK-Platform based set-top boxes.

Features

  • HLS (Clear, Access, Vanilla AES-128)
  • DASH ( Clear, Playready/Widevine)
  • Inband Closed Captions
  • Audio Language Selection
  • Trickplay and Audio/Video Bitrate Selection

Minimal Sample Player

The following sample player provides insights on how to use AAMP Engine to build sample player with minimal play feature.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>UVE Reference Player</title></head>
<script>
    var url = "https://tungsten.aaplimg.com/VOD/bipbop_adv_example_v2/master.m3u8";
    
    window.onload = function() {
        var player = new AAMPMediaPlayer();
        player.load(url);
        player.play();
    }
</script>
<body>
    <div id="videoContainer">
        <video style="height:100%; width:100%; position:absolute; bottom:0; left:0">
            <source src="placeholder.mp4" type="video/ave"> <!-- hole punching -->
        </video>   
    </div> 
</body>
</html>

AAMP Reference Player Demo

AAMP Reference Player demo shows different adaptive streaming protocols and encryptions the player supports. Explore AAMP Reference Player demo here: https://firebolt.app/aamp/

It can be launched on any Comcast STB using Comcast’s Chariot App (https://send2chariot.xreapps.net:8443/send2chariot/#/send/html)

Download AAMP Reference Player

Download AAMP Reference Player to host it on a local set-up and to comprehend how AAMP Engine JavaScript bindings API references are used to build AAMP Reference Player.

Download AAMP Reference Player here

General Setup to load AAMP Reference Player from local set-up to RDK devices

1. Setup in RDK devices (Comcast)
  1. Download Host ReferencePlayer folder in a web server or in /opt/www/ folder in device
    1. Folders in /opt/www/ can be accessed using http://localhost:50050/<folder name>
  2. To launch reference player, use Comcast’s Chariot App (https://send2chariot.xreapps.net:8443/send2chariot/#/send/html)
    1. Fill in X1 Device ID (from XRAY)
    2. Select “Chariot XRE” for Launch Type
    3. fill in URL to launch (i.e. http://localhost:50050/ReferencePlayer/index.html)
    4. Specify “Default” for Browser Type
    5. Select “Mute Player”
    6. Select “Use Background”
    7. Select “Enable Debug Mode -1”
    8. Click “Send” button
  3. If hosted in /opt/www folder, need the following override config files in /opt folder since XRE rejects Fling requests with URLs with domain localhost/127.0.0.1. Contents for the override files are provided in Appendix section.
    1. /opt/webfilterpatterns.conf
    2. /opt/xrehtmlappswhitelist.conf

Folder Structure: Full Reference Player

icons // UI elements of reference players and homepage

UVE

index.html // Homepage of UVE reference player

UVEMediaPlayer.js // Includes “AAMPPlayer” JS class which wraps UVE binding object AAMPMediaPlayer

UVEPlayerUI.js // JS code for the UI elements and their functionality

UVERefPlayer.js // Main JS file

UVERefPlayerStyle.js // CSS for reference player and its UI

index.html // Homepage of reference player

ReferencePlayer.js // JS code for Homepage and redirection to respective reference players

URLs.js // list of selectable streams

ReferencePlayerStyle.css // CSS for Homepage and its UI

Appendix

/opt/webfilterpatterns.conf

{"webfilter":[
{"host":"localhost", "block":"0"},
{"host":"127.0.0.1", "block":"1"},
{"host":"169.254.*", "block":"1"},
{"host":"192.168.*", "block":"1"},
{"host":"[::1]", "block":"1"},
{"scheme":"file", "block":"1"},
{"scheme":"ftp", "block":"1"},
{"scheme":"*", "block":"0"},
{"block":"1"}
]}

/opt/xrehtmlappswhitelist.conf

{"htmlappswhitelist":
[
{
"name" : "About Blank Page",
"url" : "about:blank"
},
{
"name" : "Viper Player",
"url" : "ccr.player-platform-stage.xcr.comcast.net/index.html"
},
{
"name" : "Google",
"url" : "www.google.com"
},
{
"name" : "AAMP Reference Player",
"url" : "localhost:50050/ReferencePlayer/index.html"
}
]
}
~