Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
mediamachine
Advanced tools
This library will let you use MediaMachine's api to:
$ npm install mediamachine
First import and create a mediamachine client:
import { MediaMachine } from "mediamachine";
const MEDIAMACHINE_API_KEY = "your mediamachine api key here";
const mediaMachine = new MediaMachine(MEDIAMACHINE_API_KEY);
Each type of request (thumbnail()
, transcodeToMp4()
, transcodeToWebm()
and summary()
) creates and returns a Job object that you can use to query the state of that Job.
Input for any of the services can come from any of the following:
fromUrl()
fromS3()
fromGCloud()
fromAzure()
Also, each service type can store the output in any of the following:
toS3()
toGCloud()
toAzure()
POST
to that URL when the output is ready) using toUrl()
Additionally, a request to any service can accept a success and failure endpoint, that will be called with the output of the process once it’s done.
The thumbnail()
method uses a smart algorithm to automatically choose the best frame of a video, and additionally allows you to scale and watermark it.
This method takes a single argument of the following optional inputs:
width
: number representing the desired width of the thumbnail (default: 720 px).watermark
: a Watermark object to use for the image's watermark.successUrl
: a url for MediaMachine to POST to when the thumbnail has been created.failureUrl
: a url for MediaMachine to POST to when the thumbnail could not be created.The simplest version might be:
const job = await mediaMachine.thumbnail()
.fromUrl("https://myserver.example/someVideo.mp4")
.toUrl("https://myserver.example/api/uploadFile");
Here's an example usage that takes a video from Amazon S3 and puts a thumbnail back to Amazon S3.
const job = await mediaMachine.thumbnail({
width: 150,
watermark: mediaMachine.textWatermark("media machine!"),
successUrl: "https://myserver.example/api/mediamachineSuccess",
failureUrl: "https://myserver.example/api/mediamachineFailure",
})
.fromS3(AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET, INPUT_KEY)
.toS3(AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET, OUTPUT_KEY);
Here's an example usage that takes a video from Azure and puts a thumbnail back to Azure with a full watermark configuration:
const watermark = mediaMachine.textWatermark("media machine!!!", {
fontSize: 14,
fontColor: "#ffffff",
opacity: 0.9,
position: "bottomRight",
});
const job = await mediaMachine.thumbnail({
watermark: watermark,
})
.fromAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, INPUT_KEY)
.toAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, OUTPUT_KEY);
The transcodeToMp4()
method transcodes SD/HD/FHD videos from virtually any format to Mp4.
This method takes a single argument of the following optional inputs:
height
: number representing the desired height of the video output.width
: number representing the desired width of the video output.watermark
: a Watermark object to used for the image's watermark.encoder
: "h264", "h265", "vp8", "vp9" (default: "h264")successUrl
: a url for MediaMachine to POST to when the thumbnail has been created.failureUrl
: a url for MediaMachine to POST to when the thumbnail could not be created.The simplest version might be:
const job = await mediaMachine.transcodeToMp4()
.fromUrl("https://myserver.example/someVideo.avi")
.toUrl("https://myserver.example/api/uploadFile");
Here's an example usage that takes a video from Azure and puts an h265 mp4 version of it back to Azure.
const job = await mediaMachine.transcodeToMp4({
width: 150,
height: 150,
encoder: "h265",
successUrl: "https://myserver.example/api/mediamachineSuccess",
failureUrl: "https://myserver.example/api/mediamachineFailure",
})
.fromAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, INPUT_KEY)
.toAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, OUTPUT_KEY);
Here's an example usage that takes a video from Google Cloud and puts an mp4 video back to Google Cloud with a full watermark configuration:
const watermark = mediaMachine.textWatermark("media machine!!!", {
fontSize: 14,
fontColor: "#ffffff",
opacity: 0.9,
position: "bottomRight",
});
const job = await mediaMachine.transcodeToWebm({
watermark: watermark,
})
.fromGCloud(GCLOUD_CREDS, BUCKET, INPUT_KEY)
.toGCloud(GCLOUD_CREDS, BUCKET, OUTPUT_KEY);
The transcodeToWebm()
method transcodes SD/HD/FHD videos from virtually any format to Webm.
This method takes a single argument of the following optional inputs:
height
: number representing the desired height of the video output.width
: number representing the desired width of the video output.watermark
: a Watermark object to used for the image's watermark.encoder
: "vp8", "vp9" (default: "vp8")successUrl
: a url for MediaMachine to POST to when the thumbnail has been created.failureUrl
: a url for MediaMachine to POST to when the thumbnail could not be created.The simplest version might be:
const job = await mediaMachine.transcodeToWebm()
.fromUrl("https://myserver.example/someVideo.avi")
.toUrl("https://myserver.example/api/uploadFile");
Here's an example usage that takes a video from Azure and puts a vp9 webm version of it back to Azure.
const job = await mediaMachine.transcodeToWebm({
width: 150,
height: 150,
encoder: "vp9",
successUrl: "https://myserver.example/api/mediamachineSuccess",
failureUrl: "https://myserver.example/api/mediamachineFailure",
})
.fromAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, INPUT_KEY)
.toAzure(ACCOUNT_KEY, ACCOUNT_NAME, BUCKET, OUTPUT_KEY);
Here's an example usage that takes a video from Google Cloud and puts a webm version back to Google Cloud with a full watermark configuration:
const watermark = mediaMachine.textWatermark("media machine!!!", {
fontSize: 14,
fontColor: "#ffffff",
opacity: 0.9,
position: "bottomRight",
});
const job = await mediaMachine.transcodeToWebm({
watermark: watermark,
})
.fromGCloud(GCLOUD_CREDS, BUCKET, INPUT_KEY)
.toGCloud(GCLOUD_CREDS, BUCKET, OUTPUT_KEY);
The summary()
method creates a shorter summary/preview of the input video in GIF or MP4 format.
Note: For MP4 video summary, the input video should be more than 15 seconds long.
This method takes a single argument of the following optional inputs:
width
: number representing the desired width of the video output.watermark
: a Watermark object to use for the image's watermark.format
: "mp4", "gif" -- the output format you want (default: "gif")removeAudio
: a boolean to indicate whether to remove audio (default: false, applies only to mp4s)successUrl
: a url for MediaMachine to POST to when the thumbnail has been created.failureUrl
: a url for MediaMachine to POST to when the thumbnail could not be created.The simplest version might be:
const job = await mediaMachine.summary()
.fromUrl("https://myserver.example/someVideo.mp4")
.toUrl("https://myserver.example/api/uploadFile");
Here's an example usage that takes a video from Google Cloud and puts a silent summarized mp4 version of it back to Google Cloud.
const job = await mediaMachine.summary({
width: 150,
watermark: mediaMachine.textWatermark("media machine!"),
format: "mp4",
removeAudio: true,
successUrl: "https://myserver.example/api/mediamachineSuccess",
failureUrl: "https://myserver.example/api/mediamachineFailure",
})
.fromGCloud(GCLOUD_CREDS, BUCKET, INPUT_KEY)
.toGCloud(GCLOUD_CREDS, BUCKET, OUTPUT_KEY);
Here's an example usage that takes a video from Amazon S3 and puts a summarized gif back to Amazon S3 with a full watermark configuration:
const watermark = mediaMachine.textWatermark("media machine!!!", {
fontSize: 14,
fontColor: "#ffffff",
opacity: 0.9,
position: "bottomRight",
});
const job = await mediaMachine.summary({
watermark: watermark,
})
.fromS3(AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET, INPUT_KEY)
.toS3(AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET, OUTPUT_KEY);
A Job object is what's ultimately returned from your request. You can query the job's status at any time with the status()
method.
The possible states for the job are:
notStarted
(The job has not been started at all).queued
(The job is waiting to be executed).done
(The job has finished successfully)errored
(The job failed)To get the status you can do:
await job.status();
A watermark is an image that is laid over another image or video, usually to add branding to it.
You can configure watermarking for any/all of your summary(), thumbnail(), transcodeToMp4(), and transcodeToWebm() calls by first creating a watermark, and then supplying it in the optional arguments to summary()
, thumbnail()
, transcodeToWebm()
or transcodeToMp4()
as the watermark
parameter.
There are two types of watermarks:
The textWatermark(text, [options])
method takes a string of text to use as well as an additional argument of the following optional inputs:
fontSize
: the size for the text (a number, default: 12)fontColor
: the color for the text ( default: "#000000")opacity
: number between 0 and 1 representing the desired opacity of the output. 0 is full transparent and 1 is fully opaque (default: 1)position
: "topLeft", "topRight", "bottomLeft", "bottomRight" (default: "bottomRight")The most simple example is probably:
const watermark = mediaMachine.textWatermark("media machine!!!");
Here's a more complex example using all the options:
const watermark = mediaMachine.textWatermark("media machine!!!", {
fontSize: 14,
fontColor: "#ffffff",
opacity: 0.9,
position: "bottomRight",
});
The imageWatermark() method takes a single argument of the following optional inputs:
url
: the url of the image to be useduploaded_image_name
: the name of the uploaded image to be usedwidth
: number representing the desired width of the video outputheight
: number representing the desired height of the video outputopacity
: number between 0 and 1 representing the desired opacity of the output. 0 is full transparent and 1 is fully opaque (default: 1)position
: "topLeft", "topRight", "bottomLeft", "bottomRight" (default: "bottomRight")NB: You must supply uploaded_image_name
or url
, but not both.
Here's a simple example using a url:
const watermark = mediaMachine.imageWatermark({
url: "https://myserver.example/asdf.jpg",
});
Here's another simple example using a named watermark, after you upload one to our servers:
const watermark = mediaMachine.imageWatermark({
uploaded_image_name: "company_watermark",
});
Here's an example with all the options:
const watermark = mediaMachine.imageWatermark({
uploaded_image_name: "company_watermark",
position: "bottomLeft",
height: 40,
width: 90,
opacity: 0.9,
});
FAQs
MediaMachine services client api
The npm package mediamachine receives a total of 139 weekly downloads. As such, mediamachine popularity was classified as not popular.
We found that mediamachine demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.