docmattman
10th August 2012, 07:40
I'm building a custom render farm system. The basic idea is that it will be a collection of machines that can take audio/video and distribute the encoding across the machines. I know this has been done already. However, I've investigated several other systems. I'm not interested in any commercial software/systems, and the free ones that I've found leave a lot to be desired. Anyway, if I can get it to a point that I'm happy with, I'd love to release it as an open source system and maybe even get some other people involved to help with it (since many other folks on here know a LOT more than I do about media encoding).
I have the system started already. I've setup some virtual machines locally to use as testing platforms. So far, they all run Ubuntu Server 64bit using FFMPEG as the main encoding system. I have one machine setup as the "brain", which handles all incoming requests, then stores them in a queue and distributes the jobs out to the "worker nodes". The brain machine doesn't ever do any of the media encoding, it's just there to do all the intelligent logic and queueing while the "dumb" workers do all the encoding work and nothing else.
I've got the basics in place already. The brain machine can accept incoming jobs and distribute them out to all available machines. It's pretty neat, I just finished throwing 150 jobs at it and they all went through without any hiccups.
A few caveats... I'm a Windows user. My experience with Linux systems isn't super extensive. I've just barely been able to accomplish the start of this system after many hours of researching lots of different things. Also, I'm a web programmer mainly, so much of the code written for this system is done in PHP. The brain machine is setup as a LAMP machine and all data is stored in a MySQL database. Since I'm mostly a web programming, I have built a web "monitor" for the system. It list all the jobs from the queue and updates their progress in realtime using AJAX commands to query the brain database.
If anyone is interested in getting on board and building this into something better than it is, let me know. I'd love to have some help with this, as lots of it is outside my realm of expertise. The main issue that I see for bringing on help right now is that I have no idea how to package this system up into an installable product. The best I can do for right now is upload my virtual machine hard disks to one of my web sites and have helpers grab it that way. Any interested helpers would need to download two VirtualBox hard drives (one for the brain and the other for the worker machines). The drive images would probably be somewhere around 2-3gigs each.
Here are a couple of the main goals I would love this system to accomplish that I haven't been able to do yet.
1. Be platform independent. It would be great to have installers for Windows, Mac, and Linux machines so it can run on any hardware.
2. Be able to split up large media files and distribute pieces of it to multiple worker machines for parallel encoding of a single file, then join all the pieces back together after all then chunks are encoded separately.
3. Get a lot more advanced and efficient with FFMPEG commands and options. So far, I've just been doing basic H264 encoding jobs that are suitable for web playback. However, I'm no expert in all the options available to optimize encodings, so I'd need assistance there.
4. Release the system as free open source to invite more contributers and users. I spent a lot of time looking for a suitable solution to my needs and it would be nice to provide that solution as a free product to help others too.
5. Host it on GitHub for easier source management and contributions.
There are probably several more goals that I could think of, but this is getting too long already. Anyway, if anyone is interested in possibly joining my effort here you are more than welcome. I've got a good start already but it's still got a long way to go. Also, if people are interested, maybe I'll create a screencast video of the system in action. Let me know if anyone is interested...
I have the system started already. I've setup some virtual machines locally to use as testing platforms. So far, they all run Ubuntu Server 64bit using FFMPEG as the main encoding system. I have one machine setup as the "brain", which handles all incoming requests, then stores them in a queue and distributes the jobs out to the "worker nodes". The brain machine doesn't ever do any of the media encoding, it's just there to do all the intelligent logic and queueing while the "dumb" workers do all the encoding work and nothing else.
I've got the basics in place already. The brain machine can accept incoming jobs and distribute them out to all available machines. It's pretty neat, I just finished throwing 150 jobs at it and they all went through without any hiccups.
A few caveats... I'm a Windows user. My experience with Linux systems isn't super extensive. I've just barely been able to accomplish the start of this system after many hours of researching lots of different things. Also, I'm a web programmer mainly, so much of the code written for this system is done in PHP. The brain machine is setup as a LAMP machine and all data is stored in a MySQL database. Since I'm mostly a web programming, I have built a web "monitor" for the system. It list all the jobs from the queue and updates their progress in realtime using AJAX commands to query the brain database.
If anyone is interested in getting on board and building this into something better than it is, let me know. I'd love to have some help with this, as lots of it is outside my realm of expertise. The main issue that I see for bringing on help right now is that I have no idea how to package this system up into an installable product. The best I can do for right now is upload my virtual machine hard disks to one of my web sites and have helpers grab it that way. Any interested helpers would need to download two VirtualBox hard drives (one for the brain and the other for the worker machines). The drive images would probably be somewhere around 2-3gigs each.
Here are a couple of the main goals I would love this system to accomplish that I haven't been able to do yet.
1. Be platform independent. It would be great to have installers for Windows, Mac, and Linux machines so it can run on any hardware.
2. Be able to split up large media files and distribute pieces of it to multiple worker machines for parallel encoding of a single file, then join all the pieces back together after all then chunks are encoded separately.
3. Get a lot more advanced and efficient with FFMPEG commands and options. So far, I've just been doing basic H264 encoding jobs that are suitable for web playback. However, I'm no expert in all the options available to optimize encodings, so I'd need assistance there.
4. Release the system as free open source to invite more contributers and users. I spent a lot of time looking for a suitable solution to my needs and it would be nice to provide that solution as a free product to help others too.
5. Host it on GitHub for easier source management and contributions.
There are probably several more goals that I could think of, but this is getting too long already. Anyway, if anyone is interested in possibly joining my effort here you are more than welcome. I've got a good start already but it's still got a long way to go. Also, if people are interested, maybe I'll create a screencast video of the system in action. Let me know if anyone is interested...