Closed ekimekim closed 1 month ago
I'd rather not leave this sitting on top of master while other changes go in, so I'll just merge it now. I tested this when I first implemented it and it works. If we hit any problems it can be avoided by simply not doing any transitions.
This PR has quite a few changes to how cutting is done, in support of two new features:
This required rewriting ffmpeg handling considerably. In the process I was able to build slightly higher level abstractions around calling ffmpeg which I think is a win overall. The simple cut functions (eg. to build a waveform or extract a frame) are considerably easier.
It may be best to review this commit by commit - the first few commits are setting up the abstractions I then use for rewriting the fast and full cuts.
We support all transitions built into the
xfade
filter in ffmpeg, including basics likefade
but also many kinds of wipe. We also have two custom wipes, a star wipe and a clock wipe.Audio is cross-faded over the same time period as the video transition - we may revisit this in the future but this was the simplest option.
The cutter needed almost no changes to pass in the transitions correctly. The restreamer learned a new option to the
cut
endpoint to also take a number of transitions.