Skip to content

Conversation

@github-actions
Copy link
Contributor

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

@github-actions github-actions bot added the feature New feature or request label Feb 10, 2023
@github-actions github-actions bot added this to the Improve encoding performance milestone Feb 10, 2023
@in03 in03 changed the title 'Split and Stitch' Encoding feat: 'Split and Stitch' Encoding Feb 10, 2023
in03 added 6 commits February 20, 2023 15:11
Good
- We've got segment encoding working. Hurray!
- New user configurable settings for split and stitch, segment size.

Not Yet Good
- Concatenation is broken, only concats first segment.
- No output subfolder to keep things tidy
- Progress reporting is broken (expected)
- No tidy up afterwards
- No handling for jobs smaller than segment size
- Celery chord is not durable - fails if a segment fails
- Existing segments are not handled, just overwritten
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

'Split and Stitch' Encoding

2 participants