Monday, May 17, 2010

Video Editing

Recently I have been doing a lot of video editing at the local Community Cable Access. They have a bunch of computers, some high end Windows Boxes, others High end Macs. Frequently one or more of these machines are tied up doing rendering while other people would like to be using them, and people using other machines are contemplating what to do next, utilizing very little of the available power of the machine they are monopolizing. Every year or two they need to spend their scares funds to buy updates to the expensive video editing software and faster hardware required to run the new software. There should be a better way!

There are a few constraints that imposed this situation on them. Most of the users already know how to use either Windows of Mac OS X. They need to learn a very complex piece of software, but they do not want to have to learn a new OS at the same time. The people running the operation are technically savvy, but they are not computer geeks. Given these constraints I do not think any of the existing free video editing software are better able to fill their needs than what they have (Final Cup Pro and Adobe Premiere Pro)

In the ideal world, I think what they really need is a video editing system that would allow the user to sit in front of an inexpensive computer that they are familiar with while all the work is done on a central server that can give each task the computing resources it requires and make resources that task is not using available to another tasks and allow big rendering jobs to be batch scheduled to run at low usage periods.

What is needed is a free video editing system that uses a client server model. Thin client front ends can run on Windows or Macs and connect to a server running on a cluster of *NIX systems. The client system would need to be able to handle streaming video, but it would not need to be top of the line powerhouse machines. The server would not require expensive video systems.

The server software should run on either Linux or some flavor of BSD I would probably favor a Beowulf cluster running DragonFly BSD, but I'm open to other suggestions. It would not need to be portable since it would probably be running on dedicated hardware. It should probably be written in C++ or Cilk++ , using MPI. It might be a good idea to use Gstreamer. It would be a good idea to make it a minimalist core that supports plug-ins it should be possible to let the plug-ins be written in Python. It should also support the ability to execute batch scripts, most likely also in Python. I selected Python because it seems to already be well established in the entertainment industry, I'm open to other suggestions.

The clients should be native applications on the chosen platform, although it might not be a bad idea to also have a Java client for people who want to use platforms without a native client. Third party client development should probably be encouraged.

This is too big a project for me to attempt on my own, but if there are others interested in working with me on it I think it would be worth working on.

Labels: ,