Skip to content

Streaming Spec | Indee YourCloud

In reference to the media streaming workflow, the player needs to be initiated with a manifest file that will be the response to the media manifest API call.

Media Manifest API

Request

Endpoint

POST v1/stream/media-manifest

Headers

Header Value
Authorization Amazon Signature

Body

    {
        "video": "deep-space/vid-8y2fohoweicu3",
        "manifest_key": "master.m3u8"
        "source": {
            "region": "us-east-1",
            "bucket": "deep-space-yourcloud-streaming-regional-bucketmedia",
            "access_point": "s3objectlambdaaccess-rr9zpaps1a--ol-s3.s3.us-east-1.amazonaws.com"
        },
        "config": {
            "table_name":"deep-space-yourcloud-streaming-global-TablePlayback-1DOQ4"
        },
        "visible_watermarks": [
            {
                "type": "text",
                "detail": "John Doe",
                "opacity": 60,
                "position": 5
            },
            .
            .
        ],
        "forensic_wmk_details": {
            "secret": "p24ni3rvp2n40pgnvp043940pnv3p0",
            "strength": "medium"
        },
        "stream_protocol": "hls",
        "drm_details": {
            .
            .
            .
        },
        "stream_session_details": {
            "session_key": "ssn-h23bfie490u",
            "expiry": 1723056978
        }
    }

Schema Description

Parameter Description
video S3 key for the location of the video files stored on the streaming bucket. This is the value for base_path passed in the the processing stage.
manifest_key URL path / key for the manifest being requested.
source -> region The region of the S3 streaming bucket.
source -> bucket The name of the S3 streaming bucket.
source -> access_point The endpoint for the Lambda set up on the S3 streaming bucket.
config -> table name The name of the DynamoDB table used to track streaming data.
visible_watermarks -> type Type of visible watermark to be inserted. Currently only text is supported.
visible_watermarks -> detail The content of the visible watermark to be inserted. Expected to be a string for text watermarks.
visible_watermarks -> opacity The opacity of the visible watermark. Range from 0 - 100.
visible_watermarks -> position The position of the watermark on a fifteen point grid. The cells on the grid are numbered from 0 to 14, left to right, top to bottom.
forensic_wmk_details -> secret The unique secret to be inserted into the video as a forensic watermark.
forensic_wmk_details -> strength The strength of the forensic watermark, ranging from 1-5. Higher levels will insert a more robust watermark, at the expense of a reduction in video quality.
stream_protocol The streaming protocol of the requested manifest. Supported values: hls, dash.
drm_details Please see below.
stream_session_details -> session_key The unique identifier for this streaming session.
stream_session_details -> expiry How long this streaming session is valid for, in milliseconds.

DRM Details

The DRM data should be provided for each resolution. Indee supports unique DRM keys for each resolution. A sample of the multi-key DRM data can be found below.

{
  "360": {
    "widevine_and_playready_values": {
      "ContentID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "ServerURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/?specConform=true",
      "LAURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx",
      "KeyHEX": "FEFA498EF873B2BCBEA608ED4A12C978",
      "KeyIDHEX": "E1F7EC878BDD3327A332B98B088E2915",
      "PSSH": "AAAAmnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHoSEOH37IeL3TMnozK5iwiOKRUiYGV5SmhjM05sZEVsa0lqb2lkbWxrTFRBeGFtTnRkMmcyYUdVMWQyRjBiVEV5YzJScVpqazRZM2t5WDE4d01XcGpiWGRxYm5Ka2FHMXhhSFJ4YW5GM09YZzNjek5rWlNKOUjzxombBg=="
    },
    "fairplay_values": {
      "AssetID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "KeyHEX": "851691C7970DCEA8228DC78E6754FB96",
      "KeyID": "E1F7EC878BDD3327A332B98B088E2915",
      "KeyUri": "skd://drmtoday?keyId=e1f7ec878bdd3327a332b98b088e2915"
    }
  },
  "480": {
    "widevine_and_playready_values": {
      "ContentID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "ServerURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/?specConform=true",
      "LAURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx",
      "KeyHEX": "FEFA498EF873B2BCBEA608ED4A12C978",
      "KeyIDHEX": "E1F7EC878BDD3327A332B98B088E2915",
      "PSSH": "AAAAmnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHoSEOH37IeL3TMnozK5iwiOKRUiYGV5SmhjM05sZEVsa0lqb2lkbWxrTFRBeGFtTnRkMmcyYUdVMWQyRjBiVEV5YzJScVpqazRZM2t5WDE4d01XcGpiWGRxYm5Ka2FHMXhhSFJ4YW5GM09YZzNjek5rWlNKOUjzxombBg=="
    },
    "fairplay_values": {
      "AssetID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "KeyHEX": "851691C7970DCEA8228DC78E6754FB96",
      "KeyID": "E1F7EC878BDD3327A332B98B088E2915",
      "KeyUri": "skd://drmtoday?keyId=e1f7ec878bdd3327a332b98b088e2915"
    }
  },
  "720": {
    "widevine_and_playready_values": {
      "ContentID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "ServerURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/?specConform=true",
      "LAURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx",
      "KeyHEX": "FEFA498EF873B2BCBEA608ED4A12C978",
      "KeyIDHEX": "E1F7EC878BDD3327A332B98B088E2915",
      "PSSH": "AAAAmnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHoSEOH37IeL3TMnozK5iwiOKRUiYGV5SmhjM05sZEVsa0lqb2lkbWxrTFRBeGFtTnRkMmcyYUdVMWQyRjBiVEV5YzJScVpqazRZM2t5WDE4d01XcGpiWGRxYm5Ka2FHMXhhSFJ4YW5GM09YZzNjek5rWlNKOUjzxombBg=="
    },
    "fairplay_values": {
      "AssetID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "KeyHEX": "851691C7970DCEA8228DC78E6754FB96",
      "KeyID": "E1F7EC878BDD3327A332B98B088E2915",
      "KeyUri": "skd://drmtoday?keyId=e1f7ec878bdd3327a332b98b088e2915"
    }
  },
  "1080": {
    "widevine_and_playready_values": {
      "ContentID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "ServerURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/?specConform=true",
      "LAURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx",
      "KeyHEX": "39D72C595597349D980AF9F1A84F52F2",
      "KeyIDHEX": "98AFE77E422F3A5E9FF22FE31D0093EE",
      "PSSH": "AAAAmnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHoSEJiv535CLzpen/Iv4x0Ak+4iYGV5SmhjM05sZEVsa0lqb2lkbWxrTFRBeGFtTnRkMmcyYUdVMWQyRjBiVEV5YzJScVpqazRZM2t5WDE4d01XcGpiWGRxYm5Ka2FHMXhhSFJ4YW5GM09YZzNjek5rWlNKOUjzxombBg=="
    },
    "fairplay_values": {
      "AssetID": "vid-01jcmwh6he5watm12sdjf98cy2__01jcmwjnrdhmqhtqjqw9x7s3de",
      "KeyHEX": "084284FA6C580AA3902B83102D1FC004",
      "KeyID": "98AFE77E422F3A5E9FF22FE31D0093EE",
      "KeyUri": "skd://drmtoday?keyId=98afe77e422f3a5e9ff22fe31d0093ee"
    }
  }
}

Response

The response would be an industry standard DASH or HLS specification file. The response type will be XML for the DASH format and will be text/plain for HLS M3U8 format. The response format is determined by the stream_protocol.