npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

azure-media-sdk

v0.0.1

Published

Client SDK for Azure Media Service

Downloads

10

Readme

ams-sdk

Provides lightweight wrapper around Azure Media Services REST API

Usage

npm install --save ams-sdk

You initialize the service by providing a configuration object

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

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.

Azure Media Services Resources Provided

Assets


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.

Access Policies


####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.

Locators


####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

Media Processors


####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.

Encoding Job


####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.
Example
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.
Example
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.