This project aims to implement a transcoding cloud written in node.js. The reason for such implementation is the small cpu usage footprint of the node.js and it's low resource consuming.
This project depends heavily on nodejs project, and for being able to run it, you will need the following nodejs modules:
- xmlhttprequest ( tested with 1.6.0 )
- websocket ( tested with 1.0.8 )
- remove ( tested with 0.1.5 )
- mysql ( tested with 2.0.0-alpha-9 )
- mmmagic ( tested with 0.3.4 )
- mkdirp ( tested with 0.3.5 )
- gm ( tested with 1.13.3 )
- base64 ( tested with 2.1.0 )
- nodemailer ( tested with 0.5.5 )
- adm-zip ( only for the worker, tested with 0.4.3 )
The api component is the frontend and the master controller of the cloud. It's task is to receive files from clients, and distribute them across cloud storage nodes, handle transcoding tasks, create back-notifications to upload clients, etc.
In a typical environment, only a single api node is required.
The software requirements for the api node are the following:
- nodejs ( tested with v0.10.3 )
- mysql ( tested with v5.5 )
- ffmpeg ( built with all formats support )
- sendmail
Worker nodes are servers that transcode uploaded files on the api server in different file versions, and store them to the storage servers.
The software requirements for the worker node are the following:
- nodejs ( tested with v0.10.3 )
- graphicsmagick ( tested with v.1.3.12-1.1build1 on ubuntu 12.04 )
- ffmpeg ( built with all formats support )
- sendmail
Storage nodes are servers in the cloud that are storing and serving uploaded files on the API and their transcoded versions if needed.
The software requirements for a storage node are the following:
- nodejs ( tested with v0.10.3 )
- nginx ( compiled with mp4 module )
- sendmail
The following connectivity to the could is supported:
- PHP driver
- JavaScript driver ( for browser )
- TODO: JavaScript driver ( for nodejs )