mediablast

generic processing server

mediablast

Generic processing server built on node-plan.

See a working example of a mediablast server

var http = require('http');
var mediablast = require('mediablast');
 
var app = mediablast({
  settingsFile: 'settings.json'
});
 
app.registerTask('s3.store', require('node-plan-s3-upload'));
app.registerTask('s3.retrieve', require('node-plan-s3-download'));
app.registerTask('audio.waveform', require('node-plan-waveform'));
app.registerTask('audio.transcode', require('node-plan-transcode'));
app.registerTask('meta.callback', require('node-plan-callback'));
 
var server = http.createServer(app);
server.listen(function() {
  console.log("mediablast server online");
});

Currently mediablast only supports one user. By default this user name is admin and the password is 3pTkHwHV. You should change this before you deploy.

For better user account management, see #1.

To submit a job, make a POST request to /. The tasks you have registered dictate what parameters to send with this request. Usually you will want this request to be a multipart file upload.

The request will look something like:

{
  "templateId": "6373af69-367e-48f4-8734-f30cee4f7541"
}

The response will look like:

{
  "id": "20fff6bc-fa45-44c2-a92b-7df597fdb8b1",
  // range: [0, 1]
  "progress": 1,
  // one of ['processing', 'complete']
  "state": "complete",
  // error identifier. If this is truthy, the job completed with an error.
  "error": null,
  "startDate": "2012-08-27T13:41:17.253Z",
  "endDate": "2012-08-27T13:41:22.006Z",
  "exports": {
    "example-1": {
      // Each task has its own documentation which describes how its `exports`
      // object is constructed.
    },
    "example-2": {
      ...
    },
  }
}

Once you have the job id, you can use either the push notification status endpoint or the polling endpoint.

GET /status/:jobId is an EventSource URL which provides push notifications for job status and progress updates. Each message is a JSON encoding of the job. Once the job state is complete, no more events will be sent and the client should close the EventSource.

GET /poll/:jobId returns a pure JSON response instead of Server Sent Events.

GET /status will always return {"success": true}. You may use this endpoint to determine whether the server is online and responding to requests.

Hit /admin/status with your browser to monitor all jobs in the system.

Hit /admin/settings with your browser to edit settings and templates.

Hit /admin/test with your browser to test a template.