node-ams-sdk

Client SDK for Azure Media Service

node-ams-sdk

Provides lightweight wrapper around Azure Media Services REST API

//Eventually...
 
npm install --save node-ams-sdk
 

You initialize the service by providing a configuration object

var AzureService  = require('node-ams-sdk')
var serviceConfig = require('../path/to/config') || {your: config}
 
var amsService = new AzureService(serviceConfig)
 

If you already have your ams token, then you can specify it in your config like

{
    access_token: "exampletokengoeshere",
    token_expires: theDateItExpires
}

If you do not have this, then you will need to supply the "client_id" and "client_secrect" in the config. Before you make subsequent requests, you will need to set the access token by calling the method "setToken"

amsService.setToken( function (err) {
    //check for error
    //do other stuff. no response returned.
}

Calling this will set the token as in internal property to be used on subsequent requests.


There are 5 methods that you can call on an assets resource. Internally, they will make the requests to Azure Media Services and return to you the response

Takes an optional query and optional callback

If a callback is provided, it will return an ( err, response ) signature. If no callback is provided, it will return a stream.

Takes a required assetId and an optional query and optional callback.

If a callback is provided, it will return an ( err, response ) signature. If no callback is provided, it will return a stream.

Data is and optional parameter. Asset can be created without data. It will just create an asset of Name=null. The allowable keys are

  • Name
  • AlternateId - String
  • ContentKeys
  • ParentAssets
  • Options
  • StorageAccountName

A callback is required. No streaming out of a create.

Requires an assetId, a data object, and a callback. This operation will preform a MERGE. Any parameter provided will overwrite underlying object.

  • Name
  • AlternateId - String
  • ContentKeys
  • ParentAssets

A callback is required. No streaming out of a create.

Requires an assetId and a callback. No streaming.

Requires an assetId. Callback is optional. Will stream without callback. Will link up the data that is in blob storage to the supplied asset. If it works, this will return a status code of 204 with no data.

Will list the files in an asset storage container. Requires an assetId. Callback is optional. Will stream without callback.

Will list the files in an asset storage container. Requires an assetId. Callback is optional. Will stream without callback.

Will get the file information for the given id. Requires fileId. Callback is optional. Will stream without callback.

Will list all of the files in the container. Pretty nifty. Again, Callback optional, be prepared to handle streams.


Takes an optional callback. Will list all access policies - streaming if no cb.

Requires an assetId, Optional callback. Will list all access policies for a given asset - streaming if no cb.

Requires an accessPolicyId, Optional callback. Will return details about selected access policy - streaming if no cb.

Requires data and callback. Will create a new access policy. Allowed data properties are:

  • Name
  • DurationInMinutes
  • Permissions

Requires accessPolicyId, and callback. Will remove existing access policy.


Takes an optional callback. Will list all locators - streaming if no cb.

Requires an assetId, Optional callback. Will list all locators for a given asset - streaming if no cb.

Requires an locatorId, Optional callback. Will return details about selected locator - streaming if no cb.

Requires data and callback. Will create a new locator. Allowed data properties are:

  • AccessPolicyId
  • AssetId
  • StartTime - (Format: 'MM/DD/YYYY hh:mm:ss A')
  • Type
  • Name
  • ExpirationDateTime - (Format: 'MM/DD/YYYY hh:mm:ss A')

Requires locatorId, data, and callback. Will upate an exisiting locator. Allowed data properties are:

  • StartTime - (Format: 'MM/DD/YYYY hh:mm:ss A')
  • Name
  • ExpirationDateTime - (Format: 'MM/DD/YYYY hh:mm:ss A')

Requires a locatorId and a callback. Will remove selected locator


Will list all of the available media processor ids. You can reset the internal value of MediaProcessorId directly, or via a config to one of the ids returned by this call. This will be your default processor id. Will stream if no callback.


Requires an assetId of the asset to be encoded, an options object, and a callback. Will create an encoding job for given asset. Options are as follows:

  • Name - The name of the job
  • Configuration - String representation of encoding e.g. "H264 Broadband 720p"
  • OutputAssetName - The name of the output asset

if Configuration is 'Thumbnails', these extra parameters are required

  • Value - The timecode of the time the thumbnail is to be taken
  • Type - The type of image for the output. Allowed: "MemoryBMP"; "Bmp"; "Emf"; "Wmf"; "Gif"; "Jpeg"; "Png"; "Tiff"; "Exif"; "Icon"
  • Width - int32 value of the output width
  • Height - int32 value of the height

optional thumbnail arguments

  • Step - A string value that describes the time increments in a video at which a thumbnail will be generated
  • Stop - A string value that describes the end time of the sequence of thumbnails
  • OutputFileName - A string value that can be used for the output blob name - default is the template

if Configuration is 'Azure Media Indexer', these extra parameters are required

  • Title - A descriptive title of the media to be indexed
  • Description - A description of the media to be indexed. This should be as descriptive as possbile and include any difficult words or key words the media may include.
var options = {
  Name:            'Test_1',
  Configuration:   'H264 Broadband 720p',
  OutputAssetName: 'Test_1_Output_1'
}
 
or
 
var options = {
  Name:            'Test_1_Thumb',
  OutputAssetName: 'Test_1_Output_Thumb',
  OutputFIleName:  'Test_Thumb',
  Configuration:   'Thumbnails',
  Value:           '00:00:05',
  Width:           120,
  Height:          120,
  Type:            'Jpeg'
}

Requires an assetId of the asset to be encoded, an options object, and a callback. Will create an encoding job with multiple tasks for given asset. Options are as follows:

  • Name - The name of the job

  • Chained - Boolean true or false. If not provided, defaults to false. Will chain the tasks so they run in the order specified in the Tasks array.

  • Tasks - An array of tasks options - each of with has the following properties:

    • Configuration - String representation of encoding e.g. "H264 Broadband 720p"
    • OutputAssetName - The name of the output asset

    if Configuration is 'Thumbnails', these extra parameters are required

    • Value - The timecode of the time the thumbnail is to be taken
    • Type - The type of image for the output. Allowed: "MemoryBMP"; "Bmp"; "Emf"; "Wmf"; "Gif"; "Jpeg"; "Png"; "Tiff"; "Exif"; "Icon"
    • Width - int32 value of the output width
    • Height - int32 value of the height

    optional thumbnail arguments

    • Step - A string value that describes the time increments in a video at which a thumbnail will be generated
    • Stop - A string value that describes the end time of the sequence of thumbnail
    • OutputFileName - A string value that can be used for the output blob name - default is the template

    if Configuration is 'Azure Media Indexer', these extra parameters are required

    • Title - A descriptive title of the media to be indexed
    • Description - A description of the media to be indexed. This should be as descriptive as possbile and include any difficult words or key words the media may include.
var options = {
 
  Name: 'Test_3',
  Tasks: [{
    Configuration:   'H264 Broadband 720p',
    OutputAssetName: 'Test_3_Output_1',
  },
  {
    Configuration:   'Thumbnails',
    OutputAssetName: 'Test_3_Output_Thumb',
    OutputFileName:  'Test_Thumbnail',
    Value:           '00:00:05',
    Type:            'Jpeg',
    Width:           120,
    Height:          120,
  }]
}

Requires a jobId. Will return all information for a job. Will stream if optional callback is not provided.

Requires a jobId. Will return the status of the job. Will stream if optional callback is not provided.

Requires a jobId. Will return the tasks for the job. Will stream if optional callback is not provided.

Requires a taskId. Will return the task information. Will stream if optional callback is not provided.