Custom Player Web SDK

This guide is for integrating the JavaScript-based MediaMelon Custom Player Web SDK

Step 1: Add the MediaMelon SDK Files

Add the following lines to the web page before player files are loaded.

  <script type="text/javascript" src="https://PATH_TO_MEDIAMELON_SDK/mmsmartstreamingsdk.min.js"></script>

Step 2: Register and Initialize the MediaMelon Player SDK

<customer_id> as your MediaMelon-assigned Customer ID. If you do not know your Customer ID contact MediaMelon at support@mediamelon.com

After the player instance has been created, create a new Plugin object, register, report player Info, and then initialize the plugin as shown below:

var customPlugin = new mmCustomJSAdapter();

var mmVideoAssetInfo = {
   "assetName": "ASSET_NAME",
   "assetId": "ASSET_ID",
   "videoId": "VIDEO_ID",
   "contentType": "CONTENT_TYPE",
   "genre": "GENRE",
   "drmProtection": "DRM_PROTECTION",
   "episodeNumber": "EPISODE_NUMBER",
   "season": "SEASON",
   "seriesTitle": "SERIES_TITLE",
   "videoType": "VIDEO_TYPE",
   "customTags": {
       "key1": "VALUE_STRING1",
       "key2": "VALUE_STRING2"
}

if(customPlugin.getRegistrationStatus() === false){
 customPlugin.registerMMSmartStreaming("PLAYER_NAME", "CUSTOMER_ID", "SUBSCRIBER_ID", "DOMAIN_NAME", "SUBSCRIBER_TYPE" , "SUBSCRIBER_TAG");
 customPlugin.reportPlayerInfo("PLAYER_BRAND", "PLAYER_MODEL", "PLAYER_VERSION");
}
 
customPlugin.reportAppInfo("APP_NAME", "APP_VERSION");
customPlugin.setDeviceInfo("DEVICE_ID", "DEVICE_MARKETING_NAME");
customPlugin.reportVideoQuality("VIDEO_QUALITY");

customPlugin.reportPresentationInfo(presentationType, presentationArray);

var isLive = false;    //Set this to true for a live stream or false for a VOD stream
customPlugin.initialize(mmVideoAssetInfo, streamURL, totalDuration, isLive);

Note: Presentation Info API

This API should send all the available video and audio qualities and it requires two parameters: presentationType and presentationArray. Variable presentationType is a Enum which describes whether the data is of Video or Audio.

Presentation Array Structure:

[
    {
        "codec": "avc1.42001e",
        "bandwidth": 493000,
        "width": 224,
        "height": 100 
    },
    {
        "codec": "avc1.640028",
        "bandwidth": 2468000,
        "width": 1680,
        "height": 750 
    }
]

Enum values and their descriptions for the presentationType variable are as below;

Step 3: API to Report Video Progress

This API should be triggered every 1 second. It requires an object as a parameter that contains information like playback position, current bitrate, and resolution in the form of width & height. The same API should be used for content progress reporting and Ad progress reporting.

var progressObject = {
    "playbackPosition": 10, //playback position should be in milliseconds
    "bitrate": 12000,
    "width": 208,
    "height": 100
}
customPlugin.reportTimeUpdate(progressObject);

Step 4: APIs that can be Triggered when Required

Report State:

Trigger this API when a state change occurs in the player. This API requires an Enum value as a parameter that represents the current state of the player or the action that happened to the player.

var state = PLAYERSTATE.PLAYING;
customPlugin.reportStateChange(state);

Enum values that can be sent as a parameter in the reportStateChange API as described below;

Report Ad Data:

Trigger this API to report the Ad data before an Ad break. This API requires a adTimelineArray parameter that should contain all the Ad details of the upcoming Ad break.

If the upcoming Ad break contains 4 Ads then the adTimelineArray should contain all 4 ad details.

var adTimelineArray = [
    {
        "adClient": "mmAds-Nowtilus",
        "adId": "11023407",
        "adDuration": 15000,    // Ad duration should be in milliseconds
        "adPosition": ADPOSITION.MID,
        "adLinear": "linear",
        "adCreativeType": "hls",
        "adSystem": "SMART AdServer",
        "isBumper": false,
        "adTitle": "Washing Machine Ad",
        "adUrl": "adurl.com",
        "adCreativeId": "14738"
    }
];

customPlugin.reportAdTimelineData(adTimelineArray);

Enum values and descriptions for ADPOSITION are mentioned below;

Report Error:

Trigger this API when an error occurs in the player, content, Ad, or application. This API requires three parameters that are error message, error code, and error type.

var errorType = ERRTYPE.FATAL;
customPlugin.reportError("ERROR_MESSAGE", "ERROR_CODE", errorType);

Enum values and their descriptions for the error type variable are as below;

Report Track:

Trigger this API when a track change occurs in Audio, Video, or Subsitle tracks. This API requires two parameters: track type and current track.

Also, trigger this API when the video starts playing to report initial Audio, Video, and Subtitle tracks.

var trackType = TRACK.AUDIO;
customPlugin.reportTrackChange(trackType, "CURRENT_TRACK");

Enum values and their descriptions for the track type variable are as below;

Report Volume:

Trigger this API when a volume change occurs in the player. Send the volume value in percentage as shown below;

customPlugin.reportVolumeChange(76);

Last updated