Original issue description
I've been messing around with running separate FFmpeg processes on segments of the same video file.
There are a bunch of benefits here:
- Encoding speed is only limited by chunk-duration and worker-pool size
- Greater resource utilisation
- Chunked job structure lends to more reliable progress-metrics
---
I've got this working reliably locally - with no performance gains obviously since I'm running all the FFmpeg processes on the same machine.
To get this working here we'll need a few things:
- [ ] ~~A new task to parse the original job into segments~~
- [ ] The encoding task's group will become a chord so we can join the segments after encode
- [ ] ~~Job must be pickled, not sent as JSON. We need to transport Resolve's PyRemoteObj MediaPoolItem as task results~~
- [ ] Additional cleanup required for temporary files (original segments, temp folder structure, etc.)
Original issue description
I've been messing around with running separate FFmpeg processes on segments of the same video file. There are a bunch of benefits here: - Encoding speed is only limited by chunk-duration and worker-pool size - Greater resource utilisation - Chunked job structure lends to more reliable progress-metrics --- I've got this working reliably locally - with no performance gains obviously since I'm running all the FFmpeg processes on the same machine. To get this working here we'll need a few things: - [ ] ~~A new task to parse the original job into segments~~ - [ ] The encoding task's group will become a chord so we can join the segments after encode - [ ] ~~Job must be pickled, not sent as JSON. We need to transport Resolve's PyRemoteObj MediaPoolItem as task results~~ - [ ] Additional cleanup required for temporary files (original segments, temp folder structure, etc.)closes #9