Right I am spending day and night on the implementation of the transcoding farm (multiple computer transcoding). As the initial goal is to improve HDTV transcoding speed effectively, I started from implementing the farm for x264. The MiniWeb project which I registered on SF.net in 2004 became active again this time as it will act a quite important role in the new transcoding system.
The idea is straight-forward. Assuming there are 3 computers in the LAN. PC1 acts like a controller and PC2 and PC3 work as agents. Both controller and agent have MiniWeb built in. For controller, MiniWeb is for collecting encoded data from agents as well as serving original file for agents. For agent, MiniWeb is for receiving and responding to controller commands. Now a huge 1080i HDTV file is to be transcoded. PC1 connects to PC2 and PC3 telling them they need to transcode part of a file. It will serve the file with MiniWeb through HTTP protcol. On getting the command, PC2 and PC3 start to process the file via HTTP from different given positions. During the procedure, their output will be posted back via HTTP to PC1. PC1 is also processing part of the whole file. After the 3 parts are transcoded, they are joined on PC1. PC2 and PC3 don’t need to have any temporary storage and all they need to have is a fast CPU.
Up to now I have finished following tasks:
- add file uploading feature to MiniWeb
- patch x264 to give it the ability to push data to web server instead of writing to local file
- implementing MediaCoder agent (a CLI program, more like a standalone web server which can respond to HTTP requests and doing transcoding)
- add controller features to current MediaCoder so that it can send commands, serve streams and collect encoded data.
A usable prototype will come out by the end of this year. Please stay tuned.