> For the complete documentation index, see [llms.txt](https://docs.mediamelon.com/mediamelon/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mediamelon.com/mediamelon/smartsight-player-sdk-integration/web/chromecast-player.md).

# ChromeCast Player

### **Step 1: Add** the MediaMelonPlayer SDK <a href="#step-1-add-mediamelon-smartstreaming-sdk-hardbreak" id="step-1-add-mediamelon-smartstreaming-sdk-hardbreak"></a>

Add the MediaMelon SDK in the receivers application html file as shown in the below code snippet.&#x20;

```javascript
<script src="//www.gstatic.com/cast/sdk/libs/devtools/debug_layer/caf_receiver_logger.js"></script>

//MediaMelon SDK Integration Start
<script src="https://PATH_TO_MEDIAMELON_PLAYER_SDK/mmsmartstreaming_chromecastplayer.min.js"></script>
//MediaMelon SDK Integration Stop

<script src="js/receiver.js" type="module"></script>
```

### **Step 2: Register and Initialize** the MediaMelon Player SDK <a href="#step-2-register-and-initialize-mediamelon-sdk" id="step-2-register-and-initialize-mediamelon-sdk"></a>

{% hint style="info" %}
\<customer\_id> is your MediaMelon-assigned Customer ID. If you do not know your Customer ID contact MediaMelon at [support@mediamelon.com](http://40mediamelon.com/)
{% endhint %}

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

```javascript
//MediaMelon SDK Integration Start
import { CastRecvAdapter } from './mmsmartstreaming_chromecastplayer.min.js';
//MediaMelon SDK Integration Stop
.
.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

//MediaMelon SDK Integration Start
var castMM = new CastRecvAdapter();
if (castMM.getRegistrationStatus() === false) {
  castMM.registerMMSmartStreaming("PLAYER_NAME", "CUSTOMER_ID", "SUBSCRIBER_ID", "DOMAIN_NAME", "SUBSCRIBER_TYPE");
  castMM.reportPlayerInfo("PLAYER_BRAND", "PLAYER_MODEL", "PLAYER_VERSION");
}
castMM.initialize(playerManager);
//MediaMelon SDK Integration Stop
```

### Step 3: Adding Asset Information or Custom MetaData

Sender application has to set the a extra "mmVideoAssetInfo" object in the chrome.cast.media.MediaInfo while sending chrome.cast.media.LoadRequest() as shown in below code snippet.

```javascript
    let mediaInfo = new chrome.cast.media.MediaInfo(MEDIA_SOURCE_ROOT + this.mediaContents[mediaIndex]['contentUrl'], this.mediaContents[mediaIndex]['contentType']);
    mediaInfo.streamType = chrome.cast.media.StreamType.BUFFERED;
    mediaInfo.metadata = new chrome.cast.media.TvShowMediaMetadata();
    mediaInfo.metadata.title = this.mediaContents[mediaIndex]['title'];
    mediaInfo.metadata.subtitle = this.mediaContents[mediaIndex]['subtitle'];
    mediaInfo.metadata.images = [{
      'url': MEDIA_SOURCE_ROOT + this.mediaContents[mediaIndex]['thumb']
    }];

    //MediaMelon SDK Integration Start
    mediaInfo.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"
        }
    };
    //MediaMelon SDK Integration Stop

    let request = new chrome.cast.media.LoadRequest(mediaInfo);
```

| Variable         | Description                                                                                                                                                                          |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| PLAYER\_NAME     | String containing the Player Name                                                                                                                                                    |
| CUSTOMER\_ID     | String containing your MediaMelon-assigned Customer ID.                                                                                                                              |
| SUBSCRIBER\_ID   | String containing your Subscriber’s ID. If you do not use subscriber IDs, enter null                                                                                                 |
| DOMAIN\_NAME     | String containing your section of your subscriber or assets. (Optional)                                                                                                              |
| SUBSCRIBER\_TYPE | String containing the Subscriber Type (e.g. “Free”, “Paid”). If you do not use subscriber types, enter null                                                                          |
| SUBSCRIBER\_TAG  | String containing an additional subscriber-specific information. This is sent in clear (not hashed) to SmartSight and it is advised to not send sensitive information in this field. |
| ASSET\_ID        | String containing Asset Id.                                                                                                                                                          |
| ASSET\_NAME      | String containing Asset Name.                                                                                                                                                        |
| VIDEO\_ID        | String containing your video’s ID. If you do not use videos IDs, enter null.                                                                                                         |
| CONTENT\_TYPE    | String containing type of the Content. For example - "Movie", "Special", "Clip", "Scene Epis Lifts".                                                                                 |
| GENRE            | String containing Genre of the content. For example - "Comedy", "Horror".                                                                                                            |
| DRM\_PROTECTION  | Widevine, Fairplay, Playready etc. Unknown means content is protected, but protection type is unknown. For clear contents, do not set this field                                     |
| EPISODE\_NUMBER  | String containing sequence number of the Episode.                                                                                                                                    |
| SEASON           | String containing the Season. For example - "Season1".                                                                                                                               |
| SERIES\_TITLE    | String containing Title of the Series.                                                                                                                                               |
| VIDEO\_TYPE      | String containing Video Type. For example - "LIVE", "VOD".                                                                                                                           |
| CUSTOM\_TAGS     | Extra custom metadata can be added here if required. If extra metadata is not required, enter null.                                                                                  |
| PLAYER\_BRAND    | String containing Player Brand                                                                                                                                                       |
| PLAYER\_MODEL    | String containing Player Model. For example - This could be a variant of player. Say name of third party player used by organisation. Or any human readable name of the player.      |
| PLAYER\_VERSION  | String containing Player Version                                                                                                                                                     |
