PDA

View Full Version : Distributed Network Encoding


Arkay
12th November 2002, 13:13
I just had a thought, and figured I'd share it with the coders out there. Has anyone ever considered a distributed network encoder?

The idea is this:

Set up the DNE (Distributed Network Encoder) with a list of all other machines on the network with say dix, avisynth, virtualdub and a DNE client installed along with cpu capacities of those machines.

1. Generate avs script(s) in Gknot or however you please.
2. Load AVS into DNE job window.
3. Hit Encode jobs.
4. DNE then takes your avs and splits it out to 1 script for each of the machines available on the network, trimmed to suit the encoding speed of each machine based on CPU capacity (so all jobs finish around the same time).
5. These scripts are passed off to DNE clients on the other servers along with the required bitrate and quality settings.
6. The DNE client processes (encodes) the avs with the frames being passed via network from the Server.
7. Each client when finished pipes the resultant avi up to the server (or dumps back to the server network drive).
8. The server assembles the clips into the final avi.

You would eventually hit a limit based on your network speed and passing the frames via TCP/IP may be tricky (might be better to do it through network drives (\\server\file.d2v).

Discussions welcome. How nice would it be to do a 3 hour movie in 30 mins ;) Or a smoothdeinterlace slow encode on 10 machines simultaneously as apposed to one. (That's 48 mins to encode something that would normally take 8 hours!!! If you have access to 10 machines at your office for instance :)

This could be set up relatively easily just with mapped drives and a couple of perl scripts. Be nice if it was a single exe though.

Just a thought.

-Arkay.

Koepi
12th November 2002, 13:47
You forget several points (which were discussed here quite often, try the search function for "distributed encoding" or "network encoding"):

- you'd need to spread the vobs over to all computers. let's say you have an average movie of 4 GB, 10 clients, 40 GB to spread, since you are spreading from a single computer you're limited by bandwidth (e.g. 100mbit): 40 GB /100MBit (max. 7MB/s) = 97mins, 30secs

- you'd need 2 passes for propper quality. Thus you need to assemble the stats data and that takes double the time that you think of.

- You'd need to cut at positions were keyframes would've been inserted, else you waste bitrate.

- the encoding speed depends on the amount of motion (search) in actual codecs, how to determine that for propper splitting portions to faster/slower computers?

- The transfer back takes some time, too.

- The audio encoding takes time, too.

- If someone decides to use one of those computers the encoding rate will drop. Maybe he even crashes the machine. What now?

....

Plenty of unresolved issues, the time saved (I guess max. 30-50% if you're lucky) isn't worth these efforts IMO.

Just some thoughts.

Regards
Koepi

Arkay
12th November 2002, 14:00
Heh... Nice points :)

I didn't even think to do a search.. DOH...

"Arkay goes back to reread the search button guide...." :)

-Arkay.