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

####listAssets([query],[cb])

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.

####getAsset(assetId, [query],[cb])

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.

####createAsset([data], cb)

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.

####updateAsset(assetId, data, cb)

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.

####removeAsset(assetId, cb)

Requires an assetId and a callback. No streaming.

####getAssetMetadata(assetId, [cb])

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.

####listAssetFiles(assetId, [cb])

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

####listAssetFiles(assetId, [cb])

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

####getFile(fileId, [cb])

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

####listFiles([cb])

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


####listAccessPolicies([cb])

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

####listAssetAccessPolicies(assetId, [cb])

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

####getAccessPolicy(accessPolicyId, [cb])

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

####createAccessPolicy(data, cb)

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

  • Name
  • DurationInMinutes
  • Permissions

####removeAccessPolicy(accessPolicyId, cb)

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


####listLocators([cb])

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

####listAssetLocators(assetId, [cb])

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

####getLocator(locatorId, [cb])

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

####createLocator(data, 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')

####updateLocator(locatorId, data, cb)

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')

####removeLocator(locatorId, cb)

Requires a locatorId and a callback. Will remove selected locator


####listMediaProcessors(cb)

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.


####createEncodingJob(assetId, options, cb)

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'
}

####createMultiTaskJob(assetId, options, cb)

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,
  }]
}

####getJob(jobId, [cb])

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

####getJobStatus(jobId, [cb])

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

####getJobTasks(jobId, [cb])

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

####getTaskOutput(taskId, [cb])

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